version: 2
jobs:
  build:
    docker:
      - image: cimg/node:19.0.1
    steps:
      - checkout
      - run: npm ci
      - run: npm run build:prod
  pushS3:
    docker:
      - image: garland/aws-cli-docker
    steps:
      - checkout
      - run: |
          export PACKAGE_VERSION=$(cat package.json \
            | grep version \
            | head -1 \
            | awk -F: '{ print $2 }' \
            | sed 's/[", ]//g'
          )
          echo "Existing version:${PACKAGE_VERSION}"
          S3_ROUTE="s3://assets.woorank.com/kabinet/dist/${PACKAGE_VERSION}"
          echo "Route:${S3_ROUTE}"
          aws s3 sync --acl public-read dist ${S3_ROUTE}
  publishNPM:
    docker:
      - image: cimg/node:19.0.1
    steps:
      - checkout
      - deploy:
          command: |
            export PACKAGE_EXISTS="$(npm -s info @bridgeline-digital/kabinet@$(npm pkg get version --workspaces=false | tr -d \") version || echo "")"
            if [[ ! $PACKAGE_EXISTS ]]; then
              echo "Publishing...";
              npm set //registry.npmjs.org/:_authToken=$NPM_TOKEN;
              npm publish;
            else
              echo "Version already exists: ${PACKAGE_EXISTS}";
              echo "Use semantic versioning: 'npm version major|minor|patch' for publishing to NPM";
            fi
workflows:
  version: 2
  build_pushS3_and_publish:
    jobs:
      - build
      - pushS3:
          requires:
            - build
          filters:
            branches:
              only: main
      - publishNPM:
          requires:
            - build
            - pushS3
          filters:
            branches:
              only: main
