version: 2

defaults: &defaults
  docker:
    - image: circleci/node:10
  working_directory: ~/parse-bearer-token

restore_dependency_cache: &restore_dependency_cache
  restore_cache:
    keys:
      - v1-npm-cache-{{ checksum "package.json" }}
      - v1-npm-cache-

jobs:
  dependencies:
    <<: *defaults
    steps:
      - checkout
      - <<: *restore_dependency_cache
      - run: npm install
      - save_cache:
          key: v1-npm-cache-{{ checksum "package.json" }}
          paths:
            - node_modules
  tests:
    <<: *defaults
    steps:
      - checkout
      - <<: *restore_dependency_cache
      - run: npm run lint
      - run: npm run build # smoke test
      - run: npm run test

  release:
    <<: *defaults
    steps:
      - checkout
      - <<: *restore_dependency_cache
      - run: rm -rf dist
      - run: npm run build
      - run: npm config set "//registry.npmjs.org/:_authToken" $NPM_AUTH
      - run: npm publish

workflows:
  version: 2
  build:
    jobs:
      - dependencies
      - tests:
          requires:
            - dependencies
      - release:
          requires:
            - dependencies
            - tests
          filters:
            branches:
              ignore: /.*/
            tags:
              only: /^v?[0-9]+(\.[0-9]+)*(-.+)?/
