version: 2.1

orbs:
  node: circleci/node@2.1.0

jobs:
  install-npm-dependencies:
    executor: node/default
    steps:
      - checkout
      - node/install-packages
      - persist_to_workspace:
          root: ~/project
          paths:
            - node_modules
  lint:
    executor: node/default
    steps:
      - checkout
      - attach_workspace:
          at: ~/project
      - run:
          name: lint
          command: npm run lint
  test:
    executor: node/default
    steps:
      - checkout
      - attach_workspace:
          at: ~/project
      - run:
          name: test
          command: npm run test
  release:
    executor: node/default
    steps:
      - checkout
      - attach_workspace:
          at: ~/project
      - run:
          name: release
          command: npm run semantic-release || true

workflows:
  develop:
    jobs:
      - install-npm-dependencies:
          filters:
            branches:
              only: develop
      - lint:
          requires:
            - install-npm-dependencies
      - test:
          requires:
            - install-npm-dependencies
  master:
    jobs:
      - install-npm-dependencies:
          filters:
            branches:
              only: master
      - lint:
          requires:
            - install-npm-dependencies
      - test:
          requires:
            - install-npm-dependencies
      - release:
          requires:
            - lint
            - test