version: 2.1
orbs:
  node: circleci/node@5
aliases:
  - &release-branches
    - develop
    - /^hotfix\//
commands:
  deploy_gh_pages:
    steps:
      - run:
          name: deploy to GH Pages
          command: |
            if [ -n "$GH_PAGES_REPO" ]; then
              export GIT_AUTHOR_EMAIL="$(git log --pretty=format:"%ae" -n1)"
              export GIT_AUTHOR_NAME="$(git log --pretty=format:"%an" -n1)"
              export GIT_COMMITTER_EMAIL="${GIT_AUTHOR_EMAIL}"
              export GIT_COMMITTER_NAME="${GIT_AUTHOR_NAME}"
              npm run deploy -x -r $GH_PAGES_REPO
            fi
jobs:
  build_no_release:
    executor: node/default # defaults to LTS
    steps:
      - checkout
      - node/install-packages
      - run: npm test
      - run: npx commitlint --from=`git merge-base HEAD develop`
      - run: npm run build
      - deploy_gh_pages
  build_and_release:
    executor: node/default # defaults to LTS
    steps:
      - checkout
      - node/install-packages
      - run: npm test
      - run: npx commitlint --from='HEAD~1'
      - run: npm run build
      - deploy_gh_pages
      - run: npx semantic-release
  update_i18n:
    executor: node/default # defaults to LTS
    steps:
      - checkout
      - node/install-packages
      - run: npm run i18n:src && npm run i18n:push
workflows:
  version: 2
  build_no_release:
    jobs:
      - build_no_release:
          filters:
            branches:
              ignore: *release-branches
  build_and_release:
    jobs:
      - build_and_release:
          filters:
            branches:
              only: *release-branches
  update_i18n:
    jobs:
      - update_i18n:
          context: transifex
    triggers:
      - schedule:
          cron: 0 0 * * * # daily at midnight UTC = 7-8pm US Eastern
          filters:
            branches:
              only: develop
