version: 2.1

orbs:
  node: circleci/node@5.1.0

jobs:
  run-test:
    docker:
      - image: cimg/node:lts
    working_directory: ~/repo

    steps:
      - checkout
      - run:
          name: Check changed files or skip
          command: |
            changed_files=$(git diff --name-only $CIRCLE_SHA1...$CIRCLE_BRANCH)

            if [[ -n $(echo "$changed_files" | grep -E "src/|tests/") ]]; then
              echo "Detected changes in src or tests directory. Running tests..."
            else
              echo "No changes in src or tests directory. Skipping tests."
              exit 0
            fi
      - restore_cache:
          name: Restore pnpm Package Cache
          keys:
            - pnpm-packages-{{ checksum "pnpm-lock.yaml" }}
      - run:
          name: Install pnpm package manager
          command: |
            curl -fsSL https://get.pnpm.io/install.sh | SHELL=`which bash` bash -
      - run:
          name: Install Dependencies
          command: |
            pnpm install
      - save_cache:
          name: Save pnpm Package Cache
          key: pnpm-packages-{{ checksum "pnpm-lock.yaml" }}
          paths:
            - node_modules
      - run:
          name: Run tests
          command: npm test

workflows:
  my-workflow:
    jobs:
      - run-test