version: 2
jobs:
  build:
    docker:
      - image: node:16.13.1-buster-slim
    working_directory: /var/opt/app
    steps:
      - checkout
      - run:
          name: git
          command: |
            apt-get update
            apt-get install -y git
      - restore_cache:
          name: Restoring cache - node_modules
          keys:
            - node_modules-{{ arch }}-node16.13.1-{{ checksum "package.json" }}-{{ checksum "yarn.lock" }}
      - run:
          name: Install packages
          command: yarn install
      - save_cache:
          name: Saving cache - node_modules
          key: node_modules-{{ arch }}-node16.13.1-{{ checksum "package.json" }}-{{ checksum "yarn.lock" }}
          paths:
            - node_modules
      - run:
          name: spec
          command: yarn run spec
      - run:
          name: compile main
          command: yarn run pack:main
      - run:
          name: compile renderer
          command: yarn run pack:renderer

  lint:
    docker:
      - image: node:16.13.1-buster-slim
    working_directory: /var/opt/app
    steps:
      - checkout
      - run:
          name: git
          command: |
            apt-get update
            apt-get install -y git
      - restore_cache:
          name: Restoring cache - node_modules
          keys:
            - node_modules-{{ arch }}-node16.13.1-{{ checksum "package.json" }}-{{ checksum "yarn.lock" }}
      - run:
          name: Install packages
          command: yarn install
      - save_cache:
          name: Saving cache - node_modules
          key: node_modules-{{ arch }}-node16.13.1-{{ checksum "package.json" }}-{{ checksum "yarn.lock" }}
          paths:
            - node_modules
      - run:
          name: typecheck
          command: yarn run typecheck
      - run:
          name: lint
          command: yarn run lint

workflows:
  version: 2
  build_and_deploy:
    jobs:
      - build
      - lint
