version: 2.1

orbs:
  snyk: snyk/snyk@1.4.1

references:
  container: &container
    docker:
      - image: circleci/node:16.13.0-browsers
        environment:
          CHROME_PATH: $(which google-chrome-stable)

  restore_deps: &restore_deps
    restore_cache:
      keys:
        - v2-uswds-dependencies-{{ checksum "package-lock.json" }}

jobs:
  build:
    <<: *container
    steps:
      - checkout
      - run:
          name: Install codeclimate
          command: sudo npm install -g codeclimate-test-reporter
      - restore_cache:
          keys:
            - v2-uswds-dependencies-{{ checksum "package-lock.json" }}
      - run: npm install
      - save_cache:
          paths:
            - node_modules
          key: v2-uswds-dependencies-{{ checksum "package-lock.json" }}
      - snyk/scan:
          organization: uswds
      - run:
          name: Run test
          command: npm run test:ci

  deploy:
    <<: *container
    steps:
      - checkout
      - restore_cache:
          keys:
            - v2-uswds-dependencies-{{ checksum "package-lock.json" }}
      - run: npm install --ignore-scripts
      - run: npm rebuild node-sass
      - run:
          name: Build the USWDS package
          command: npm run release
      - run:
          name: Publish to NPM with `uswds-2.x` tag
          command: |
            npm config set "//registry.npmjs.org/:_authToken=$NPM_TOKEN"
            npm publish --tag uswds-2.x

workflows:
  version: 2
  circle-uswds:
    jobs:
      - build
      - deploy:
          requires:
            - build
          filters:
            branches:
              only: v2-main
