version: 2.1

orbs:
  aws-cli: circleci/aws-cli@3.1.4

parameters:
  run_update_layers:
    default: false
    type: boolean

workflows:
  scheduled-update-layers:
    triggers:
    - schedule:
        cron: "0 0,4,8,12,16,20 * * *"
        filters:
          branches:
            only:
            - main
    jobs:
    - update-layers: {}
  manual-update-layers:
    when: << pipeline.parameters.run_update_layers >>
    jobs:
    - update-layers: {}

jobs:
  update-layers:
    docker:
      - image: cimg/node:18.12
        auth:
          username: lumigo
          password: $DOCKERHUB_PASSWORD
    steps:
      - aws-cli/setup: {}
      - checkout: {}
      - run:
          name: Configure Git
          command: |
            git config --global user.email "no-reply@build.com"
            git config --global user.name "CircleCI"
      - run:
          name: 'Install depedencies for generate-layer-version-files'
          working_directory: scripts/generate-layer-version-files
          command: yarn install
      - run:
          name: 'Generate Node.js layers file'
          working_directory: scripts/generate-layer-version-files
          command: node src/index.js lumigo-node-tracer | tee ../../src/lambda_layers_nodejs.json
      - run:
          name: 'Generate Python layers file'
          working_directory: scripts/generate-layer-version-files
          command: node src/index.js lumigo-python-tracer | tee ../../src/lambda_layers_python.json
      - run:
          name: 'Push commit'
          command: |
            if ! git commit -am "chore(lambda-autotrace): update latest Lambda layers"
            then
              echo "No change in Lambda layers detected"
            fi
      - run:
          name: 'Install depedencies for get-latest-lumigo-autotrace-version'
          working_directory: scripts/get-latest-lumigo-autotrace-version
          command: yarn install
      - run:
          name: 'Update lumigo/lumigo-autotrace image tag'
          working_directory: scripts/get-latest-lumigo-autotrace-version
          command: |
            jq -n -c -j -r --arg latest_tag "$(node src/index.js)" '{image : ("public.ecr.aws/lumigo/lumigo-autotrace:" + $latest_tag)}' | tee ../../src/lumigo_autotrace_image.json

            if ! git commit -am "chore(container-autotrace): update lumigo/lumigo-autotrace container image version" 
            then
              echo "No change in lumigo/lumigo-autotrace container image detected"
            fi
      - run:
          name: Push updates to repo
          command: |
            if [ "$(git rev-parse --verify HEAD)" != "${CIRCLE_SHA1}" ]; then
              git push origin ${CIRCLE_BRANCH}
            else
              echo "No changes in pinned versions detected"
            fi
