version: 2

defaults: &defaults
  working_directory: ~/working_directory
  timezone: Europe/London
  docker:
    - image: circleci/node:8.9

jobs:
  install:
    <<: *defaults
    steps:
        - checkout
        - run:
            name: Install Dependencies
            command: npm i
        - run:
            name: Install package dependencies
            command: npm run bootstrap
        - persist_to_workspace:
            root: ~/working_directory
            paths: ./**

  test:
      <<: *defaults
      steps:
        - attach_workspace:
            at: ~/working_directory
        - run:
            name: Running tests
            command: npm test

  deploy:
    <<: *defaults
    steps:
      - attach_workspace:
          at: ~/working_directory
      - run:
          name: Deploy to S3
          command: cd ./packages/shared-components; npm run deploy

  storybook:
    <<: *defaults
    steps:
      - attach_workspace:
          at: ~/working_directory
      - add_ssh_keys:
          fingerprints:
            - "ec:5e:b4:b9:a1:23:38:bd:ee:4f:76:62:c1:d3:ba:00"
      - run:
          name: Auth on github
          command: ssh -T -o StrictHostKeyChecking=no git@github.com || true
      - run:
          name: Create storybook documentation
          command: cd ./packages/shared-components; npm run build:storybook
      - run:
          name: Deploy storybook to github pages
          command: cd ./packages/shared-components; npm run deploy:storybook

workflows:
  version: 2
  build_and_deploy:
    jobs:
      - install
      - test:
          requires:
          - install
      - deploy:
          requires:
          - install
          - test
          filters:
            branches:
              only: staging
      - storybook:
          requires:
          - install
          - test
          filters:
            branches:
              only: master

