defaults: &defaults
  docker:
    - image: circleci/node:16
  working_directory: /home/circleci/spr

version: 2
jobs:
  install:
    <<: *defaults
    steps:
      - checkout
      - restore_cache:
          keys:
            - v1-dependencies-{{ checksum "package-lock.json" }}
      - run:
          name: Install
          command: npm ci
      - save_cache:
          paths:
            - node_modules
          key: v1-dependencies-{{ checksum "package-lock.json" }}
      - save_cache:
          paths:
            - ~/spr
          key: v1-repo-{{ .Revision }}
  release:
    <<: *defaults
    steps:
      - restore_cache:
          keys:
            - v1-repo-{{ .Revision }}
      - run:
          name: release
          command: npx semantic-release
  pre-release:
    <<: *defaults
    steps:
      - restore_cache:
          keys:
            - v1-repo-{{ .Revision }}
      - run:
          name: pre-release
          command: ./cli.js --release-pr
      - save_cache:
          paths:
            - ~/spr/package.json
          key: v1-pkg-{{ .Revision }}

workflows:
  version: 2
  test-and-publish:
    jobs:
      - install
      - release:
          requires:
            - install
          filters:
            branches:
              only: main
      - pre-release:
          requires:
            - install
          filters:
            branches:
              ignore: main
