name: "Collect changes"
description: "Collects and stores changed files/charts"

outputs:
  changesDetected:
    description: "Whether or not changes to charts have been detected"
    value: ${{ steps.filter.outputs.addedOrModified }}
  addedOrModifiedFiles:
    description: "A list of the files changed"
    value: ${{ steps.filter.outputs.addedOrModified_files }}
  addedOrModifiedCharts:
    description: "A list of the charts changed"
    value: ${{ steps.filter-charts.outputs.addedOrModified }}

runs:
  using: "composite"
  steps:
    - name: Collect changed files
      uses: dorny/paths-filter@v2
      id: filter
      with:
        list-files: shell
        filters: |
          addedOrModified:
            - added|modified: 'charts/*/**'

    - name: Collect changed charts
      if: |
        steps.filter.outputs.addedOrModified == 'true'
      id: filter-charts
      shell: bash
      run: |
        CHARTS=()
        PATHS=(${{ steps.filter.outputs.addedOrModified_files }})
        # Get only the chart paths
        for CHARTPATH in "${PATHS[@]}"
        do
          IFS='/' read -r -a path_parts <<< "${CHARTPATH}"
          CHARTS+=("${path_parts[1]}/${path_parts[2]}")
        done

        # Remove duplicates
        CHARTS=( `printf "%s\n" "${CHARTS[@]}" | sort -u` )
        # Set output to changed charts
        printf "::set-output name=addedOrModified::%s\n" "${CHARTS[*]}"