defaults: &defaults
  docker:
    - image: jtredoux/node-aws:latest

version: 2
jobs:
  init:
    <<: *defaults
    steps:
      - run: |
          mkdir -p artifacts
          echo "export WORKFLOW_BUILD_NUM=$CIRCLE_BUILD_NUM" >> artifacts/workflow_env
      - persist_to_workspace:
          root: artifacts
          paths:
            - workflow_env
  devnew:
    <<: *defaults
    steps:
      - checkout
      - attach_workspace:
          at: artifacts
      - run: |
          source artifacts/workflow_env
          cp ./packages/allocation-ui/.env.example .env
          sed -i "s/API_HOST_REPLACE/${API_HOST_DEV}/" .env
          sed -i "s/APP_VERSION_REPLACE/${WORKFLOW_BUILD_NUM}/" .env
          sed -i "s/AUTH0_DOMAIN_REPLACE/${AUTH0_DOMAIN_DEV}/" .env
          sed -i "s/AUTH0_ID_REPLACE/${AUTH0_ID_DEV}/" .env
          sed -i "s/AUTH0_AUDIENCE_REPLACE/${AUTH0_AUDIENCE_DEV}/" .env
          sed -i "s/DISABLE_REDUX_DEVTOOLS_REPLACE/${DISABLE_REDUX_DEVTOOLS_DEV}/" .env
          sed -i "s/DISABLE_REDUX_LOGGER_REPLACE/${DISABLE_REDUX_LOGGER_DEV}/" .env
          sed -i "s/EDQ_TOKEN_REPLACE/${EDQ_TOKEN}/" .env
          sed -i "s/ENV_REPLACE/${ENV_DEV}/" .env
          sed -i "s/GA_ID_REPLACE/${GA_ID_DEV}/" .env
          sed -i "s/GOOGLE_MAPS_API_KEY_REPLACE/${GOOGLE_MAPS_API_KEY_DEV}/" .env
          sed -i "s/HOTJAR_ID_REPLACE/${HOTJAR_ID_DEV}/" .env
          sed -i "s/LOGGLY_KEY_REPLACE/${LOGGLY_KEY}/" .env
          sed -i "s/PUSHER_KEY_REPLACE/${PUSHER_KEY_DEV}/" .env
          sed -i "s/SUPPORT_EMAIL_REPLACE/${SUPPORT_EMAIL}/" .env
          mv .env ./packages/allocation-ui/
      - run: |
          npm install -g npm-cli-login
          NPM_EMAIL=aws-lmlt-dev@lastmilelink.com npm-cli-login
      - run: |
          cd ./packages/allocation-ui && npm install && npm run production:build
      - run: |
          zip -r devnew.zip ./packages/allocation-ui/dist
          mv devnew.zip artifacts/
      - persist_to_workspace:
          root: artifacts
          paths:
            - devnew.zip
  si:
    <<: *defaults
    steps:
      - checkout
      - attach_workspace:
          at: artifacts
      - run: |
          source artifacts/workflow_env
          cp ./packages/allocation-ui/.env.example .env
          sed -i "s/API_HOST_REPLACE/${API_HOST_SI}/" .env
          sed -i "s/APP_VERSION_REPLACE/${WORKFLOW_BUILD_NUM}/" .env
          sed -i "s/AUTH0_DOMAIN_REPLACE/${AUTH0_DOMAIN_SI}/" .env
          sed -i "s/AUTH0_ID_REPLACE/${AUTH0_ID_SI}/" .env
          sed -i "s/AUTH0_AUDIENCE_REPLACE/${AUTH0_AUDIENCE_SI}/" .env
          sed -i "s/DISABLE_REDUX_DEVTOOLS_REPLACE/${DISABLE_REDUX_DEVTOOLS_SI}/" .env
          sed -i "s/DISABLE_REDUX_LOGGER_REPLACE/${DISABLE_REDUX_LOGGER_SI}/" .env
          sed -i "s/EDQ_TOKEN_REPLACE/${EDQ_TOKEN}/" .env
          sed -i "s/ENV_REPLACE/${ENV_SI}/" .env
          sed -i "s/GA_ID_REPLACE/${GA_ID_SI}/" .env
          sed -i "s/GOOGLE_MAPS_API_KEY_REPLACE/${GOOGLE_MAPS_API_KEY_SI}/" .env
          sed -i "s/HOTJAR_ID_REPLACE/${HOTJAR_ID_SI}/" .env
          sed -i "s/LOGGLY_KEY_REPLACE/${LOGGLY_KEY}/" .env
          sed -i "s/PUSHER_KEY_REPLACE/${PUSHER_KEY_DEV}/" .env
          sed -i "s/SUPPORT_EMAIL_REPLACE/${SUPPORT_EMAIL}/" .env
          mv .env ./packages/allocation-ui/
      - run: |
          npm install -g npm-cli-login
          NPM_EMAIL=aws-lmlt-dev@lastmilelink.com npm-cli-login
      - run: |
          cd ./packages/allocation-ui && npm install && npm run production:build
      - run: |
          zip -r si.zip dist
          mv si.zip artifacts/
      - persist_to_workspace:
          root: artifacts
          paths:
            - si.zip
  prod:
    <<: *defaults
    steps:
      - checkout
      - attach_workspace:
          at: artifacts
      - run: |
          source artifacts/workflow_env
          cp ./packages/allocation-ui/.env.example .env
          sed -i "s/API_HOST_REPLACE/${API_HOST_PROD}/" .env
          sed -i "s/APP_VERSION_REPLACE/${WORKFLOW_BUILD_NUM}/" .env
          sed -i "s/AUTH0_DOMAIN_REPLACE/${AUTH0_DOMAIN_PROD}/" .env
          sed -i "s/AUTH0_ID_REPLACE/${AUTH0_ID_PROD}/" .env
          sed -i "s/AUTH0_AUDIENCE_REPLACE/${AUTH0_AUDIENCE_PROD}/" .env
          sed -i "s/DISABLE_REDUX_DEVTOOLS_REPLACE/${DISABLE_REDUX_DEVTOOLS_PROD}/" .env
          sed -i "s/DISABLE_REDUX_LOGGER_REPLACE/${DISABLE_REDUX_LOGGER_PROD}/" .env
          sed -i "s/EDQ_TOKEN_REPLACE/${EDQ_TOKEN}/" .env
          sed -i "s/ENV_REPLACE/${ENV_PROD}/" .env
          sed -i "s/GA_ID_REPLACE/${GA_ID_PROD}/" .env
          sed -i "s/GOOGLE_MAPS_API_KEY_REPLACE/${GOOGLE_MAPS_API_KEY_PROD}/" .env
          sed -i "s/HOTJAR_ID_REPLACE/${HOTJAR_ID_PROD}/" .env
          sed -i "s/LOGGLY_KEY_REPLACE/${LOGGLY_KEY}/" .env
          sed -i "s/PUSHER_KEY_REPLACE/${PUSHER_KEY_DEV}/" .env
          sed -i "s/SUPPORT_EMAIL_REPLACE/${SUPPORT_EMAIL}/" .env
          mv .env ./packages/allocation-ui/
      - run: |
          npm install -g npm-cli-login
          NPM_EMAIL=aws-lmlt-dev@lastmilelink.com npm-cli-login
      - run: |
          cd ./packages/allocation-ui && npm install && npm run production:build
      - run: |
          zip -r prod.zip dist
          mv prod.zip artifacts/
      - persist_to_workspace:
          root: artifacts
          paths:
            - prod.zip
  upload-to-s3:
    <<: *defaults
    steps:
      - attach_workspace:
          at: artifacts
      - run: |
          cd artifacts
          source workflow_env
          zip allocation-ui-0.0.${WORKFLOW_BUILD_NUM}.zip devnew.zip si.zip prod.zip
          aws configure set default.region eu-west-1
          aws s3 cp allocation-ui-0.0.${WORKFLOW_BUILD_NUM}.zip s3://lml-app-versions-eu-west-1/allocation-ui/allocation-ui-0.0.${WORKFLOW_BUILD_NUM}.zip
workflows:
  version: 2
  devnew_si_prod_beta:
    jobs:
      - init:
          filters:
            branches:
              only: master
      - devnew:
          requires:
            - init
      - si:
          requires:
            - init
      - prod:
          requires:
            - init
      - upload-to-s3:
          requires:
            - devnew
            - si
            - prod

