# DO NOT EDIT. Generated with:
#
#    devctl@6.17.1
#
name: 'Values and schema'
on:
  pull_request:
    branches:
      - master
      - main
    paths:
      - 'helm/**/values.yaml'         # default helm chart values
      - 'helm/**/values.schema.json'  # schema
      - 'helm/**/ci/ci-values.yaml'   # overrides for CI (can contain required entries)

  push: {}

jobs:
  check:
    name: 'validate values.yaml against values.schema.json'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Install validator
        run: |
          wget -q -O ${HOME}/yajsv https://github.com/neilpa/yajsv/releases/download/v1.4.1/yajsv.linux.amd64
          chmod +x ${HOME}/yajsv

      - name: 'Check if values.yaml is a valid instance of values.schema.json'
        run: |
          for chart_yaml in helm/*/Chart.yaml; do
            helm_dir="${chart_yaml%/Chart.yaml}"

            if [ ! -f ${helm_dir}/values.schema.json ]; then
              echo "Skipping validation for '${helm_dir}' folder, because 'values.schema.json' does not exist..."
              continue
            fi

            values=${helm_dir}/values.yaml
            if [ -f ${helm_dir}/ci/ci-values.yaml ]; then
              # merge ci-values.yaml into values.yaml (providing required values)
              echo -e "\nMerged values:\n=============="
              yq '. *= load("'${helm_dir}'/ci/ci-values.yaml")' ${helm_dir}/values.yaml | tee ${helm_dir}/combined-values.yaml
              echo -e "\n==============\n"
              values=${helm_dir}/combined-values.yaml
            fi

            ${HOME}/yajsv -s ${helm_dir}/values.schema.json ${values}
          done