From 9183b99876c363beb2551ba20b5bc3964d8adc01 Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Sat, 30 Jul 2022 23:40:01 -0600 Subject: [PATCH 01/18] feat: add support for json formatted output. --- action.yml | 5 +++ entrypoint.sh | 102 +++++++++++++++++++++++++++++++++++--------------- 2 files changed, 77 insertions(+), 30 deletions(-) diff --git a/action.yml b/action.yml index f79cb1a32e7..826ac49f451 100644 --- a/action.yml +++ b/action.yml @@ -77,6 +77,10 @@ inputs: default: "false" description: "Output the absolute path to the changed directories instead of the filenames" required: false + json: + description: "Output the changed files in JSON format" + required: false + default: "false" outputs: added_files: @@ -212,6 +216,7 @@ runs: INPUT_OLD_NEW_FILES_SEPARATOR: ${{ inputs.old_new_files_separator }} INPUT_DIFF_RELATIVE: ${{ inputs.diff_relative }} INPUT_DIR_NAMES: ${{ inputs.dir_names }} + INPUT_JSON: ${{ inputs.json }} branding: icon: file-text diff --git a/entrypoint.sh b/entrypoint.sh index 546bd70933e..75c340fd64e 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -82,19 +82,36 @@ echo "::debug::Retrieving changes between $INPUT_PREVIOUS_SHA ($INPUT_TARGET_BRA echo "::debug::Getting diff..." if [[ -z "$INPUT_FILES_PATTERN_FILE" ]]; then - ADDED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - COPIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" C | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" M | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - RENAMED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" R | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - TYPE_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" T | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - UNMERGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" U | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - UNKNOWN=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" X | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - ALL_CHANGED_AND_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "*ACDMRTUX" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - ALL_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - ALL_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - if [[ $INPUT_INCLUDE_ALL_OLD_NEW_RENAMED_FILES == "true" ]]; then - ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | awk -v d="$INPUT_OLD_NEW_FILES_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + if [[ "$INPUT_JSON" == "false" ]]; then + ADDED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + COPIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" C | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" M | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + RENAMED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" R | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + TYPE_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" T | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + UNMERGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" U | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + UNKNOWN=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" X | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + ALL_CHANGED_AND_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "*ACDMRTUX" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + ALL_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + ALL_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + if [[ $INPUT_INCLUDE_ALL_OLD_NEW_RENAMED_FILES == "true" ]]; then + ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | awk -v d="$INPUT_OLD_NEW_FILES_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + fi + else + ADDED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') + COPIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" C | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') + DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') + MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" M | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') + RENAMED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" R | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') + TYPE_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" T | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') + UNMERGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" U | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') + UNKNOWN=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" X | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') + ALL_CHANGED_AND_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "*ACDMRTUX" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') + ALL_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') + ALL_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') + if [[ $INPUT_INCLUDE_ALL_OLD_NEW_RENAMED_FILES == "true" ]]; then + ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') + fi fi else ADDED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | grep -x -E -f "$INPUT_FILES_PATTERN_FILE" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}') @@ -131,7 +148,11 @@ else fi fi - OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + if [[ "$INPUT_JSON" == "false" ]]; then + OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + else + OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | jq -R 'split("|")') + fi if [[ -n "${OTHER_CHANGED}" ]]; then echo "::debug::Non Matching changed files: ${OTHER_CHANGED}" @@ -160,9 +181,13 @@ else fi fi - OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + if [[ "$INPUT_JSON" == "false" ]]; then + OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + else + OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | jq -R 'split("|")') + fi - if [[ -n "${OTHER_MODIFIED}" ]]; then + if [[ -n "${OTHER_MODIFIED}" && "$OTHER_MODIFIED" != "[]" ]]; then echo "::debug::Non Matching modified files: ${OTHER_MODIFIED}" echo "::set-output name=only_modified::false" echo "::set-output name=other_modified_files::$OTHER_MODIFIED" @@ -189,27 +214,44 @@ else fi fi - OTHER_DELETED=$(echo "${OTHER_DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + if [[ "$INPUT_JSON" == "false" ]]; then + OTHER_DELETED=$(echo "${OTHER_DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + else + OTHER_DELETED=$(echo "${OTHER_DELETED}" | jq -R 'split("|")') + fi - if [[ -n "${OTHER_DELETED}" ]]; then + if [[ -n "${OTHER_DELETED}" && "${OTHER_DELETED}" != "[]" ]]; then echo "::debug::Non Matching deleted files: ${OTHER_DELETED}" echo "::set-output name=only_deleted::false" echo "::set-output name=other_deleted_files::$OTHER_DELETED" elif [[ -n "${DELETED}" ]]; then echo "::set-output name=only_deleted::true" fi - - ADDED=$(echo "${ADDED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - COPIED=$(echo "${COPIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - DELETED=$(echo "${DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - MODIFIED=$(echo "${MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - RENAMED=$(echo "${RENAMED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - TYPE_CHANGED=$(echo "${TYPE_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - UNMERGED=$(echo "${UNMERGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - UNKNOWN=$(echo "${UNKNOWN}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - ALL_CHANGED_AND_MODIFIED=$(echo "${ALL_CHANGED_AND_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - ALL_CHANGED=$(echo "${ALL_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') - ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + if [[ "$INPUT_JSON" == "false" ]]; then + ADDED=$(echo "${ADDED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + COPIED=$(echo "${COPIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + DELETED=$(echo "${DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + MODIFIED=$(echo "${MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + RENAMED=$(echo "${RENAMED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + TYPE_CHANGED=$(echo "${TYPE_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + UNMERGED=$(echo "${UNMERGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + UNKNOWN=$(echo "${UNKNOWN}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + ALL_CHANGED_AND_MODIFIED=$(echo "${ALL_CHANGED_AND_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + ALL_CHANGED=$(echo "${ALL_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') + else + ADDED=$(echo "${ADDED}" | jq -R 'split("|")') + COPIED=$(echo "${COPIED}" | jq -R 'split("|")') + DELETED=$(echo "${DELETED}" | jq -R 'split("|")') + MODIFIED=$(echo "${MODIFIED}" | jq -R 'split("|")') + RENAMED=$(echo "${RENAMED}" | jq -R 'split("|")') + TYPE_CHANGED=$(echo "${TYPE_CHANGED}" | jq -R 'split("|")') + UNMERGED=$(echo "${UNMERGED}" | jq -R 'split("|")') + UNKNOWN=$(echo "${UNKNOWN}" | jq -R 'split("|")') + ALL_CHANGED_AND_MODIFIED=$(echo "${ALL_CHANGED_AND_MODIFIED}" | jq -R 'split("|")') + ALL_CHANGED=$(echo "${ALL_CHANGED}" | jq -R 'split("|")') + ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | jq -R 'split("|")') + fi fi echo "::debug::Added files: $ADDED" From ba35a6c22687a5830e855b6c2537cb52d10879fe Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Sat, 30 Jul 2022 23:42:30 -0600 Subject: [PATCH 02/18] fixed bug with other changed. --- entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entrypoint.sh b/entrypoint.sh index 75c340fd64e..e729d780618 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -154,7 +154,7 @@ else OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | jq -R 'split("|")') fi - if [[ -n "${OTHER_CHANGED}" ]]; then + if [[ -n "${OTHER_CHANGED}" && "${OTHER_CHANGED}" != "[]" ]]; then echo "::debug::Non Matching changed files: ${OTHER_CHANGED}" echo "::set-output name=only_changed::false" echo "::set-output name=other_changed_files::$OTHER_CHANGED" From b7d6f7e64621a85569601024e443d789a880f01a Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Sun, 31 Jul 2022 00:15:59 -0600 Subject: [PATCH 03/18] Updated info messages --- entrypoint.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index e729d780618..1d1defafff0 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -69,7 +69,7 @@ echo "::group::changed-files" if [[ -n $INPUT_PATH ]]; then REPO_DIR="$GITHUB_WORKSPACE/$INPUT_PATH" - echo "::debug::Resolving repository path: $REPO_DIR" + echo "::info::Resolving repository path: $REPO_DIR" if [[ ! -d "$REPO_DIR" ]]; then echo "::error::Invalid repository path: $REPO_DIR" exit 1 @@ -77,9 +77,9 @@ if [[ -n $INPUT_PATH ]]; then cd "$REPO_DIR" fi -echo "::debug::Retrieving changes between $INPUT_PREVIOUS_SHA ($INPUT_TARGET_BRANCH) → $INPUT_CURRENT_SHA ($INPUT_CURRENT_BRANCH)" +echo "::info::Retrieving changes between $INPUT_PREVIOUS_SHA ($INPUT_TARGET_BRANCH) → $INPUT_CURRENT_SHA ($INPUT_CURRENT_BRANCH)" -echo "::debug::Getting diff..." +echo "::info::Getting diff..." if [[ -z "$INPUT_FILES_PATTERN_FILE" ]]; then if [[ "$INPUT_JSON" == "false" ]]; then From 5def83cabca03e1a62802202a7c8ec97ae38850e Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Sun, 31 Jul 2022 10:25:07 -0600 Subject: [PATCH 04/18] Added test and updated docs. --- .github/workflows/test.yml | 10 ++++++++++ README.md | 12 ++++++++++-- action.yml | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2a38624a091..289f4a9659b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -332,6 +332,16 @@ jobs: echo '${{ toJSON(steps.changed-files-pipe.outputs) }}' shell: bash + - name: Run changed-files with json output + id: changed-files-json + uses: ./ + with: + json: true + - name: Show output + run: | + echo '${{ toJSON(steps.changed-files-comma.outputs) }}' + shell: + bash - name: Run changed-files with comma separator id: changed-files-comma uses: ./ diff --git a/README.md b/README.md index 4e2ef0838ae..1a5083c8cbe 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,7 @@ Support this project with a :star: |:--------------------------------------:|:----------------------:|:--------:|:---------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| | token | `string` | `false` | `${{ github.token }}` | [GITHUB\_TOKEN](https://docs.github.com/en/free-pro-team@latest/actions/reference/authentication-in-a-workflow#using-the-github_token-in-a-workflow)
or a repo scoped
[Personal Access Token](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token) | | separator | `string` | `false` | `' '` | Split character for output strings | -| include\_all\_old\_new\_renamed\_files | `boolean` | `false` | `false` | Include `all_old_new_renamed_files` output. Note this can generate a large output See: [#501](https://github.com/tj-actions/changed-files/issues/501). | +| include\_all\_old\_new\_renamed\_files | `boolean` | `false` | `false` | Include `all_old_new_renamed_files` output. Note this can generate a large output See: [#501](https://github.com/tj-actions/changed-files/issues/501). | | old\_new\_separator | `string` | `false` | `','` | Split character for old and new filename pairs | | old\_new\_files\_separator | `string` | `false` | `' '` | Split character for multiple old and new filename pairs | | files | `string` OR `string[]` | `false` | | Check for changes
using only these
list of file(s)
(Defaults to the
entire repo) | @@ -146,7 +146,8 @@ Support this project with a :star: | use\_fork\_point | `boolean` | `false` | `false` | Finds best common ancestor
between two commits
to use in a three-way merge
as the `base_sha`
See: [git merge-base](https://git-scm.com/docs/git-merge-base#Documentation/git-merge-base.txt---fork-point).
NOTE: This pulls the entire commit history of the base branch | | quotepath | `boolean` | `false` | `true` | Output filenames completely verbatim by setting this to `false` | | diff\_relative | `boolean` | `false` | | Exclude changes outside the current directory and show pathnames relative to it. | -| dir\_names | `boolean` | `false` | `false` | Output unique changed directories instead of filenames.
NOTE: This returns `.` for
changed files located in the root of the project. | +| dir\_names | `boolean` | `false` | `false` | Output unique changed directories instead of filenames.
NOTE: This returns `.` for
changed files located in the root of the project. | +| json | `boolean` | `false` | `false` | Output changed files in JSON format. | ## Examples @@ -337,6 +338,13 @@ Support this project with a :star: uses: tj-actions/changed-files@v24 with: dir_names: "true" + + # All outputs are JSON formatted arrays and can be used in other actions and matrix compatible jobs. + - name: Run changed-files with json output + id: changed-files-json + uses: tj-actions/changed-files@v24 + with: + json: "true" ``` Screen Shot 2021-11-19 at 4 59 21 PM diff --git a/action.yml b/action.yml index 826ac49f451..00b999bd5fb 100644 --- a/action.yml +++ b/action.yml @@ -78,7 +78,7 @@ inputs: description: "Output the absolute path to the changed directories instead of the filenames" required: false json: - description: "Output the changed files in JSON format" + description: "Output changed files in JSON format" required: false default: "false" From a55982a24c9305cb46e307c7fb6225cad5d83e3c Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Sun, 31 Jul 2022 10:44:17 -0600 Subject: [PATCH 05/18] Updated info messages. --- entrypoint.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 1d1defafff0..08164799dd0 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -69,7 +69,7 @@ echo "::group::changed-files" if [[ -n $INPUT_PATH ]]; then REPO_DIR="$GITHUB_WORKSPACE/$INPUT_PATH" - echo "::info::Resolving repository path: $REPO_DIR" + echo "Resolving repository path: $REPO_DIR" if [[ ! -d "$REPO_DIR" ]]; then echo "::error::Invalid repository path: $REPO_DIR" exit 1 @@ -77,9 +77,9 @@ if [[ -n $INPUT_PATH ]]; then cd "$REPO_DIR" fi -echo "::info::Retrieving changes between $INPUT_PREVIOUS_SHA ($INPUT_TARGET_BRANCH) → $INPUT_CURRENT_SHA ($INPUT_CURRENT_BRANCH)" +echo "Retrieving changes between $INPUT_PREVIOUS_SHA ($INPUT_TARGET_BRANCH) → $INPUT_CURRENT_SHA ($INPUT_CURRENT_BRANCH)" -echo "::info::Getting diff..." +echo "Getting diff..." if [[ -z "$INPUT_FILES_PATTERN_FILE" ]]; then if [[ "$INPUT_JSON" == "false" ]]; then From 210aec675ebb18db832491359215e6db72fe3f39 Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Sun, 31 Jul 2022 10:45:18 -0600 Subject: [PATCH 06/18] fixed test. --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 289f4a9659b..8093fe75ccd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -339,7 +339,7 @@ jobs: json: true - name: Show output run: | - echo '${{ toJSON(steps.changed-files-comma.outputs) }}' + echo '${{ toJSON(steps.changed-files-json.outputs) }}' shell: bash - name: Run changed-files with comma separator From a6a46a3b58e77f1f123480f7aecc6abc4607c8bb Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Sun, 31 Jul 2022 13:34:24 -0600 Subject: [PATCH 07/18] fixed bug with output. --- entrypoint.sh | 52 +++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 08164799dd0..925465f286d 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -98,19 +98,19 @@ if [[ -z "$INPUT_FILES_PATTERN_FILE" ]]; then ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | awk -v d="$INPUT_OLD_NEW_FILES_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') fi else - ADDED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') - COPIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" C | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') - DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') - MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" M | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') - RENAMED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" R | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') - TYPE_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" T | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') - UNMERGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" U | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') - UNKNOWN=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" X | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') - ALL_CHANGED_AND_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "*ACDMRTUX" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') - ALL_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') - ALL_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') + ADDED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') + COPIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" C | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') + DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') + MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" M | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') + RENAMED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" R | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') + TYPE_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" T | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') + UNMERGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" U | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') + UNKNOWN=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" X | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') + ALL_CHANGED_AND_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "*ACDMRTUX" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') + ALL_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') + ALL_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') if [[ $INPUT_INCLUDE_ALL_OLD_NEW_RENAMED_FILES == "true" ]]; then - ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")') + ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') fi fi else @@ -151,7 +151,7 @@ else if [[ "$INPUT_JSON" == "false" ]]; then OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') else - OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | jq -R 'split("|")') + OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | jq -R 'split("|") | @json') fi if [[ -n "${OTHER_CHANGED}" && "${OTHER_CHANGED}" != "[]" ]]; then @@ -184,7 +184,7 @@ else if [[ "$INPUT_JSON" == "false" ]]; then OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') else - OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | jq -R 'split("|")') + OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | jq -R 'split("|") | @json') fi if [[ -n "${OTHER_MODIFIED}" && "$OTHER_MODIFIED" != "[]" ]]; then @@ -217,7 +217,7 @@ else if [[ "$INPUT_JSON" == "false" ]]; then OTHER_DELETED=$(echo "${OTHER_DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') else - OTHER_DELETED=$(echo "${OTHER_DELETED}" | jq -R 'split("|")') + OTHER_DELETED=$(echo "${OTHER_DELETED}" | jq -R 'split("|") | @json') fi if [[ -n "${OTHER_DELETED}" && "${OTHER_DELETED}" != "[]" ]]; then @@ -240,17 +240,17 @@ else ALL_CHANGED=$(echo "${ALL_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') else - ADDED=$(echo "${ADDED}" | jq -R 'split("|")') - COPIED=$(echo "${COPIED}" | jq -R 'split("|")') - DELETED=$(echo "${DELETED}" | jq -R 'split("|")') - MODIFIED=$(echo "${MODIFIED}" | jq -R 'split("|")') - RENAMED=$(echo "${RENAMED}" | jq -R 'split("|")') - TYPE_CHANGED=$(echo "${TYPE_CHANGED}" | jq -R 'split("|")') - UNMERGED=$(echo "${UNMERGED}" | jq -R 'split("|")') - UNKNOWN=$(echo "${UNKNOWN}" | jq -R 'split("|")') - ALL_CHANGED_AND_MODIFIED=$(echo "${ALL_CHANGED_AND_MODIFIED}" | jq -R 'split("|")') - ALL_CHANGED=$(echo "${ALL_CHANGED}" | jq -R 'split("|")') - ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | jq -R 'split("|")') + ADDED=$(echo "${ADDED}" | jq -R 'split("|") | @json') + COPIED=$(echo "${COPIED}" | jq -R 'split("|") | @json') + DELETED=$(echo "${DELETED}" | jq -R 'split("|") | @json') + MODIFIED=$(echo "${MODIFIED}" | jq -R 'split("|") | @json') + RENAMED=$(echo "${RENAMED}" | jq -R 'split("|") | @json') + TYPE_CHANGED=$(echo "${TYPE_CHANGED}" | jq -R 'split("|") | @json') + UNMERGED=$(echo "${UNMERGED}" | jq -R 'split("|") | @json') + UNKNOWN=$(echo "${UNKNOWN}" | jq -R 'split("|") | @json') + ALL_CHANGED_AND_MODIFIED=$(echo "${ALL_CHANGED_AND_MODIFIED}" | jq -R 'split("|") | @json') + ALL_CHANGED=$(echo "${ALL_CHANGED}" | jq -R 'split("|") | @json') + ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | jq -R 'split("|") | @json') fi fi From fac5eece8875432f4160fc77cd358d88d58ba96a Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Sun, 31 Jul 2022 14:09:36 -0600 Subject: [PATCH 08/18] updated test. --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8093fe75ccd..718864525a4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -340,6 +340,7 @@ jobs: - name: Show output run: | echo '${{ toJSON(steps.changed-files-json.outputs) }}' + echo '${{ toJSON(steps.changed-files-json.outputs.all_changed_and_modified_files) }}' shell: bash - name: Run changed-files with comma separator From 8c79fec822777303b9e2b3ecf2506dcc348c53e5 Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Sun, 31 Jul 2022 14:12:44 -0600 Subject: [PATCH 09/18] updated test. --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 718864525a4..9bebea929e2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -340,7 +340,7 @@ jobs: - name: Show output run: | echo '${{ toJSON(steps.changed-files-json.outputs) }}' - echo '${{ toJSON(steps.changed-files-json.outputs.all_changed_and_modified_files) }}' + echo '${{ fromJSON(steps.changed-files-json.outputs.all_changed_and_modified_files) }}' shell: bash - name: Run changed-files with comma separator From 5ef447e8f56c93aabf9ae15d8398580b2adf42af Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Sun, 31 Jul 2022 14:32:57 -0600 Subject: [PATCH 10/18] wrap with qoutes. --- entrypoint.sh | 52 +++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 925465f286d..9359952802a 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -98,19 +98,19 @@ if [[ -z "$INPUT_FILES_PATTERN_FILE" ]]; then ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | awk -v d="$INPUT_OLD_NEW_FILES_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') fi else - ADDED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') - COPIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" C | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') - DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') - MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" M | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') - RENAMED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" R | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') - TYPE_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" T | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') - UNMERGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" U | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') - UNKNOWN=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" X | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') - ALL_CHANGED_AND_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "*ACDMRTUX" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') - ALL_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') - ALL_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') + ADDED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" + COPIED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" C | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" + DELETED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" + MODIFIED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" M | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" + RENAMED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" R | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" + TYPE_CHANGED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" T | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" + UNMERGED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" U | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" + UNKNOWN="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" X | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" + ALL_CHANGED_AND_MODIFIED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "*ACDMRTUX" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" + ALL_CHANGED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" + ALL_MODIFIED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" if [[ $INPUT_INCLUDE_ALL_OLD_NEW_RENAMED_FILES == "true" ]]; then - ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json') + ALL_OLD_NEW_RENAMED="$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" fi fi else @@ -151,7 +151,7 @@ else if [[ "$INPUT_JSON" == "false" ]]; then OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') else - OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | jq -R 'split("|") | @json') + OTHER_CHANGED="$(echo "${OTHER_CHANGED}" | jq -R 'split("|")')" fi if [[ -n "${OTHER_CHANGED}" && "${OTHER_CHANGED}" != "[]" ]]; then @@ -184,7 +184,7 @@ else if [[ "$INPUT_JSON" == "false" ]]; then OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') else - OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | jq -R 'split("|") | @json') + OTHER_MODIFIED="$(echo "${OTHER_MODIFIED}" | jq -R 'split("|")')" fi if [[ -n "${OTHER_MODIFIED}" && "$OTHER_MODIFIED" != "[]" ]]; then @@ -217,7 +217,7 @@ else if [[ "$INPUT_JSON" == "false" ]]; then OTHER_DELETED=$(echo "${OTHER_DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') else - OTHER_DELETED=$(echo "${OTHER_DELETED}" | jq -R 'split("|") | @json') + OTHER_DELETED="$(echo "${OTHER_DELETED}" | jq -R 'split("|")')" fi if [[ -n "${OTHER_DELETED}" && "${OTHER_DELETED}" != "[]" ]]; then @@ -240,17 +240,17 @@ else ALL_CHANGED=$(echo "${ALL_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') else - ADDED=$(echo "${ADDED}" | jq -R 'split("|") | @json') - COPIED=$(echo "${COPIED}" | jq -R 'split("|") | @json') - DELETED=$(echo "${DELETED}" | jq -R 'split("|") | @json') - MODIFIED=$(echo "${MODIFIED}" | jq -R 'split("|") | @json') - RENAMED=$(echo "${RENAMED}" | jq -R 'split("|") | @json') - TYPE_CHANGED=$(echo "${TYPE_CHANGED}" | jq -R 'split("|") | @json') - UNMERGED=$(echo "${UNMERGED}" | jq -R 'split("|") | @json') - UNKNOWN=$(echo "${UNKNOWN}" | jq -R 'split("|") | @json') - ALL_CHANGED_AND_MODIFIED=$(echo "${ALL_CHANGED_AND_MODIFIED}" | jq -R 'split("|") | @json') - ALL_CHANGED=$(echo "${ALL_CHANGED}" | jq -R 'split("|") | @json') - ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | jq -R 'split("|") | @json') + ADDED="$(echo "${ADDED}" | jq -R 'split("|")')" + COPIED="$(echo "${COPIED}" | jq -R 'split("|")')" + DELETED="$(echo "${DELETED}" | jq -R 'split("|")')" + MODIFIED="$(echo "${MODIFIED}" | jq -R 'split("|")')" + RENAMED="$(echo "${RENAMED}" | jq -R 'split("|")')" + TYPE_CHANGED="$(echo "${TYPE_CHANGED}" | jq -R 'split("|")')" + UNMERGED="$(echo "${UNMERGED}" | jq -R 'split("|")')" + UNKNOWN="$(echo "${UNKNOWN}" | jq -R 'split("|")')" + ALL_CHANGED_AND_MODIFIED="$(echo "${ALL_CHANGED_AND_MODIFIED}" | jq -R 'split("|")')" + ALL_CHANGED="$(echo "${ALL_CHANGED}" | jq -R 'split("|")')" + ALL_MODIFIED="$(echo "${ALL_MODIFIED}" | jq -R 'split("|")')" fi fi From 3bc8595781e015be9b96fb05fb2f796e4a9ed3df Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Sun, 31 Jul 2022 14:43:51 -0600 Subject: [PATCH 11/18] fixed bug with test. --- entrypoint.sh | 52 +++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 9359952802a..82b7a4727a8 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -98,19 +98,19 @@ if [[ -z "$INPUT_FILES_PATTERN_FILE" ]]; then ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | awk -v d="$INPUT_OLD_NEW_FILES_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') fi else - ADDED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" - COPIED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" C | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" - DELETED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" - MODIFIED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" M | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" - RENAMED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" R | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" - TYPE_CHANGED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" T | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" - UNMERGED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" U | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" - UNKNOWN="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" X | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" - ALL_CHANGED_AND_MODIFIED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "*ACDMRTUX" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" - ALL_CHANGED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" - ALL_MODIFIED="$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" + ADDED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + COPIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" C | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" M | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + RENAMED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" R | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + TYPE_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" T | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + UNMERGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" U | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + UNKNOWN=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" X | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + ALL_CHANGED_AND_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "*ACDMRTUX" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + ALL_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + ALL_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') if [[ $INPUT_INCLUDE_ALL_OLD_NEW_RENAMED_FILES == "true" ]]; then - ALL_OLD_NEW_RENAMED="$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|")')" + ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') fi fi else @@ -151,7 +151,7 @@ else if [[ "$INPUT_JSON" == "false" ]]; then OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') else - OTHER_CHANGED="$(echo "${OTHER_CHANGED}" | jq -R 'split("|")')" + OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') fi if [[ -n "${OTHER_CHANGED}" && "${OTHER_CHANGED}" != "[]" ]]; then @@ -184,7 +184,7 @@ else if [[ "$INPUT_JSON" == "false" ]]; then OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') else - OTHER_MODIFIED="$(echo "${OTHER_MODIFIED}" | jq -R 'split("|")')" + OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') fi if [[ -n "${OTHER_MODIFIED}" && "$OTHER_MODIFIED" != "[]" ]]; then @@ -217,7 +217,7 @@ else if [[ "$INPUT_JSON" == "false" ]]; then OTHER_DELETED=$(echo "${OTHER_DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') else - OTHER_DELETED="$(echo "${OTHER_DELETED}" | jq -R 'split("|")')" + OTHER_DELETED=$(echo "${OTHER_DELETED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') fi if [[ -n "${OTHER_DELETED}" && "${OTHER_DELETED}" != "[]" ]]; then @@ -240,17 +240,17 @@ else ALL_CHANGED=$(echo "${ALL_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') else - ADDED="$(echo "${ADDED}" | jq -R 'split("|")')" - COPIED="$(echo "${COPIED}" | jq -R 'split("|")')" - DELETED="$(echo "${DELETED}" | jq -R 'split("|")')" - MODIFIED="$(echo "${MODIFIED}" | jq -R 'split("|")')" - RENAMED="$(echo "${RENAMED}" | jq -R 'split("|")')" - TYPE_CHANGED="$(echo "${TYPE_CHANGED}" | jq -R 'split("|")')" - UNMERGED="$(echo "${UNMERGED}" | jq -R 'split("|")')" - UNKNOWN="$(echo "${UNKNOWN}" | jq -R 'split("|")')" - ALL_CHANGED_AND_MODIFIED="$(echo "${ALL_CHANGED_AND_MODIFIED}" | jq -R 'split("|")')" - ALL_CHANGED="$(echo "${ALL_CHANGED}" | jq -R 'split("|")')" - ALL_MODIFIED="$(echo "${ALL_MODIFIED}" | jq -R 'split("|")')" + ADDED=$(echo "${ADDED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + COPIED=$(echo "${COPIED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + DELETED=$(echo "${DELETED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + MODIFIED=$(echo "${MODIFIED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + RENAMED=$(echo "${RENAMED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + TYPE_CHANGED=$(echo "${TYPE_CHANGED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + UNMERGED=$(echo "${UNMERGED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + UNKNOWN=$(echo "${UNKNOWN}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + ALL_CHANGED_AND_MODIFIED=$(echo "${ALL_CHANGED_AND_MODIFIED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + ALL_CHANGED=$(echo "${ALL_CHANGED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') fi fi From 27754ebbd52d42fb8184a3bc22de0928b95e2c16 Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Sun, 31 Jul 2022 15:55:18 -0600 Subject: [PATCH 12/18] updated test. --- .github/workflows/test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9bebea929e2..8093fe75ccd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -340,7 +340,6 @@ jobs: - name: Show output run: | echo '${{ toJSON(steps.changed-files-json.outputs) }}' - echo '${{ fromJSON(steps.changed-files-json.outputs.all_changed_and_modified_files) }}' shell: bash - name: Run changed-files with comma separator From 6400c02021bf85b54dcf651e425bc0b99177ffd2 Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Sun, 31 Jul 2022 18:30:13 -0600 Subject: [PATCH 13/18] Update test.yml --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8093fe75ccd..f0b706c2f30 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -340,6 +340,7 @@ jobs: - name: Show output run: | echo '${{ toJSON(steps.changed-files-json.outputs) }}' + echo '${{ fromJSON(steps.changed-files-json.outputs.all_changed_files) }}' shell: bash - name: Run changed-files with comma separator From b7d3fc6ed8afb02a6cc47c960da494736d007278 Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Mon, 1 Aug 2022 00:21:15 -0600 Subject: [PATCH 14/18] Update test.yml --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f0b706c2f30..ec8293d373a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -340,7 +340,7 @@ jobs: - name: Show output run: | echo '${{ toJSON(steps.changed-files-json.outputs) }}' - echo '${{ fromJSON(steps.changed-files-json.outputs.all_changed_files) }}' + echo '${{ toJSON(steps.changed-files-json.outputs.all_changed_files) }}' shell: bash - name: Run changed-files with comma separator From da7b9bca92857f38f19931f892616be9da43624f Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Wed, 3 Aug 2022 13:36:51 -0600 Subject: [PATCH 15/18] update to remove extra slashes --- entrypoint.sh | 52 +++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 82b7a4727a8..6866f6321e7 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -98,19 +98,19 @@ if [[ -z "$INPUT_FILES_PATTERN_FILE" ]]; then ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | awk -v d="$INPUT_OLD_NEW_FILES_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') fi else - ADDED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - COPIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" C | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" M | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - RENAMED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" R | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - TYPE_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" T | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - UNMERGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" U | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - UNKNOWN=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" X | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - ALL_CHANGED_AND_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "*ACDMRTUX" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - ALL_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - ALL_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + ADDED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + COPIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" C | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" M | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + RENAMED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" R | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + TYPE_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" T | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + UNMERGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" U | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + UNKNOWN=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" X | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + ALL_CHANGED_AND_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "*ACDMRTUX" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + ALL_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + ALL_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) if [[ $INPUT_INCLUDE_ALL_OLD_NEW_RENAMED_FILES == "true" ]]; then - ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}'| jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) fi fi else @@ -151,7 +151,7 @@ else if [[ "$INPUT_JSON" == "false" ]]; then OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') else - OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) fi if [[ -n "${OTHER_CHANGED}" && "${OTHER_CHANGED}" != "[]" ]]; then @@ -184,7 +184,7 @@ else if [[ "$INPUT_JSON" == "false" ]]; then OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') else - OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) fi if [[ -n "${OTHER_MODIFIED}" && "$OTHER_MODIFIED" != "[]" ]]; then @@ -217,7 +217,7 @@ else if [[ "$INPUT_JSON" == "false" ]]; then OTHER_DELETED=$(echo "${OTHER_DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') else - OTHER_DELETED=$(echo "${OTHER_DELETED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + OTHER_DELETED=$(echo "${OTHER_DELETED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) fi if [[ -n "${OTHER_DELETED}" && "${OTHER_DELETED}" != "[]" ]]; then @@ -240,17 +240,17 @@ else ALL_CHANGED=$(echo "${ALL_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') else - ADDED=$(echo "${ADDED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - COPIED=$(echo "${COPIED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - DELETED=$(echo "${DELETED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - MODIFIED=$(echo "${MODIFIED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - RENAMED=$(echo "${RENAMED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - TYPE_CHANGED=$(echo "${TYPE_CHANGED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - UNMERGED=$(echo "${UNMERGED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - UNKNOWN=$(echo "${UNKNOWN}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - ALL_CHANGED_AND_MODIFIED=$(echo "${ALL_CHANGED_AND_MODIFIED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - ALL_CHANGED=$(echo "${ALL_CHANGED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') - ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g') + ADDED=$(echo "${ADDED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + COPIED=$(echo "${COPIED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + DELETED=$(echo "${DELETED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + MODIFIED=$(echo "${MODIFIED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + RENAMED=$(echo "${RENAMED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + TYPE_CHANGED=$(echo "${TYPE_CHANGED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + UNMERGED=$(echo "${UNMERGED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + UNKNOWN=$(echo "${UNKNOWN}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + ALL_CHANGED_AND_MODIFIED=$(echo "${ALL_CHANGED_AND_MODIFIED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + ALL_CHANGED=$(echo "${ALL_CHANGED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) + ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | jq -R 'split("|") | @json' | sed -r 's/^"|"$//g' | tr -s /) fi fi From 39aa2b219e1baf76aeba5106925dcea0d14309b8 Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Wed, 3 Aug 2022 13:47:02 -0600 Subject: [PATCH 16/18] Added manual matrix test. --- .github/workflows/manual-matrix-test.yml | 39 ++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/manual-matrix-test.yml diff --git a/.github/workflows/manual-matrix-test.yml b/.github/workflows/manual-matrix-test.yml new file mode 100644 index 00000000000..100c6ee1cd7 --- /dev/null +++ b/.github/workflows/manual-matrix-test.yml @@ -0,0 +1,39 @@ +name: Manual Matrix Test + +on: + workflow_dispatch: + +jobs: + changed-files: + name: Get changes + runs-on: ubuntu-latest + outputs: + matrix: "{\"container\": ${{ toJson(steps.changed-files.outputs.all_changed_files) }} }" + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 # needed for tj-actions/changed-files + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@v23 + with: + json: true + - name: List all changed files + run: | + echo '${{ toJson(steps.changed-files.outputs.all_changed_files) }}' + + matrix-job: + name: Run Matrix Job + runs-on: ubuntu-latest + needs: [changed-files] + strategy: + matrix: ${{ fromJson(needs.changed-files.outputs.matrix) }} + max-parallel: 4 + fail-fast: false + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Test + run: | + echo ${{ matrix.container }} \ No newline at end of file From c0a5d079bf66a28caa1f18d780c65694170614a9 Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Wed, 3 Aug 2022 13:47:35 -0600 Subject: [PATCH 17/18] fixed typo --- .github/workflows/manual-matrix-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/manual-matrix-test.yml b/.github/workflows/manual-matrix-test.yml index 100c6ee1cd7..6c6ca29f637 100644 --- a/.github/workflows/manual-matrix-test.yml +++ b/.github/workflows/manual-matrix-test.yml @@ -21,14 +21,14 @@ jobs: json: true - name: List all changed files run: | - echo '${{ toJson(steps.changed-files.outputs.all_changed_files) }}' + echo '${{ toJSON(steps.changed-files.outputs.all_changed_files) }}' matrix-job: name: Run Matrix Job runs-on: ubuntu-latest needs: [changed-files] strategy: - matrix: ${{ fromJson(needs.changed-files.outputs.matrix) }} + matrix: ${{ fromJSON(needs.changed-files.outputs.matrix) }} max-parallel: 4 fail-fast: false steps: From dd1d85da10027d585a8e394aeee7524eb2f17bcf Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Wed, 3 Aug 2022 13:51:09 -0600 Subject: [PATCH 18/18] Updated description. --- README.md | 2 +- action.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1a5083c8cbe..4a30447e80e 100644 --- a/README.md +++ b/README.md @@ -147,7 +147,7 @@ Support this project with a :star: | quotepath | `boolean` | `false` | `true` | Output filenames completely verbatim by setting this to `false` | | diff\_relative | `boolean` | `false` | | Exclude changes outside the current directory and show pathnames relative to it. | | dir\_names | `boolean` | `false` | `false` | Output unique changed directories instead of filenames.
NOTE: This returns `.` for
changed files located in the root of the project. | -| json | `boolean` | `false` | `false` | Output changed files in JSON format. | +| json | `boolean` | `false` | `false` | Output changed files in JSON format which can be used for matrix jobs. | ## Examples diff --git a/action.yml b/action.yml index 00b999bd5fb..599295f1b5c 100644 --- a/action.yml +++ b/action.yml @@ -78,7 +78,7 @@ inputs: description: "Output the absolute path to the changed directories instead of the filenames" required: false json: - description: "Output changed files in JSON format" + description: "Output changed files in JSON format which can be used for matrix jobs" required: false default: "false"