version: 2.1

commands:
  install_dependencies:
    description: "Installs dependencies and uses CircleCI's cache"
    steps:
      - checkout
      - restore_cache:
          keys:
            - dependencies-{{ checksum "yarn.lock" }}
            - dependencies-
      - run:
          command: |
            yarn install
      - save_cache:
          paths:
            - node_modules
          key: dependencies-{{ checksum "yarn.lock" }}

jobs:
  style:
    docker:
      - image: node:latest
    steps:
      - install_dependencies
      - run:
          name: prettier
          command: |
            yarn prettier --check
      - run:
          name: lint
          command: |
            yarn lint

  dashboard:
    docker:
      - image: node:latest
    steps:
      - install_dependencies
      - run:
          name: typecheck
          command: |
            yarn typecheck
      - run:
          name: test
          command: |
            yarn test --coverage
      - run:
          name: coverage
          command: |
            yarn coverage

workflows:
  version: 2
  dashboard:
    jobs:
      - style
      - dashboard