version: 2.1
orbs:
  slack: circleci/slack@3.3.0

jobs:
  release:
    docker:
      - image: circleci/golang:1.9
    steps:
      - checkout
      - run:
          name: "Publish Release on GitHub"
          command: |
            go get github.com/tcnksm/ghr
            VERSION=$(sed -n -e 's/.*version": "\(\([0-9]\.*\)*\)",/\1/p' package.json)
            ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -delete ${VERSION} ./
  publish:
    docker:
      - image: circleci/node:10.15-jessie
    steps:
      - checkout
      - run:
          name: Publish to NPM
          command: |
            npm set //registry.npmjs.org/:_authToken=$NPM_TOKEN
            npm publish
      - slack/status:
          include_visit_job_action: false
          include_job_number_field: false
          success_message: |
            Design system v$(sed -n -e 's/.*version": "\(\([0-9]\.*\)*\)",/\1/p' package.json) was published to npm :)

workflows:
  version: 2
  build-and-deploy:
    jobs:
      - release:
          filters:
            branches:
              only: master
      - publish:
          requires:
            - release
          filters:
            branches:
              only: master
