diff --git a/.all-contributorsrc b/.all-contributorsrc index f81e27d5..a939bb7a 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -32,6 +32,16 @@ "code", "doc" ] + }, + { + "login": "IvanPizhenko", + "name": "Ivan Pizhenko", + "avatar_url": "https://avatars.githubusercontent.com/u/11859904?v=4", + "profile": "https://github.com/IvanPizhenko", + "contributions": [ + "code", + "doc" + ] } ], "contributorsPerLine": 7, diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d5de6d81..31561dc5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,6 +20,59 @@ jobs: - name: shellcheck uses: reviewdog/action-shellcheck@v1.7 + test-multiple-repositories: + name: Test with multiple repositories + runs-on: ${{ matrix.platform }} + strategy: + fail-fast: false + matrix: + platform: [ubuntu-latest, windows-latest, macos-latest] + steps: + - name: Checkout into dir1 + uses: actions/checkout@v2 + with: + fetch-depth: 0 + path: dir1 + - name: Run changed-files with defaults on the dir1 + id: changed-files-dir1 + uses: ./dir1 + with: + path: dir1 + - name: Show output + run: | + echo "${{ toJSON(steps.changed-files-dir1.outputs) }}" + shell: + bash + - name: List all modified files + run: | + for file in "${{ steps.changed-files-dir1.outputs.modified_files }}"; do + echo $file + done + shell: + bash + - name: Checkout into dir2 + uses: actions/checkout@v2 + with: + fetch-depth: 0 + path: dir2 + - name: Run changed-files with defaults on the dir2 + id: changed-files-dir2 + uses: ./dir2 + with: + path: dir2 + - name: Show output + run: | + echo "${{ toJSON(steps.changed-files-dir2.outputs) }}" + shell: + bash + - name: List all modified files + run: | + for file in "${{ steps.changed-files-dir2.outputs.modified_files }}"; do + echo $file + done + shell: + bash + test-no-head-sha: name: Test changed-files missing head sha runs-on: ${{ matrix.platform }} @@ -31,12 +84,12 @@ jobs: steps: - name: Checkout to branch uses: actions/checkout@v2 - + - name: Run changed-files with defaults id: changed-files continue-on-error: true uses: ./ - + - name: Show output run: | echo "${{ toJSON(steps.changed-files.outputs) }}" diff --git a/.gitignore b/.gitignore index a53c6811..3f0e12c1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ .idea/ .envrc +tag.sh +untag.sh diff --git a/README.md b/README.md index cdf7413a..22864b46 100644 --- a/README.md +++ b/README.md @@ -53,11 +53,11 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 0 # OR "2" -> To retrieve the preceding commit. - + - name: Get changed files id: changed-files uses: tj-actions/changed-files@v1.0.0 - + - name: List all modified files run: | for file in "${{ steps.changed-files.outputs.all_modified_files }}"; do @@ -104,6 +104,7 @@ jobs: | base_sha | `string` | `false` | | Specify a different
base commit SHA
used for
comparing changes | | sha | `string` | `true` | `${{ github.sha }}` | Specify a different
commit SHA
used for
comparing changes | | files_from_source_file | `string` | `false` | | Source file
used to populate
the files input | +| path | `string` | `false` | | Relative path under
`GITHUB_WORKSPACE`
to the repository | ## Example @@ -115,7 +116,7 @@ jobs: - name: Get changed files using defaults id: changed-files uses: tj-actions/changed-files@v1.0.0 - + - name: Get changed files using a comma separator id: changed-files-comma uses: tj-actions/changed-files@v1.0.0 @@ -148,7 +149,7 @@ jobs: new.txt test_directory *.sh - .(png|jpeg)$ + .(png|jpeg)$ .(sql)$ ^(mynewfile|custom) @@ -156,12 +157,12 @@ jobs: if: steps.changed-files-specific.outputs.any_changed == 'true' run: | echo "One or more files listed above has changed." - + - name: Run step if only the files listed above change if: steps.changed-files-specific.outputs.only_changed == 'true' run: | echo "Only files listed above have changed." - + - name: Use a source file or list of file(s) to populate to files input. id: changed-files-specific-source-file uses: tj-actions/changed-files@v1.0.0 @@ -183,13 +184,13 @@ jobs: uses: tj-actions/changed-files@v1.0.0 with: sha: ${{ github.event.pull_request.head.sha }} - + - name: Use a different base SHA id: changed-files-custom-base-sha uses: tj-actions/changed-files@v1.0.0 with: base_sha: "2096ed0" - + ``` ### Running [pre-commit](https://pre-commit.com/) on all modified files @@ -200,7 +201,7 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 0 - + - name: Get changed files id: changed-files uses: tj-actions/changed-files@v1.0.0 diff --git a/action.yml b/action.yml index a63ba751..10b31e7d 100644 --- a/action.yml +++ b/action.yml @@ -25,6 +25,9 @@ inputs: base_sha: description: 'Specify a base commit SHA on used for comparing changes' required: false + path: + description: 'Specify a relative path under $GITHUB_WORKSPACE to locate the repository' + required: false outputs: added_files: @@ -100,6 +103,7 @@ runs: INPUT_TOKEN: ${{ inputs.token }} INPUT_FILES: ${{ join(format('{0} {1}', inputs.files, steps.source-input-files.outputs.files), ' ') }} INPUT_SEPARATOR: ${{ inputs.separator }} + INPUT_PATH: ${{ inputs.path }} branding: icon: file-text diff --git a/entrypoint.sh b/entrypoint.sh index 324ce8da..2c660510 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -4,6 +4,17 @@ set -e echo "::group::changed-files" +echo "Resolving repository path..." + +if [[ -n $INPUT_PATH ]]; then + REPO_DIR="$GITHUB_WORKSPACE/$INPUT_PATH" + if [[ ! -d "$REPO_DIR" ]]; then + echo "::warning::Invalid repository path" + exit 1 + fi + cd "$REPO_DIR" +fi + git remote add temp_changed_files "https://${INPUT_TOKEN}@github.com/${GITHUB_REPOSITORY}" echo "Getting HEAD info..." @@ -27,7 +38,7 @@ if [[ -z $GITHUB_BASE_REF ]]; then fi TARGET_BRANCH=${GITHUB_REF/refs\/heads\//} CURRENT_BRANCH=$TARGET_BRANCH - + if [[ $exit_status -ne 0 ]]; then echo "::warning::Unable to determine the previous commit sha" echo "::warning::You seem to be missing 'fetch-depth: 0' or 'fetch-depth: 2'. See https://github.com/tj-actions/changed-files#usage" @@ -42,7 +53,7 @@ else else PREVIOUS_SHA=$INPUT_BASE_SHA fi - + if [[ $exit_status -ne 0 ]]; then echo "::warning::Unable to determine the base ref sha for ${TARGET_BRANCH}" exit 1