Compare commits
197 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ac21d93904 | ||
|
|
a4637ea6e7 | ||
|
|
fd9998cf5f | ||
|
|
ea024b2d7f | ||
|
|
db4e584844 | ||
|
|
c6543c497a | ||
|
|
88f9f3efbb | ||
|
|
3af07c2040 | ||
|
|
3680129aa2 | ||
|
|
5d866cbe77 | ||
|
|
346f237a17 | ||
|
|
c037f1e7c5 | ||
|
|
ae82ed4ae0 | ||
|
|
cbd59070e8 | ||
|
|
6c9dcea443 | ||
|
|
79b060d445 | ||
|
|
434b67ebc3 | ||
|
|
cbda684547 | ||
|
|
3f8189989b | ||
|
|
67a1f54f6f | ||
|
|
99248a4438 | ||
|
|
878743189b | ||
|
|
98d1d84e2f | ||
|
|
a60bf3759e | ||
|
|
bc46e4c422 | ||
|
|
fba4067348 | ||
|
|
e4b8674732 | ||
|
|
bc2b5aef20 | ||
|
|
63c36a563a | ||
|
|
44b77505fe | ||
|
|
62f4729b5d | ||
|
|
e0579abf95 | ||
|
|
8e0194b29b | ||
|
|
3649d2842d | ||
|
|
0ca1c07b47 | ||
|
|
a57f4dcc81 | ||
|
|
9c39b0b6e9 | ||
|
|
8b141f3906 | ||
|
|
17e07d8bc0 | ||
|
|
13fa1c06fc | ||
|
|
0deb29d192 | ||
|
|
28267ee8b7 | ||
|
|
094d3441f8 | ||
|
|
aeec36b035 | ||
|
|
2d0270c489 | ||
|
|
0e0adfa0d3 | ||
|
|
5313e6bbe3 | ||
|
|
54789be3a1 | ||
|
|
1675238cfd | ||
|
|
3fbf5fb588 | ||
|
|
95230678db | ||
|
|
fdccafbb6e | ||
|
|
0e8d796ee0 | ||
|
|
0c6f2ac488 | ||
|
|
1db97adba4 | ||
|
|
fb8f6db383 | ||
|
|
efd7ecef11 | ||
|
|
4f8e12c098 | ||
|
|
032add13e8 | ||
|
|
0f0747e79d | ||
|
|
0c2a758b81 | ||
|
|
1b6d7b6fb6 | ||
|
|
716b1e1304 | ||
|
|
7aaf10d9ee | ||
|
|
cc08e170f4 | ||
|
|
6e79d6e3db | ||
|
|
d13ac1942f | ||
|
|
bb89f97963 | ||
|
|
1864078d0a | ||
|
|
f495a0321d | ||
|
|
47371c50e9 | ||
|
|
4f573fed06 | ||
|
|
ff2f6e6b91 | ||
|
|
0102c07446 | ||
|
|
089842a7a8 | ||
|
|
787db0612e | ||
|
|
4ef6b56482 | ||
|
|
f9480db177 | ||
|
|
c9ae347dbb | ||
|
|
56284d8081 | ||
|
|
35ad6787f5 | ||
|
|
ca0db0ea03 | ||
|
|
03fcd0b3bb | ||
|
|
35da2a2e01 | ||
|
|
2329d9fb48 | ||
|
|
154ca89d2e | ||
|
|
449352f10e | ||
|
|
7c1826332f | ||
|
|
af2816c654 | ||
|
|
88be287f56 | ||
|
|
5513a5e205 | ||
|
|
e7023fa1da | ||
|
|
46550b6fd9 | ||
|
|
9454999946 | ||
|
|
7611ff348d | ||
|
|
187cf1e88c | ||
|
|
e1e532cff0 | ||
|
|
dfecec4fb7 | ||
|
|
c116f52a15 | ||
|
|
0b0b6429e1 | ||
|
|
f732c371a4 | ||
|
|
04c00459a2 | ||
|
|
5cee511ba5 | ||
|
|
399525a994 | ||
|
|
c075bd2719 | ||
|
|
208b83f295 | ||
|
|
ccb109a584 | ||
|
|
2918913341 | ||
|
|
a66176714d | ||
|
|
95642a1ebb | ||
|
|
726e06f8ef | ||
|
|
d96fe5d997 | ||
|
|
4ae611e5c5 | ||
|
|
1c938490c8 | ||
|
|
ba558db977 | ||
|
|
bf19fa23a6 | ||
|
|
66b77cbd0c | ||
|
|
10bfa980b7 | ||
|
|
9e46b4f7f7 | ||
|
|
3bf6172534 | ||
|
|
45581f0044 | ||
|
|
9ebb48b57a | ||
|
|
4e2dca3ba5 | ||
|
|
af6bdde59a | ||
|
|
fc1fb2b582 | ||
|
|
883b4ccbdb | ||
|
|
f91c9fe8b1 | ||
|
|
3ca6b80013 | ||
|
|
ee5ef758aa | ||
|
|
42fe158594 | ||
|
|
48427afe26 | ||
|
|
5c74583cb3 | ||
|
|
742ed362b6 | ||
|
|
44d340e48c | ||
|
|
2561448da0 | ||
|
|
86cabf5ea2 | ||
|
|
b5fc67a4f5 | ||
|
|
0b22a52bff | ||
|
|
da093c1609 | ||
|
|
c634be959b | ||
|
|
2139fa1b6f | ||
|
|
6784c9e1ee | ||
|
|
607d5ddbbf | ||
|
|
d588360bfe | ||
|
|
90f2c0c1b1 | ||
|
|
0d6e9b7196 | ||
|
|
8f90cc165a | ||
|
|
75758bc65f | ||
|
|
066e72a5fb | ||
|
|
c23e564e67 | ||
|
|
c0080255e3 | ||
|
|
3a3d3a2b86 | ||
|
|
79ef9d3fee | ||
|
|
da4597ee22 | ||
|
|
9f4ec1c14f | ||
|
|
4da6e32cfe | ||
|
|
7f1c4cb6db | ||
|
|
939fbca781 | ||
|
|
9ba175ae24 | ||
|
|
f7779a6302 | ||
|
|
05bdc91228 | ||
|
|
6d07b6ee59 | ||
|
|
1cf54bb5d3 | ||
|
|
21b4a4bc7b | ||
|
|
658f397297 | ||
|
|
38a0c329bb | ||
|
|
b0be21b8df | ||
|
|
97825a1994 | ||
|
|
13189f9e52 | ||
|
|
2a9f067522 | ||
|
|
ad01f6fdba | ||
|
|
b082611680 | ||
|
|
a36c479373 | ||
|
|
90a4f2a326 | ||
|
|
41ff1f2249 | ||
|
|
b20ce84763 | ||
|
|
875213d4a9 | ||
|
|
71b57652f0 | ||
|
|
834b86247e | ||
|
|
d8d3669cb3 | ||
|
|
940b170a31 | ||
|
|
55b93d0734 | ||
|
|
25ef3926d1 | ||
|
|
4d33bd5f9c | ||
|
|
f25e47258b | ||
|
|
a3c4ccbde0 | ||
|
|
b114534101 | ||
|
|
303f064ba9 | ||
|
|
e981e53b7f | ||
|
|
d850ef91f7 | ||
|
|
8701b586f3 | ||
|
|
9b1ba9a603 | ||
|
|
18c8a4eceb | ||
|
|
892553a457 | ||
|
|
50a9cc9b7b | ||
|
|
c300d15dae | ||
|
|
c076064636 |
@@ -197,6 +197,17 @@
|
|||||||
"bug",
|
"bug",
|
||||||
"code"
|
"code"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "rodrigorfk",
|
||||||
|
"name": "Rodrigo Fior Kuntzer",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/1995033?v=4",
|
||||||
|
"profile": "https://github.com/rodrigorfk",
|
||||||
|
"contributions": [
|
||||||
|
"code",
|
||||||
|
"test",
|
||||||
|
"bug"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"contributorsPerLine": 7,
|
"contributorsPerLine": 7,
|
||||||
|
|||||||
33
.github/workflows/auto-approve.yml
vendored
33
.github/workflows/auto-approve.yml
vendored
@@ -1,33 +0,0 @@
|
|||||||
name: Auto approve
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request_target
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
auto-approve:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: hmarr/auto-approve-action@v3
|
|
||||||
if: |
|
|
||||||
(
|
|
||||||
github.event.pull_request.user.login == 'dependabot[bot]' ||
|
|
||||||
github.event.pull_request.user.login == 'dependabot' ||
|
|
||||||
github.event.pull_request.user.login == 'dependabot-preview[bot]' ||
|
|
||||||
github.event.pull_request.user.login == 'dependabot-preview' ||
|
|
||||||
github.event.pull_request.user.login == 'renovate[bot]' ||
|
|
||||||
github.event.pull_request.user.login == 'renovate' ||
|
|
||||||
github.event.pull_request.user.login == 'github-actions[bot]'
|
|
||||||
)
|
|
||||||
&&
|
|
||||||
(
|
|
||||||
github.actor == 'dependabot[bot]' ||
|
|
||||||
github.actor == 'dependabot' ||
|
|
||||||
github.actor == 'dependabot-preview[bot]' ||
|
|
||||||
github.actor == 'dependabot-preview' ||
|
|
||||||
github.actor == 'renovate[bot]' ||
|
|
||||||
github.actor == 'renovate' ||
|
|
||||||
github.actor == 'github-actions[bot]'
|
|
||||||
)
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.PAT_TOKEN }}
|
|
||||||
7
.github/workflows/codacy-analysis.yml
vendored
7
.github/workflows/codacy-analysis.yml
vendored
@@ -17,6 +17,11 @@ on:
|
|||||||
schedule:
|
schedule:
|
||||||
- cron: '15 16 * * 2'
|
- cron: '15 16 * * 2'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
actions: read
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
codacy-security-scan:
|
codacy-security-scan:
|
||||||
# Cancel other workflows that are running for the same branch
|
# Cancel other workflows that are running for the same branch
|
||||||
@@ -51,6 +56,6 @@ jobs:
|
|||||||
# Upload the SARIF file generated in the previous step
|
# Upload the SARIF file generated in the previous step
|
||||||
- name: Upload SARIF results file
|
- name: Upload SARIF results file
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
uses: github/codeql-action/upload-sarif@v2
|
uses: github/codeql-action/upload-sarif@v3
|
||||||
with:
|
with:
|
||||||
sarif_file: results.sarif
|
sarif_file: results.sarif
|
||||||
|
|||||||
11
.github/workflows/codeql.yml
vendored
11
.github/workflows/codeql.yml
vendored
@@ -20,6 +20,11 @@ on:
|
|||||||
schedule:
|
schedule:
|
||||||
- cron: '44 20 * * 0'
|
- cron: '44 20 * * 0'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
actions: read
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
analyze:
|
analyze:
|
||||||
name: Analyze
|
name: Analyze
|
||||||
@@ -42,7 +47,7 @@ jobs:
|
|||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v2
|
uses: github/codeql-action/init@v3
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
@@ -56,7 +61,7 @@ jobs:
|
|||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
- name: Autobuild
|
- name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@v2
|
uses: github/codeql-action/autobuild@v3
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
||||||
@@ -69,6 +74,6 @@ jobs:
|
|||||||
# ./location_of_script_within_repo/buildscript.sh
|
# ./location_of_script_within_repo/buildscript.sh
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v2
|
uses: github/codeql-action/analyze@v3
|
||||||
with:
|
with:
|
||||||
category: "/language:${{matrix.language}}"
|
category: "/language:${{matrix.language}}"
|
||||||
|
|||||||
13
.github/workflows/greetings.yml
vendored
13
.github/workflows/greetings.yml
vendored
@@ -1,13 +0,0 @@
|
|||||||
name: Greetings
|
|
||||||
|
|
||||||
on: [pull_request_target, issues]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
greeting:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/first-interaction@v1
|
|
||||||
with:
|
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
issue-message: "Thanks for reporting this issue, don't forget to star this project if you haven't already to help us reach a wider audience."
|
|
||||||
pr-message: "Thanks for implementing a fix, could you ensure that the test covers your changes if applicable."
|
|
||||||
@@ -1,4 +1,8 @@
|
|||||||
name: Issue Comment Test
|
name: Issue Comment Job Example
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
on:
|
on:
|
||||||
issue_comment:
|
issue_comment:
|
||||||
|
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
name: Manual Test
|
name: Manual Triggered Job Example
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
name: Test changed-files
|
name: Test changed-files
|
||||||
@@ -1,4 +1,7 @@
|
|||||||
name: Matrix Test
|
name: Matrix Example
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
@@ -8,10 +11,10 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
changed-files:
|
changed-files:
|
||||||
name: Get changes
|
name: Get changed files
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
matrix: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -22,18 +25,17 @@ jobs:
|
|||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
json: true
|
json: true
|
||||||
quotepath: false
|
escape_json: false
|
||||||
- name: List all changed files
|
- name: List all changed files
|
||||||
run: echo '${{ steps.changed-files.outputs.all_changed_files }}'
|
run: echo '${{ steps.changed-files.outputs.all_changed_files }}'
|
||||||
- id: set-matrix
|
|
||||||
run: echo "matrix={\"files\":${{ steps.changed-files.outputs.all_changed_files }}}" >> "$GITHUB_OUTPUT"
|
|
||||||
|
|
||||||
matrix-job:
|
matrix-job:
|
||||||
name: Run Matrix Job
|
name: Run Matrix Job
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [changed-files]
|
needs: [changed-files]
|
||||||
strategy:
|
strategy:
|
||||||
matrix: ${{ fromJSON(needs.changed-files.outputs.matrix) }}
|
matrix:
|
||||||
|
files: ${{ fromJSON(needs.changed-files.outputs.matrix) }}
|
||||||
max-parallel: 4
|
max-parallel: 4
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
67
.github/workflows/multi-job-example.yml
vendored
Normal file
67
.github/workflows/multi-job-example.yml
vendored
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
name: Multi Job Example
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "**"
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- "**"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
changed-files:
|
||||||
|
name: Get changed files
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
all_changed_files: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Get changed files
|
||||||
|
id: changed-files
|
||||||
|
uses: ./
|
||||||
|
- name: List all changed files
|
||||||
|
run: echo '${{ steps.changed-files.outputs.all_changed_files }}'
|
||||||
|
|
||||||
|
view-changed-files:
|
||||||
|
name: View all changed files
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [changed-files]
|
||||||
|
steps:
|
||||||
|
- name: List all changed files
|
||||||
|
run: |
|
||||||
|
echo '${{ needs.changed-files.outputs.all_changed_files }}'
|
||||||
|
|
||||||
|
|
||||||
|
changed-files-rest-api:
|
||||||
|
name: Get changed files using REST API
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
all_changed_files: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Get changed files
|
||||||
|
id: changed-files
|
||||||
|
continue-on-error: ${{ github.event_name == 'push' }}
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
use_rest_api: true
|
||||||
|
- name: List all changed files
|
||||||
|
run: echo '${{ steps.changed-files.outputs.all_changed_files }}'
|
||||||
|
|
||||||
|
view-changed-files-rest-api:
|
||||||
|
name: View all changed files using REST API
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [changed-files-rest-api]
|
||||||
|
steps:
|
||||||
|
- name: List all changed files
|
||||||
|
run: |
|
||||||
|
echo '${{ needs.changed-files-rest-api.outputs.all_changed_files }}'
|
||||||
7
.github/workflows/sync-release-version.yml
vendored
7
.github/workflows/sync-release-version.yml
vendored
@@ -1,4 +1,9 @@
|
|||||||
name: Update release version.
|
name: Update release version
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
on:
|
on:
|
||||||
release:
|
release:
|
||||||
types: [published]
|
types: [published]
|
||||||
|
|||||||
98
.github/workflows/test.yml
vendored
98
.github/workflows/test.yml
vendored
@@ -1,12 +1,13 @@
|
|||||||
name: CI
|
name: CI
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- "**"
|
- "**"
|
||||||
pull_request_review:
|
|
||||||
types: [edited, dismissed, submitted]
|
|
||||||
pull_request_target:
|
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- assigned
|
- assigned
|
||||||
@@ -27,20 +28,9 @@ on:
|
|||||||
- auto_merge_enabled
|
- auto_merge_enabled
|
||||||
- auto_merge_disabled
|
- auto_merge_disabled
|
||||||
branches:
|
branches:
|
||||||
- main
|
- "**"
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
shellcheck:
|
|
||||||
name: Run shellcheck
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout branch
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: shellcheck
|
|
||||||
uses: reviewdog/action-shellcheck@v1.19
|
|
||||||
|
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
@@ -53,7 +43,7 @@ jobs:
|
|||||||
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
||||||
|
|
||||||
- name: Use Node.js 20.x
|
- name: Use Node.js 20.x
|
||||||
uses: actions/setup-node@v4.0.0
|
uses: actions/setup-node@v4.0.1
|
||||||
with:
|
with:
|
||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
node-version: '20.x'
|
node-version: '20.x'
|
||||||
@@ -68,7 +58,7 @@ jobs:
|
|||||||
yarn install
|
yarn install
|
||||||
|
|
||||||
- name: Run eslint on changed files
|
- name: Run eslint on changed files
|
||||||
uses: tj-actions/eslint-changed-files@v21
|
uses: tj-actions/eslint-changed-files@v23
|
||||||
if: github.event_name == 'pull_request'
|
if: github.event_name == 'pull_request'
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.PAT_TOKEN }}
|
token: ${{ secrets.PAT_TOKEN }}
|
||||||
@@ -80,7 +70,7 @@ jobs:
|
|||||||
yarn all
|
yarn all
|
||||||
|
|
||||||
- name: Verify Changed files
|
- name: Verify Changed files
|
||||||
uses: tj-actions/verify-changed-files@v16
|
uses: tj-actions/verify-changed-files@v17
|
||||||
id: changed_files
|
id: changed_files
|
||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
@@ -286,11 +276,15 @@ jobs:
|
|||||||
shell:
|
shell:
|
||||||
bash
|
bash
|
||||||
|
|
||||||
test-unset-github-output-env:
|
test-using-branch-names-for-base-sha-and-sha-inputs:
|
||||||
name: Test unset GITHUB_OUTPUT env
|
name: Test using branch names for base_sha and sha inputs
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: build
|
needs: build
|
||||||
if: needs.build.outputs.files_changed != 'true'
|
if: |
|
||||||
|
(
|
||||||
|
github.event_name == 'push' ||
|
||||||
|
github.event_name == 'pull_request'
|
||||||
|
) && needs.build.outputs.files_changed != 'true'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout branch
|
- name: Checkout branch
|
||||||
@@ -304,12 +298,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: build-assets
|
name: build-assets
|
||||||
|
|
||||||
- name: Run changed-files with unset GITHUB_OUTPUT env
|
- name: Run changed-files with main as the base_sha
|
||||||
id: changed-files
|
id: changed-files
|
||||||
continue-on-error: true
|
|
||||||
uses: ./
|
uses: ./
|
||||||
env:
|
with:
|
||||||
GITHUB_OUTPUT: ""
|
base_sha: main
|
||||||
|
|
||||||
- name: Show output
|
- name: Show output
|
||||||
run: |
|
run: |
|
||||||
@@ -652,6 +645,29 @@ jobs:
|
|||||||
shell:
|
shell:
|
||||||
bash
|
bash
|
||||||
|
|
||||||
|
- name: Run changed-files with files_yaml, json and write_output_files
|
||||||
|
id: changed-files-json-write-output-files
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
files_yaml: |
|
||||||
|
test:
|
||||||
|
- .github/workflows/test.yml
|
||||||
|
json: true
|
||||||
|
write_output_files: true
|
||||||
|
|
||||||
|
- name: Show all outputs
|
||||||
|
run: |
|
||||||
|
echo "${{ toJSON(steps.changed-files-json-write-output-files.outputs) }}"
|
||||||
|
shell:
|
||||||
|
bash
|
||||||
|
|
||||||
|
- name: Show all_changed_files output and list .github/outputs
|
||||||
|
run: |
|
||||||
|
echo '${{ toJSON(steps.changed-files-json-write-output-files.outputs.test_all_changed_files) }}'
|
||||||
|
cat .github/outputs/test_all_changed_files.json
|
||||||
|
shell:
|
||||||
|
bash
|
||||||
|
|
||||||
test-recover-deleted-file:
|
test-recover-deleted-file:
|
||||||
name: Test changed-files recover deleted file
|
name: Test changed-files recover deleted file
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -812,6 +828,36 @@ jobs:
|
|||||||
cat "deleted_files/test/test deleted.txt"
|
cat "deleted_files/test/test deleted.txt"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
- name: Run changed-files with recover_deleted_files for an expected git submodule file
|
||||||
|
id: changed-files-recover-deleted-files-within-submodule
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
base_sha: "3be651e99d3d4eae395694f6c6f3b9d18457f6c8"
|
||||||
|
sha: "d90c240f2ad4ec04d8f0f48e5ac290ad96ebe850"
|
||||||
|
recover_deleted_files: true
|
||||||
|
fetch_depth: 60000
|
||||||
|
|
||||||
|
- name: Show output
|
||||||
|
run: |
|
||||||
|
echo "${{ toJSON(steps.changed-files-recover-deleted-files-within-submodule.outputs) }}"
|
||||||
|
shell:
|
||||||
|
bash
|
||||||
|
|
||||||
|
- name: Verify deleted files
|
||||||
|
if: steps.changed-files-recover-deleted-files-within-submodule.outputs.deleted_files != 'test/demo/.github/FUNDING.yml'
|
||||||
|
run: |
|
||||||
|
echo "Expected: (test/demo/.github/FUNDING.yml) got ${{ steps.changed-files-recover-deleted-files-within-submodule.outputs.deleted_files }}"
|
||||||
|
exit 1
|
||||||
|
- name: Verify that test/demo/.github/FUNDING.yml is restored
|
||||||
|
run: |
|
||||||
|
if [ ! -f "test/demo/.github/FUNDING.yml" ]; then
|
||||||
|
echo "Expected: (test/demo/.github/FUNDING.yml) to exist"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
cat "test/demo/.github/FUNDING.yml"
|
||||||
|
rm "test/demo/.github/FUNDING.yml"
|
||||||
|
fi
|
||||||
|
|
||||||
test-dir-names-deleted-files-include-only-deleted-dirs-single-file:
|
test-dir-names-deleted-files-include-only-deleted-dirs-single-file:
|
||||||
name: Test dir names deleted files include only deleted dirs single file
|
name: Test dir names deleted files include only deleted dirs single file
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -1941,7 +1987,7 @@ jobs:
|
|||||||
bash
|
bash
|
||||||
- name: Get branch name
|
- name: Get branch name
|
||||||
id: branch-name
|
id: branch-name
|
||||||
uses: tj-actions/branch-names@v7
|
uses: tj-actions/branch-names@v8
|
||||||
if: github.event_name == 'pull_request' && matrix.fetch-depth == 0
|
if: github.event_name == 'pull_request' && matrix.fetch-depth == 0
|
||||||
- uses: nrwl/nx-set-shas@v4
|
- uses: nrwl/nx-set-shas@v4
|
||||||
id: last_successful_commit
|
id: last_successful_commit
|
||||||
|
|||||||
9
.github/workflows/update-readme.yml
vendored
9
.github/workflows/update-readme.yml
vendored
@@ -1,5 +1,9 @@
|
|||||||
name: Format README.md
|
name: Format README.md
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
@@ -15,12 +19,15 @@ jobs:
|
|||||||
|
|
||||||
- name: Run auto-doc
|
- name: Run auto-doc
|
||||||
uses: tj-actions/auto-doc@v3
|
uses: tj-actions/auto-doc@v3
|
||||||
|
with:
|
||||||
|
use_code_blocks: true
|
||||||
|
use_major_version: true
|
||||||
|
|
||||||
- name: Run remark
|
- name: Run remark
|
||||||
uses: tj-actions/remark@v3
|
uses: tj-actions/remark@v3
|
||||||
|
|
||||||
- name: Verify Changed files
|
- name: Verify Changed files
|
||||||
uses: tj-actions/verify-changed-files@v16
|
uses: tj-actions/verify-changed-files@v17
|
||||||
id: verify_changed_files
|
id: verify_changed_files
|
||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
|
|||||||
20
.github/workflows/workflow-run-example.yml
vendored
Normal file
20
.github/workflows/workflow-run-example.yml
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
name: Workflow Run Example
|
||||||
|
on:
|
||||||
|
workflow_run:
|
||||||
|
workflows: [Matrix Test]
|
||||||
|
types: [completed]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
on-success:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
||||||
|
steps:
|
||||||
|
- run: echo 'The triggering workflow passed'
|
||||||
|
on-failure:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
|
||||||
|
steps:
|
||||||
|
- run: echo 'The triggering workflow failed'
|
||||||
503
HISTORY.md
503
HISTORY.md
@@ -1,5 +1,508 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
# [42.0.0](https://github.com/tj-actions/changed-files/compare/v41.1.2...v42.0.0) - (2024-01-18)
|
||||||
|
|
||||||
|
## <!-- 0 -->🚀 Features
|
||||||
|
|
||||||
|
- Add support for include/exclude all nested files when a directory is specified and ends with a slash ([#1873](https://github.com/tj-actions/changed-files/issues/1873)) ([ae82ed4](https://github.com/tj-actions/changed-files/commit/ae82ed4ae04587b665efad2f206578aa6f0e8539)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 1 -->🐛 Bug Fixes
|
||||||
|
|
||||||
|
- Update input warning ([#1870](https://github.com/tj-actions/changed-files/issues/1870)) ([6c9dcea](https://github.com/tj-actions/changed-files/commit/6c9dcea4432fd0eb2f3e07c9149eab2807ce44b2)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 18 -->📝 Rename
|
||||||
|
|
||||||
|
- Unsupported REST API inputs constant name ([#1872](https://github.com/tj-actions/changed-files/issues/1872)) ([cbd5907](https://github.com/tj-actions/changed-files/commit/cbd59070e8276b539ecdfa0f2316db7b1599ea0f)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 7 -->⚙️ Miscellaneous Tasks
|
||||||
|
|
||||||
|
- **deps:** Update dependency prettier to v3.2.4 ([79b060d](https://github.com/tj-actions/changed-files/commit/79b060d4450764e6b54a73696c2d99134757db95)) - (renovate[bot])
|
||||||
|
|
||||||
|
## <!-- 9 -->⬆️ Upgrades
|
||||||
|
|
||||||
|
- Upgraded to v41.1.2 ([#1869](https://github.com/tj-actions/changed-files/issues/1869))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([434b67e](https://github.com/tj-actions/changed-files/commit/434b67ebc3051662cf28de12b8a7adb77aea522a)) - (tj-actions[bot])
|
||||||
|
|
||||||
|
# [41.1.2](https://github.com/tj-actions/changed-files/compare/v41.1.1...v41.1.2) - (2024-01-17)
|
||||||
|
|
||||||
|
## <!-- 0 -->🚀 Features
|
||||||
|
|
||||||
|
- Enhance error handling and working directory resolution ([#1859](https://github.com/tj-actions/changed-files/issues/1859)) ([a60bf37](https://github.com/tj-actions/changed-files/commit/a60bf3759e069549b60c8da1284ec83e0398a1a4)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 1 -->🐛 Bug Fixes
|
||||||
|
|
||||||
|
- Bug with incorrect action path ([#1866](https://github.com/tj-actions/changed-files/issues/1866)) ([3f81899](https://github.com/tj-actions/changed-files/commit/3f8189989ba6fd9b3b9593ffe650236b3f1fcb55)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 7 -->⚙️ Miscellaneous Tasks
|
||||||
|
|
||||||
|
- **deps:** Update dependency @types/node to v20.11.5 ([cbda684](https://github.com/tj-actions/changed-files/commit/cbda684547adc8c052d50711417fa61b428a9f88)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency prettier to v3.2.3 ([67a1f54](https://github.com/tj-actions/changed-files/commit/67a1f54f6f5ec7ee87c57eb7876a7d6dfdcc59a1)) - (renovate[bot])
|
||||||
|
- **deps:** Update tj-actions/eslint-changed-files action to v22 ([#1864](https://github.com/tj-actions/changed-files/issues/1864)) ([99248a4](https://github.com/tj-actions/changed-files/commit/99248a443855d73284abf52520f897dba851b914)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/node to v20.11.4 ([8787431](https://github.com/tj-actions/changed-files/commit/878743189ba0ba42d467a736923b07102f0e348c)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/node to v20.11.3 ([98d1d84](https://github.com/tj-actions/changed-files/commit/98d1d84e2f7a404c425df4e44dceb74a03920ac8)) - (renovate[bot])
|
||||||
|
- **deps:** Update typescript-eslint monorepo to v6.19.0 ([bc46e4c](https://github.com/tj-actions/changed-files/commit/bc46e4c4222c3926a70378d183f0b387d3a9e9a8)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/node to v20.11.2 ([fba4067](https://github.com/tj-actions/changed-files/commit/fba40673489d49e860c15a444c134d887ead1f3a)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/node to v20.11.1 ([e4b8674](https://github.com/tj-actions/changed-files/commit/e4b86747326bc58eb230d62188ebdd66b73721a9)) - (renovate[bot])
|
||||||
|
- **deps:** Lock file maintenance ([bc2b5ae](https://github.com/tj-actions/changed-files/commit/bc2b5aef20add66cbe21d1093f0f1d37a353d376)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency prettier to v3.2.2 ([63c36a5](https://github.com/tj-actions/changed-files/commit/63c36a563a30544b4c03a8426277dca4b00e4fd1)) - (renovate[bot])
|
||||||
|
|
||||||
|
## <!-- 9 -->⬆️ Upgrades
|
||||||
|
|
||||||
|
- Upgraded to v41.1.1 ([#1854](https://github.com/tj-actions/changed-files/issues/1854))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([44b7750](https://github.com/tj-actions/changed-files/commit/44b77505fe3f2c6d0a76f72a4ef512e7c2ba0b6a)) - (tj-actions[bot])
|
||||||
|
|
||||||
|
# [41.1.1](https://github.com/tj-actions/changed-files/compare/v41.1.0...v41.1.1) - (2024-01-13)
|
||||||
|
|
||||||
|
## <!-- 1 -->🐛 Bug Fixes
|
||||||
|
|
||||||
|
- Bug with inaccurate warnings ([#1853](https://github.com/tj-actions/changed-files/issues/1853)) ([62f4729](https://github.com/tj-actions/changed-files/commit/62f4729b5df35e6e0e01265fa70a82ccaf196b4b)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 9 -->⬆️ Upgrades
|
||||||
|
|
||||||
|
- Upgraded to v41.1.0 ([#1852](https://github.com/tj-actions/changed-files/issues/1852))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([e0579ab](https://github.com/tj-actions/changed-files/commit/e0579abf95abec8042468976c7822e6867542199)) - (tj-actions[bot])
|
||||||
|
|
||||||
|
# [41.1.0](https://github.com/tj-actions/changed-files/compare/v41.0.1...v41.1.0) - (2024-01-13)
|
||||||
|
|
||||||
|
## <!-- 0 -->🚀 Features
|
||||||
|
|
||||||
|
- Add support for forcing the use of GitHub’s REST API ([#1849](https://github.com/tj-actions/changed-files/issues/1849)) ([0ca1c07](https://github.com/tj-actions/changed-files/commit/0ca1c07b47b66abe421382a891da70a506e60e8a)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 1 -->🐛 Bug Fixes
|
||||||
|
|
||||||
|
- Permission with release workflow ([#1851](https://github.com/tj-actions/changed-files/issues/1851)) ([8e0194b](https://github.com/tj-actions/changed-files/commit/8e0194b29bc4bb6dd2338b6b7b915c56c2df6f58)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 26 -->🔄 Update
|
||||||
|
|
||||||
|
- Updated README.md ([#1850](https://github.com/tj-actions/changed-files/issues/1850))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([3649d28](https://github.com/tj-actions/changed-files/commit/3649d2842d46e7cc679c204d917887f7821cf08a)) - (tj-actions[bot])
|
||||||
|
- Updated README.md ([#1830](https://github.com/tj-actions/changed-files/issues/1830))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([3fbf5fb](https://github.com/tj-actions/changed-files/commit/3fbf5fb588c7e1fdbc140668150a2b725984c6ed)) - (tj-actions[bot])
|
||||||
|
- Update README.md ([9523067](https://github.com/tj-actions/changed-files/commit/95230678db8c15d57cd678fbcd2a7e87e83ac1e1)) - (Tonye Jack)
|
||||||
|
- Update README.md ([032add1](https://github.com/tj-actions/changed-files/commit/032add13e8e88878dc3238258baee58dcb4a528a)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 7 -->⚙️ Miscellaneous Tasks
|
||||||
|
|
||||||
|
- Update top level workflow permissions ([#1848](https://github.com/tj-actions/changed-files/issues/1848)) ([a57f4dc](https://github.com/tj-actions/changed-files/commit/a57f4dcc814fa55691c9ee5fc6e07c7487cb69f1)) - (Tonye Jack)
|
||||||
|
- **deps:** Update dependency prettier to v3.2.1 ([9c39b0b](https://github.com/tj-actions/changed-files/commit/9c39b0b6e9d3a1e534a35da2e6142c8b1d0204b3)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency eslint-plugin-jest to v27.6.3 ([8b141f3](https://github.com/tj-actions/changed-files/commit/8b141f390680a108c54963421dbc9ed587516859)) - (renovate[bot])
|
||||||
|
- Create multi-job-test.yml ([#1843](https://github.com/tj-actions/changed-files/issues/1843)) ([17e07d8](https://github.com/tj-actions/changed-files/commit/17e07d8bc032c41929a28e4ac0180f5fd41e62e8)) - (Tonye Jack)
|
||||||
|
- Update warning message ([#1845](https://github.com/tj-actions/changed-files/issues/1845)) ([13fa1c0](https://github.com/tj-actions/changed-files/commit/13fa1c06fc72cd769f43877df4deb2fcef0070bf)) - (Tonye Jack)
|
||||||
|
- **deps:** Update dependency prettier to v3.2.0 ([0deb29d](https://github.com/tj-actions/changed-files/commit/0deb29d192a79307172c8ca2af53b9163e1f2dce)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/node to v20.11.0 ([28267ee](https://github.com/tj-actions/changed-files/commit/28267ee8b7e9d0a1510577b3da5c95991e566f8d)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency eslint-plugin-jest to v27.6.2 ([094d344](https://github.com/tj-actions/changed-files/commit/094d3441f851cdd60b3184c559065cff58998103)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency eslint-plugin-prettier to v5.1.3 ([aeec36b](https://github.com/tj-actions/changed-files/commit/aeec36b0354dca21f43136a2a5be79815ad013b9)) - (renovate[bot])
|
||||||
|
- **deps-dev:** Bump @types/node from 20.10.7 to 20.10.8 ([#1836](https://github.com/tj-actions/changed-files/issues/1836)) ([2d0270c](https://github.com/tj-actions/changed-files/commit/2d0270c489bf57145dd4a63d0a5fcf35a7147bc3)) - (dependabot[bot])
|
||||||
|
- **deps:** Update typescript-eslint monorepo to v6.18.1 ([0e0adfa](https://github.com/tj-actions/changed-files/commit/0e0adfa0d3cc3663f8db2d833bbec96034e98250)) - (renovate[bot])
|
||||||
|
- Update jest.config.js ([#1834](https://github.com/tj-actions/changed-files/issues/1834)) ([5313e6b](https://github.com/tj-actions/changed-files/commit/5313e6bbe36db02444adb6db8803c3fb020fbeef)) - (Tonye Jack)
|
||||||
|
- **deps:** Lock file maintenance ([54789be](https://github.com/tj-actions/changed-files/commit/54789be3a182749c98b3750327225ef16ae72b85)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/node to v20.10.7 ([1675238](https://github.com/tj-actions/changed-files/commit/1675238cfd53ec058721786adb67a77f56f46987)) - (renovate[bot])
|
||||||
|
- Create workflow-run-test.yml ([#1828](https://github.com/tj-actions/changed-files/issues/1828)) ([fdccafb](https://github.com/tj-actions/changed-files/commit/fdccafbb6e5c278dc3360f8a44f7c2878206751f)) - (Tonye Jack)
|
||||||
|
- **deps:** Update typescript-eslint monorepo to v6.18.0 ([0e8d796](https://github.com/tj-actions/changed-files/commit/0e8d796ee02804f613950c68e90685e43f22c9d5)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency eslint-plugin-jest to v27.6.1 ([0c6f2ac](https://github.com/tj-actions/changed-files/commit/0c6f2ac4885216b1830ecbcc3573209980c97716)) - (renovate[bot])
|
||||||
|
- **deps:** Update typescript-eslint monorepo to v6.17.0 ([1db97ad](https://github.com/tj-actions/changed-files/commit/1db97adba438afdc3741c78fd02aa2ac621332b0)) - (renovate[bot])
|
||||||
|
- **deps:** Lock file maintenance ([fb8f6db](https://github.com/tj-actions/changed-files/commit/fb8f6db383582a9d4ee2fadc1601db53b2fe1c2b)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/node to v20.10.6 ([efd7ece](https://github.com/tj-actions/changed-files/commit/efd7ecef11e1ce94fc5121243c09ad2be618d175)) - (renovate[bot])
|
||||||
|
- **deps:** Update tj-actions/verify-changed-files action to v17 ([#1820](https://github.com/tj-actions/changed-files/issues/1820)) ([4f8e12c](https://github.com/tj-actions/changed-files/commit/4f8e12c0984394b03e7c4015292f8f644e2e5426)) - (renovate[bot])
|
||||||
|
- **deps:** Update typescript-eslint monorepo to v6.16.0 ([0f0747e](https://github.com/tj-actions/changed-files/commit/0f0747e79dd8b1e79730cb9aeb9adbc1d45b79da)) - (renovate[bot])
|
||||||
|
- Update matrix-test.yml ([#1814](https://github.com/tj-actions/changed-files/issues/1814)) ([0c2a758](https://github.com/tj-actions/changed-files/commit/0c2a758b81c9fe6c9dc0b17f46d87e68707e8054)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 9 -->⬆️ Upgrades
|
||||||
|
|
||||||
|
- Upgraded to v41.0.1 ([#1816](https://github.com/tj-actions/changed-files/issues/1816))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([1b6d7b6](https://github.com/tj-actions/changed-files/commit/1b6d7b6fb62c81ae85b9114bbb15ebeb21c2833d)) - (tj-actions[bot])
|
||||||
|
|
||||||
|
# [41.0.1](https://github.com/tj-actions/changed-files/compare/v41.0.0...v41.0.1) - (2023-12-24)
|
||||||
|
|
||||||
|
## <!-- 1 -->🐛 Bug Fixes
|
||||||
|
|
||||||
|
- Update characters escaped by safe output ([#1815](https://github.com/tj-actions/changed-files/issues/1815)) ([716b1e1](https://github.com/tj-actions/changed-files/commit/716b1e13042866565e00e85fd4ec490e186c4a2f)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 7 -->⚙️ Miscellaneous Tasks
|
||||||
|
|
||||||
|
- **deps:** Update dependency eslint-plugin-prettier to v5.1.2 ([7aaf10d](https://github.com/tj-actions/changed-files/commit/7aaf10d9eef19e8a2432a967b88124171152caaf)) - (renovate[bot])
|
||||||
|
|
||||||
|
## <!-- 9 -->⬆️ Upgrades
|
||||||
|
|
||||||
|
- Upgraded to v41 ([#1811](https://github.com/tj-actions/changed-files/issues/1811))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([cc08e17](https://github.com/tj-actions/changed-files/commit/cc08e170f4447237bcaf8acaacfa615b9cb86612)) - (tj-actions[bot])
|
||||||
|
|
||||||
|
# [41.0.0](https://github.com/tj-actions/changed-files/compare/v40.2.3...v41.0.0) - (2023-12-23)
|
||||||
|
|
||||||
|
## <!-- 1 -->🐛 Bug Fixes
|
||||||
|
|
||||||
|
- Update safe output regex and the docs ([#1805](https://github.com/tj-actions/changed-files/issues/1805)) ([ff2f6e6](https://github.com/tj-actions/changed-files/commit/ff2f6e6b91913a7be42be1b5917330fe442f2ede)) - (tj-actions[bot])
|
||||||
|
|
||||||
|
## <!-- 11 -->⏪ Reverts
|
||||||
|
|
||||||
|
- Revert "chore(deps): update actions/download-artifact action to v4" ([#1806](https://github.com/tj-actions/changed-files/issues/1806))
|
||||||
|
|
||||||
|
([4f573fe](https://github.com/tj-actions/changed-files/commit/4f573fed06c9abb5da4c72f75c1c320718114ff7)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 26 -->🔄 Update
|
||||||
|
|
||||||
|
- Update README.md ([6e79d6e](https://github.com/tj-actions/changed-files/commit/6e79d6e3dbe48946636c2939c80ff5c84ff7f9fe)) - (Tonye Jack)
|
||||||
|
- Update README.md ([d13ac19](https://github.com/tj-actions/changed-files/commit/d13ac1942fb3c1d7d32017915bb082cebe8a272a)) - (Tonye Jack)
|
||||||
|
- Update README.md ([bb89f97](https://github.com/tj-actions/changed-files/commit/bb89f97963be96b39e1a303e64d5b91a1af4c340)) - (Tonye Jack)
|
||||||
|
- Updated README.md ([#1810](https://github.com/tj-actions/changed-files/issues/1810))
|
||||||
|
|
||||||
|
Co-authored-by: renovate[bot] <renovate[bot]@users.noreply.github.com> ([1864078](https://github.com/tj-actions/changed-files/commit/1864078d0afadf68ba489e671ecc09fefe8b70ab)) - (tj-actions[bot])
|
||||||
|
- Update README.md ([#1808](https://github.com/tj-actions/changed-files/issues/1808))
|
||||||
|
|
||||||
|
([47371c5](https://github.com/tj-actions/changed-files/commit/47371c50e97c089212d9eb92ca26c8453224e78e)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 30 -->📝 Other
|
||||||
|
|
||||||
|
- Merge pull request from GHSA-mcph-m25j-8j63
|
||||||
|
|
||||||
|
* feat: add `safe_output` input enabled by default
|
||||||
|
|
||||||
|
* fix: migrate README to safe uses of interpolation
|
||||||
|
|
||||||
|
* fix: README `uses` typo
|
||||||
|
|
||||||
|
* fix: README examples to account for newlines
|
||||||
|
|
||||||
|
* fix: README examples missing `safe_output`
|
||||||
|
|
||||||
|
* fix: remove sanitization of `'`
|
||||||
|
|
||||||
|
* fix: also sanitize `|&;` ([0102c07](https://github.com/tj-actions/changed-files/commit/0102c07446a3cad972f4afcbd0ee4dbc4b6d2d1b)) - (Jorge)
|
||||||
|
|
||||||
|
## <!-- 7 -->⚙️ Miscellaneous Tasks
|
||||||
|
|
||||||
|
- **deps:** Lock file maintenance ([f495a03](https://github.com/tj-actions/changed-files/commit/f495a0321d3fffa62da2573adf70b77d5eb2f57a)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency eslint-plugin-prettier to v5.1.1 ([089842a](https://github.com/tj-actions/changed-files/commit/089842a7a899531f61a45ef6ea69c485e1d62dbe)) - (renovate[bot])
|
||||||
|
- **deps:** Lock file maintenance ([787db06](https://github.com/tj-actions/changed-files/commit/787db0612e783421667a00319cf394b649682c4c)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency eslint-plugin-prettier to v5.1.0 ([4ef6b56](https://github.com/tj-actions/changed-files/commit/4ef6b56482141a958bd3efb05520e4df9ecf4147)) - (renovate[bot])
|
||||||
|
- **deps:** Update typescript-eslint monorepo to v6.15.0 ([c9ae347](https://github.com/tj-actions/changed-files/commit/c9ae347dbba64d95d83f36a0568e0e25a688dd1f)) - (renovate[bot])
|
||||||
|
|
||||||
|
## <!-- 9 -->⬆️ Upgrades
|
||||||
|
|
||||||
|
- Upgraded to v40.2.3 ([#1800](https://github.com/tj-actions/changed-files/issues/1800))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com>
|
||||||
|
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com> ([f9480db](https://github.com/tj-actions/changed-files/commit/f9480db177263c95588c5d9dae7c78f97d39242a)) - (tj-actions[bot])
|
||||||
|
|
||||||
|
# [40.2.3](https://github.com/tj-actions/changed-files/compare/v40.2.2...v40.2.3) - (2023-12-18)
|
||||||
|
|
||||||
|
## <!-- 16 -->➕ Add
|
||||||
|
|
||||||
|
- Added missing changes and modified dist assets.
|
||||||
|
([af2816c](https://github.com/tj-actions/changed-files/commit/af2816c65436325c50621100d67f6e853cd1b0f1)) - (GitHub Action)
|
||||||
|
|
||||||
|
## <!-- 26 -->🔄 Update
|
||||||
|
|
||||||
|
- Update README.md ([35da2a2](https://github.com/tj-actions/changed-files/commit/35da2a2e0191eb945214321cc664869c14bb417d)) - (Tonye Jack)
|
||||||
|
- Update README.md ([e7023fa](https://github.com/tj-actions/changed-files/commit/e7023fa1da70371f80732e85962d42429dbb753f)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 7 -->⚙️ Miscellaneous Tasks
|
||||||
|
|
||||||
|
- **deps:** Update actions/setup-node action to v4.0.1 ([56284d8](https://github.com/tj-actions/changed-files/commit/56284d80811fb5963a972b438f2870f175e5b7c8)) - (renovate[bot])
|
||||||
|
- **deps:** Lock file maintenance ([35ad678](https://github.com/tj-actions/changed-files/commit/35ad6787f51ccf58acdbbb0fa3a218043189e04a)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/node to v20.10.5 ([ca0db0e](https://github.com/tj-actions/changed-files/commit/ca0db0ea03dfadeb55abbfe75f0f2a409c2b63a2)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency eslint to v8.56.0 ([03fcd0b](https://github.com/tj-actions/changed-files/commit/03fcd0b3bbebef7d94f2dd168773ff4cfe07e4a8)) - (renovate[bot])
|
||||||
|
- **deps:** Lock file maintenance ([2329d9f](https://github.com/tj-actions/changed-files/commit/2329d9fb48d2d2dec879a4880f6a786dabc3b600)) - (renovate[bot])
|
||||||
|
- **deps:** Update actions/download-artifact action to v4 ([#1793](https://github.com/tj-actions/changed-files/issues/1793)) ([154ca89](https://github.com/tj-actions/changed-files/commit/154ca89d2ee4f46393b1d62a52384c81606c56c1)) - (renovate[bot])
|
||||||
|
- **deps:** Update github/codeql-action action to v3 ([#1792](https://github.com/tj-actions/changed-files/issues/1792)) ([449352f](https://github.com/tj-actions/changed-files/commit/449352f10e90ac442b572b634237087e2deb2650)) - (renovate[bot])
|
||||||
|
- **deps:** Update typescript-eslint monorepo to v6.14.0 ([7c18263](https://github.com/tj-actions/changed-files/commit/7c1826332f68b8fda7e96b7897dda706c8c7ade8)) - (renovate[bot])
|
||||||
|
- **deps:** Lock file maintenance ([88be287](https://github.com/tj-actions/changed-files/commit/88be287f562aea237fd7361d4c2af5c75bc4d9aa)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency prettier to v3.1.1 ([5513a5e](https://github.com/tj-actions/changed-files/commit/5513a5e205776f7ce167db86c93107b21826247e)) - (renovate[bot])
|
||||||
|
|
||||||
|
## <!-- 9 -->⬆️ Upgrades
|
||||||
|
|
||||||
|
- Upgraded to v40.2.2 ([#1787](https://github.com/tj-actions/changed-files/issues/1787))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([46550b6](https://github.com/tj-actions/changed-files/commit/46550b6fd9d874e06d58f846c7f42cc7b84e4aba)) - (tj-actions[bot])
|
||||||
|
|
||||||
|
# [40.2.2](https://github.com/tj-actions/changed-files/compare/v40.2.1...v40.2.2) - (2023-12-10)
|
||||||
|
|
||||||
|
## <!-- 1 -->🐛 Bug Fixes
|
||||||
|
|
||||||
|
- Bug recovering deleted files for submodules ([#1784](https://github.com/tj-actions/changed-files/issues/1784)) ([9454999](https://github.com/tj-actions/changed-files/commit/94549999469dbfa032becf298d95c87a14c34394)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 17 -->➖ Remove
|
||||||
|
|
||||||
|
- Deleted .github/workflows/auto-approve.yml ([a661767](https://github.com/tj-actions/changed-files/commit/a66176714d5d018bc975bf0246c427135def756c)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 26 -->🔄 Update
|
||||||
|
|
||||||
|
- Updated README.md ([#1786](https://github.com/tj-actions/changed-files/issues/1786))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([7611ff3](https://github.com/tj-actions/changed-files/commit/7611ff348df4d0d46887198cda7203e6fc5ffa80)) - (tj-actions[bot])
|
||||||
|
- Update README.md ([c116f52](https://github.com/tj-actions/changed-files/commit/c116f52a1566bda08e9782a74c333a21270cf952)) - (Tonye Jack)
|
||||||
|
- Updated README.md ([#1779](https://github.com/tj-actions/changed-files/issues/1779))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([0b0b642](https://github.com/tj-actions/changed-files/commit/0b0b6429e1c5a0bc3f85230a0e1f6df2cba44600)) - (tj-actions[bot])
|
||||||
|
- Update README.md ([f732c37](https://github.com/tj-actions/changed-files/commit/f732c371a41ace2af86e5cb2e4f7b0254e4a63e5)) - (Tonye Jack)
|
||||||
|
- Updated README.md ([#1778](https://github.com/tj-actions/changed-files/issues/1778))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([04c0045](https://github.com/tj-actions/changed-files/commit/04c00459a27a4e6651f4b0fa3d3a4bc500480109)) - (tj-actions[bot])
|
||||||
|
- Update README.md ([5cee511](https://github.com/tj-actions/changed-files/commit/5cee511ba525ad1e92208283322b32120a033b48)) - (Tonye Jack)
|
||||||
|
- Update README.md ([399525a](https://github.com/tj-actions/changed-files/commit/399525a994a54fef4ac0ef55192e3d2e30dc0587)) - (Tonye Jack)
|
||||||
|
- Update README.md ([c075bd2](https://github.com/tj-actions/changed-files/commit/c075bd27195652f012b60452cd3026891de29306)) - (Tonye Jack)
|
||||||
|
- Update README.md ([2918913](https://github.com/tj-actions/changed-files/commit/29189133419ced6b335e576b1e1f7a9e8061fdd8)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 3 -->📚 Documentation
|
||||||
|
|
||||||
|
- Add rodrigorfk as a contributor for code, test, and bug ([#1785](https://github.com/tj-actions/changed-files/issues/1785)) ([187cf1e](https://github.com/tj-actions/changed-files/commit/187cf1e88cc94e5b5243c6eefcc550510b7894a8)) - (allcontributors[bot])
|
||||||
|
|
||||||
|
## <!-- 7 -->⚙️ Miscellaneous Tasks
|
||||||
|
|
||||||
|
- **deps:** Bump tj-actions/branch-names from 7 to 8 ([#1782](https://github.com/tj-actions/changed-files/issues/1782)) ([e1e532c](https://github.com/tj-actions/changed-files/commit/e1e532cff0353cb6a98b0bce6ff00b7e7d2cc320)) - (dependabot[bot])
|
||||||
|
- **deps:** Update dependency @types/node to v20.10.4 ([dfecec4](https://github.com/tj-actions/changed-files/commit/dfecec4fb70c945750762cdad7026ee55d8a205f)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency typescript to v5.3.3 ([208b83f](https://github.com/tj-actions/changed-files/commit/208b83f29576c33f31be8846aadbf644242f2b2f)) - (renovate[bot])
|
||||||
|
- **deps-dev:** Bump @types/jest from 29.5.10 to 29.5.11 ([#1775](https://github.com/tj-actions/changed-files/issues/1775)) ([ccb109a](https://github.com/tj-actions/changed-files/commit/ccb109a58449e62280c2ecefb65010f90fbd0e4f)) - (dependabot[bot])
|
||||||
|
- Update package.json ([#1774](https://github.com/tj-actions/changed-files/issues/1774)) ([95642a1](https://github.com/tj-actions/changed-files/commit/95642a1ebb79474d514126dd282092c68a08b01b)) - (Tonye Jack)
|
||||||
|
- Create SECURITY.md ([#1773](https://github.com/tj-actions/changed-files/issues/1773)) ([726e06f](https://github.com/tj-actions/changed-files/commit/726e06f8efc4737fd4c48080f40a21b4305cafab)) - (Tonye Jack)
|
||||||
|
- **deps:** Update typescript-eslint monorepo to v6.13.2 ([d96fe5d](https://github.com/tj-actions/changed-files/commit/d96fe5d9975371a6b58e65d0a309ad49d70e378e)) - (renovate[bot])
|
||||||
|
|
||||||
|
## <!-- 9 -->⬆️ Upgrades
|
||||||
|
|
||||||
|
- Upgraded to v40.2.1 ([#1771](https://github.com/tj-actions/changed-files/issues/1771))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([4ae611e](https://github.com/tj-actions/changed-files/commit/4ae611e5c56a1c7f3c356adf173f9f11fcca0376)) - (tj-actions[bot])
|
||||||
|
|
||||||
|
# [40.2.1](https://github.com/tj-actions/changed-files/compare/v40.2.0...v40.2.1) - (2023-12-04)
|
||||||
|
|
||||||
|
## <!-- 16 -->➕ Add
|
||||||
|
|
||||||
|
- Added missing changes and modified dist assets.
|
||||||
|
([1c93849](https://github.com/tj-actions/changed-files/commit/1c938490c880156b746568a518594309cfb3f66b)) - (GitHub Action)
|
||||||
|
- Added missing changes and modified dist assets.
|
||||||
|
([ee5ef75](https://github.com/tj-actions/changed-files/commit/ee5ef758aa548d365981b0889bab497dd108a785)) - (GitHub Action)
|
||||||
|
|
||||||
|
## <!-- 17 -->➖ Remove
|
||||||
|
|
||||||
|
- Deleted .github/workflows/greetings.yml ([f91c9fe](https://github.com/tj-actions/changed-files/commit/f91c9fe8b1f4719a8e3901b4878b31105efcb66e)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 26 -->🔄 Update
|
||||||
|
|
||||||
|
- Updated README.md ([#1769](https://github.com/tj-actions/changed-files/issues/1769))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([66b77cb](https://github.com/tj-actions/changed-files/commit/66b77cbd0c866511f45c4f624e61034699bc70c2)) - (tj-actions[bot])
|
||||||
|
- Update README.md ([10bfa98](https://github.com/tj-actions/changed-files/commit/10bfa980b7876a94d460f54bd1b46d5c54b025d3)) - (Tonye Jack)
|
||||||
|
- Updated README.md ([#1767](https://github.com/tj-actions/changed-files/issues/1767))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com>
|
||||||
|
Co-authored-by: Tonye Jack <jtonye@ymail.com> ([9e46b4f](https://github.com/tj-actions/changed-files/commit/9e46b4f7f7dce12301b893ec0484694ae579108d)) - (tj-actions[bot])
|
||||||
|
- Update README.md ([3bf6172](https://github.com/tj-actions/changed-files/commit/3bf61725348c8cd85dcf9ce468c35a8e15a5c77e)) - (Tonye Jack)
|
||||||
|
- Updated README.md ([#1755](https://github.com/tj-actions/changed-files/issues/1755))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([48427af](https://github.com/tj-actions/changed-files/commit/48427afe26457522a3f0f4a5afae46a8bb6261b1)) - (tj-actions[bot])
|
||||||
|
- Update README.md ([742ed36](https://github.com/tj-actions/changed-files/commit/742ed362b6c6415493f2dd3a2e86ccbb60e1035a)) - (Tonye Jack)
|
||||||
|
- Updated README.md ([#1750](https://github.com/tj-actions/changed-files/issues/1750))
|
||||||
|
|
||||||
|
Co-authored-by: repo-ranger[bot] <repo-ranger[bot]@users.noreply.github.com> ([86cabf5](https://github.com/tj-actions/changed-files/commit/86cabf5ea23ece4cc5468211fbab9fb76f2b1d91)) - (tj-actions[bot])
|
||||||
|
|
||||||
|
## <!-- 30 -->📝 Other
|
||||||
|
|
||||||
|
- Update test.yml removing pull_request_review event ([#1763](https://github.com/tj-actions/changed-files/issues/1763)) ([af6bdde](https://github.com/tj-actions/changed-files/commit/af6bdde59acc56af0e0a6c6a8acff0d3562162ba)) - (Tonye Jack)
|
||||||
|
- Remove usage of pull_request_target event from test.yml ([#1758](https://github.com/tj-actions/changed-files/issues/1758)) ([3ca6b80](https://github.com/tj-actions/changed-files/commit/3ca6b800138b4c660c4b99b76bb064cdf3f31e59)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 6 -->🧪 Testing
|
||||||
|
|
||||||
|
- Verify bug writing outputs when files_yaml is used ([#1762](https://github.com/tj-actions/changed-files/issues/1762)) ([fc1fb2b](https://github.com/tj-actions/changed-files/commit/fc1fb2b582f5e701390f9f6200dddd7425a3cc70)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 7 -->⚙️ Miscellaneous Tasks
|
||||||
|
|
||||||
|
- **deps:** Lock file maintenance ([ba558db](https://github.com/tj-actions/changed-files/commit/ba558db9775398895ee078c784a5ddef602bb754)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/node to v20.10.3 ([bf19fa2](https://github.com/tj-actions/changed-files/commit/bf19fa23a6b30fb87fe85abdb237154c4573c08c)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency eslint-config-prettier to v9.1.0 ([45581f0](https://github.com/tj-actions/changed-files/commit/45581f0044c213a3f45e5036d921892484eb7a0d)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency eslint to v8.55.0 ([9ebb48b](https://github.com/tj-actions/changed-files/commit/9ebb48b57af1c93015957959d7d9ffe546df3ccd)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/node to v20.10.2 ([4e2dca3](https://github.com/tj-actions/changed-files/commit/4e2dca3ba527858faa57966af9baff3c9bbbb5d6)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/node to v20.10.1 ([883b4cc](https://github.com/tj-actions/changed-files/commit/883b4ccbdb2f56448769f275a0d599bb9eb942c6)) - (renovate[bot])
|
||||||
|
- **deps:** Lock file maintenance ([42fe158](https://github.com/tj-actions/changed-files/commit/42fe158594392b80e30260bbb489eae0ed872e23)) - (renovate[bot])
|
||||||
|
- Remove unused job ([#1754](https://github.com/tj-actions/changed-files/issues/1754)) ([5c74583](https://github.com/tj-actions/changed-files/commit/5c74583cb3f4bb017cad62c02cf599b60d088a3d)) - (Tonye Jack)
|
||||||
|
- **deps:** Update typescript-eslint monorepo to v6.13.1 ([44d340e](https://github.com/tj-actions/changed-files/commit/44d340e48cef9bee9d0bd468f0f9a8ccf3219200)) - (renovate[bot])
|
||||||
|
- **deps:** Update typescript-eslint monorepo to v6.13.0 ([2561448](https://github.com/tj-actions/changed-files/commit/2561448da0579d80e1916a83b9c0d3622add8fc5)) - (renovate[bot])
|
||||||
|
- Update README.md ([#1749](https://github.com/tj-actions/changed-files/issues/1749)) ([b5fc67a](https://github.com/tj-actions/changed-files/commit/b5fc67a4f5e5dafd4d564eefde1958a4ae7974ac)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 9 -->⬆️ Upgrades
|
||||||
|
|
||||||
|
- Upgraded to v40.2.0 ([#1746](https://github.com/tj-actions/changed-files/issues/1746))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([0b22a52](https://github.com/tj-actions/changed-files/commit/0b22a52bff23bee090e1e07f70f9e7fab8384387)) - (tj-actions[bot])
|
||||||
|
|
||||||
|
# [40.2.0](https://github.com/tj-actions/changed-files/compare/v40.1.1...v40.2.0) - (2023-11-27)
|
||||||
|
|
||||||
|
## <!-- 0 -->🚀 Features
|
||||||
|
|
||||||
|
- Add support for passing branch name to the base_sha and sha inputs ([#1742](https://github.com/tj-actions/changed-files/issues/1742)) ([2139fa1](https://github.com/tj-actions/changed-files/commit/2139fa1b6f71f22bf7d9f21e4aebc3aba987e05e)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 1 -->🐛 Bug Fixes
|
||||||
|
|
||||||
|
- Prevent similar commit hashes error when using the branch name ([#1745](https://github.com/tj-actions/changed-files/issues/1745)) ([da093c1](https://github.com/tj-actions/changed-files/commit/da093c1609db0edd0a037ce9664e135f74bf30d9)) - (Tonye Jack)
|
||||||
|
- Prevent similar commit hashes error when using the branch name ([#1744](https://github.com/tj-actions/changed-files/issues/1744)) ([c634be9](https://github.com/tj-actions/changed-files/commit/c634be959b924afb7d2f4809d6e309859e191975)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 13 -->📦 Bumps
|
||||||
|
|
||||||
|
- Bump @types/node from 20.9.3 to 20.9.4 ([#1732](https://github.com/tj-actions/changed-files/issues/1732))
|
||||||
|
|
||||||
|
Signed-off-by: dependabot[bot] <support@github.com>
|
||||||
|
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> ([066e72a](https://github.com/tj-actions/changed-files/commit/066e72a5fb4e82931d493f931f84b5df8cab22d0)) - (dependabot[bot])
|
||||||
|
- Bump @types/jest from 29.5.8 to 29.5.9 ([#1726](https://github.com/tj-actions/changed-files/issues/1726))
|
||||||
|
|
||||||
|
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
||||||
|
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
|
||||||
|
([c23e564](https://github.com/tj-actions/changed-files/commit/c23e564e671f2f3230a34a588eb3b55f7d60faed)) - (dependabot[bot])
|
||||||
|
- Bump @types/micromatch from 4.0.5 to 4.0.6 ([#1727](https://github.com/tj-actions/changed-files/issues/1727))
|
||||||
|
|
||||||
|
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
||||||
|
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
|
||||||
|
([c008025](https://github.com/tj-actions/changed-files/commit/c0080255e3e88e03415d2753b4d4c1f341183f79)) - (dependabot[bot])
|
||||||
|
- Bump @types/lodash from 4.14.201 to 4.14.202 ([#1728](https://github.com/tj-actions/changed-files/issues/1728))
|
||||||
|
|
||||||
|
Signed-off-by: dependabot[bot] <support@github.com>
|
||||||
|
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
||||||
|
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com> ([3a3d3a2](https://github.com/tj-actions/changed-files/commit/3a3d3a2b86e4d416e80a80f115c07915be7d3460)) - (dependabot[bot])
|
||||||
|
- Bump @types/node from 20.9.2 to 20.9.3 ([#1725](https://github.com/tj-actions/changed-files/issues/1725))
|
||||||
|
|
||||||
|
Signed-off-by: dependabot[bot] <support@github.com>
|
||||||
|
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> ([4da6e32](https://github.com/tj-actions/changed-files/commit/4da6e32cfea3c23f1a8d70337b3cb1307fe74702)) - (dependabot[bot])
|
||||||
|
|
||||||
|
## <!-- 16 -->➕ Add
|
||||||
|
|
||||||
|
- Added missing changes and modified dist assets.
|
||||||
|
([607d5dd](https://github.com/tj-actions/changed-files/commit/607d5ddbbfd4921680b18a439387657412549259)) - (GitHub Action)
|
||||||
|
- Added missing changes and modified dist assets.
|
||||||
|
([7f1c4cb](https://github.com/tj-actions/changed-files/commit/7f1c4cb6db07d6473fae667073c46ef6e2abc5e7)) - (GitHub Action)
|
||||||
|
- Added missing changes and modified dist assets.
|
||||||
|
([1cf54bb](https://github.com/tj-actions/changed-files/commit/1cf54bb5d30a33a40efca5e00884096dd1f49cf9)) - (GitHub Action)
|
||||||
|
- Added missing changes and modified dist assets.
|
||||||
|
([d8d3669](https://github.com/tj-actions/changed-files/commit/d8d3669cb396f0081313a19b34a25ad989ba5abb)) - (GitHub Action)
|
||||||
|
|
||||||
|
## <!-- 26 -->🔄 Update
|
||||||
|
|
||||||
|
- Update README.md ([6784c9e](https://github.com/tj-actions/changed-files/commit/6784c9e1eeb301520aa26a6f786c3a8a1e742786)) - (Tonye Jack)
|
||||||
|
- Update greetings.yml ([90f2c0c](https://github.com/tj-actions/changed-files/commit/90f2c0c1b1177f4c5813bf893c3c5e2ce4baca93)) - (Tonye Jack)
|
||||||
|
- Updated README.md ([#1722](https://github.com/tj-actions/changed-files/issues/1722))
|
||||||
|
|
||||||
|
Co-authored-by: repo-ranger[bot] <repo-ranger[bot]@users.noreply.github.com> ([f7779a6](https://github.com/tj-actions/changed-files/commit/f7779a6302b8b7cf930b2b7e34213c4b68e3ed2d)) - (tj-actions[bot])
|
||||||
|
- Updated README.md ([#1721](https://github.com/tj-actions/changed-files/issues/1721))
|
||||||
|
|
||||||
|
Co-authored-by: renovate[bot] <renovate[bot]@users.noreply.github.com> ([6d07b6e](https://github.com/tj-actions/changed-files/commit/6d07b6ee5902a442f4fee4603a23ba9f735b1ca0)) - (tj-actions[bot])
|
||||||
|
- Updated README.md ([#1714](https://github.com/tj-actions/changed-files/issues/1714))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([97825a1](https://github.com/tj-actions/changed-files/commit/97825a1994aabf99e2c01837273ba1716a2fac73)) - (tj-actions[bot])
|
||||||
|
- Updated README.md ([#1713](https://github.com/tj-actions/changed-files/issues/1713))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([2a9f067](https://github.com/tj-actions/changed-files/commit/2a9f067522563ebf5445c15c1480753821f99354)) - (tj-actions[bot])
|
||||||
|
- Updated README.md ([#1712](https://github.com/tj-actions/changed-files/issues/1712))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([b082611](https://github.com/tj-actions/changed-files/commit/b082611680535c989a8f91fb644fb1984d01415d)) - (tj-actions[bot])
|
||||||
|
- Updated README.md ([#1711](https://github.com/tj-actions/changed-files/issues/1711))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([90a4f2a](https://github.com/tj-actions/changed-files/commit/90a4f2a3269003cd5351020e24ad59586c97e2af)) - (tj-actions[bot])
|
||||||
|
- Updated README.md ([#1710](https://github.com/tj-actions/changed-files/issues/1710))
|
||||||
|
|
||||||
|
Co-authored-by: repo-ranger[bot] <repo-ranger[bot]@users.noreply.github.com> ([b20ce84](https://github.com/tj-actions/changed-files/commit/b20ce84763512903636c6bc5e95092a7f35bac61)) - (tj-actions[bot])
|
||||||
|
|
||||||
|
## <!-- 7 -->⚙️ Miscellaneous Tasks
|
||||||
|
|
||||||
|
- **deps:** Lock file maintenance ([d588360](https://github.com/tj-actions/changed-files/commit/d588360bfe7e5ce0b2ad1ca0f56443a105eb1cc3)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/node to v20.10.0 ([0d6e9b7](https://github.com/tj-actions/changed-files/commit/0d6e9b71966503cd14182330532c722316e450bc)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/node to v20.9.5 ([8f90cc1](https://github.com/tj-actions/changed-files/commit/8f90cc165ad22c68ab50623b2e5d8397eeb90ec7)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/jest to v29.5.10 ([75758bc](https://github.com/tj-actions/changed-files/commit/75758bc65f2f009213bf6f74451bff1200005d00)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/lodash to v4.14.202 ([79ef9d3](https://github.com/tj-actions/changed-files/commit/79ef9d3feebded8f767c62aa3ee76368dc028195)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/micromatch to v4.0.6 ([da4597e](https://github.com/tj-actions/changed-files/commit/da4597ee22010cde29dcbf422eb2a9480136c3ae)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/jest to v29.5.9 ([9f4ec1c](https://github.com/tj-actions/changed-files/commit/9f4ec1c14f0dc5c2f3053c27efba3a63781efb0b)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency typescript to v5.3.2 ([939fbca](https://github.com/tj-actions/changed-files/commit/939fbca781a0004fbe7aa648fb6656046a8df71b)) - (renovate[bot])
|
||||||
|
- **deps:** Update typescript-eslint monorepo to v6.12.0 ([9ba175a](https://github.com/tj-actions/changed-files/commit/9ba175ae245f8a261d7f4acf3ccfaf0a60d32302)) - (renovate[bot])
|
||||||
|
- Simplify matrix example workflow ([#1719](https://github.com/tj-actions/changed-files/issues/1719)) ([05bdc91](https://github.com/tj-actions/changed-files/commit/05bdc91228c589841621aee130aa6033579687de)) - (Tonye Jack)
|
||||||
|
- **deps:** Lock file maintenance ([21b4a4b](https://github.com/tj-actions/changed-files/commit/21b4a4bc7b1834f22f8fe7f17a425e984017ea5f)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/node to v20.9.2 ([658f397](https://github.com/tj-actions/changed-files/commit/658f39729762255a3e3166fd20c16573fb1738ee)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency eslint to v8.54.0 ([38a0c32](https://github.com/tj-actions/changed-files/commit/38a0c329bb00b10f18e61d5f23349fbd1576c08e)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/node to v20.9.1 ([b0be21b](https://github.com/tj-actions/changed-files/commit/b0be21b8dfdb45d0b2b92528ce89d727f4bdb89d)) - (renovate[bot])
|
||||||
|
- Update action.yml ([13189f9](https://github.com/tj-actions/changed-files/commit/13189f9e5209c0bd05c1c253e226dbf548695424)) - (Tonye Jack)
|
||||||
|
- Update action inputs description ([ad01f6f](https://github.com/tj-actions/changed-files/commit/ad01f6fdbaf0f959888aeeb6684856397af589d1)) - (Tonye Jack)
|
||||||
|
- Update input description ([a36c479](https://github.com/tj-actions/changed-files/commit/a36c479373da160c2cee10435cf68a4e93e6e68d)) - (Tonye Jack)
|
||||||
|
- Update input description ([41ff1f2](https://github.com/tj-actions/changed-files/commit/41ff1f224927a20a43124b4d729c696c18771677)) - (Tonye Jack)
|
||||||
|
- Update update-readme.yml ([#1709](https://github.com/tj-actions/changed-files/issues/1709)) ([875213d](https://github.com/tj-actions/changed-files/commit/875213d4a94e0703cea7109c43ef111b94f1062d)) - (Tonye Jack)
|
||||||
|
- **deps:** Update typescript-eslint monorepo to v6.11.0 ([71b5765](https://github.com/tj-actions/changed-files/commit/71b57652f02612b6f858d71ddf7115487ad51882)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency prettier to v3.1.0 ([834b862](https://github.com/tj-actions/changed-files/commit/834b86247ec0d15224902d58f5531c78be2e3fc5)) - (renovate[bot])
|
||||||
|
- **deps:** Lock file maintenance ([940b170](https://github.com/tj-actions/changed-files/commit/940b170a31d813bc7b88d3816a643b25b66c1342)) - (renovate[bot])
|
||||||
|
|
||||||
|
## <!-- 9 -->⬆️ Upgrades
|
||||||
|
|
||||||
|
- Upgraded to v40.1.1 ([#1704](https://github.com/tj-actions/changed-files/issues/1704))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([55b93d0](https://github.com/tj-actions/changed-files/commit/55b93d07342c1bd89af9693bfb44faff42ebcd9e)) - (tj-actions[bot])
|
||||||
|
|
||||||
|
# [40.1.1](https://github.com/tj-actions/changed-files/compare/v40.1.0...v40.1.1) - (2023-11-08)
|
||||||
|
|
||||||
|
## <!-- 16 -->➕ Add
|
||||||
|
|
||||||
|
- Added missing changes and modified dist assets.
|
||||||
|
([e981e53](https://github.com/tj-actions/changed-files/commit/e981e53b7faf4d2fbf8e077b7eec07ef0f7fa221)) - (GitHub Action)
|
||||||
|
|
||||||
|
## <!-- 7 -->⚙️ Miscellaneous Tasks
|
||||||
|
|
||||||
|
- **deps:** Update dependency @types/node to v20.9.0 ([25ef392](https://github.com/tj-actions/changed-files/commit/25ef3926d147cd02fc7e931c1ef50772bbb0d25d)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/lodash to v4.14.201 ([4d33bd5](https://github.com/tj-actions/changed-files/commit/4d33bd5f9cd03b7df1e544c3426cb9e63c52791e)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/micromatch to v4.0.5 ([f25e472](https://github.com/tj-actions/changed-files/commit/f25e47258b32eef5d87030d4f6eb9e20cd7349b0)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/uuid to v9.0.7 ([a3c4ccb](https://github.com/tj-actions/changed-files/commit/a3c4ccbde013ddc2eb4c788b5a7162fa72a1ad9b)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency @types/jest to v29.5.8 ([b114534](https://github.com/tj-actions/changed-files/commit/b11453410196db60f4c2f6b84ae222a41ed17300)) - (renovate[bot])
|
||||||
|
- **deps:** Update typescript-eslint monorepo to v6.10.0 ([303f064](https://github.com/tj-actions/changed-files/commit/303f064ba95d994742bfb189d37d5d0632a80222)) - (renovate[bot])
|
||||||
|
- **deps:** Lock file maintenance ([d850ef9](https://github.com/tj-actions/changed-files/commit/d850ef91f77568044a20bbf67b57d1b74934f716)) - (renovate[bot])
|
||||||
|
- **deps:** Update dependency eslint to v8.53.0 ([8701b58](https://github.com/tj-actions/changed-files/commit/8701b586f31d75024fe0fcb5eaddd30a7f4c0605)) - (renovate[bot])
|
||||||
|
|
||||||
|
## <!-- 9 -->⬆️ Upgrades
|
||||||
|
|
||||||
|
- Upgraded to v40.1.0 ([#1695](https://github.com/tj-actions/changed-files/issues/1695))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([9b1ba9a](https://github.com/tj-actions/changed-files/commit/9b1ba9a603ec6c53c7a4610ddf3e14bde70ab0ea)) - (tj-actions[bot])
|
||||||
|
|
||||||
|
# [40.1.0](https://github.com/tj-actions/changed-files/compare/v40.0.2...v40.1.0) - (2023-11-03)
|
||||||
|
|
||||||
|
## <!-- 0 -->🚀 Features
|
||||||
|
|
||||||
|
- Add support for controlling the pattern order ([#1693](https://github.com/tj-actions/changed-files/issues/1693)) ([892553a](https://github.com/tj-actions/changed-files/commit/892553a4576166fd647dbd90ffa4b589f563572b)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 1 -->🐛 Bug Fixes
|
||||||
|
|
||||||
|
- **deps:** Update dependency yaml to v2.3.4 ([c300d15](https://github.com/tj-actions/changed-files/commit/c300d15daea754419fb9f133c53d821f0f6c17ea)) - (renovate[bot])
|
||||||
|
|
||||||
|
## <!-- 16 -->➕ Add
|
||||||
|
|
||||||
|
- Added missing changes and modified dist assets.
|
||||||
|
([50a9cc9](https://github.com/tj-actions/changed-files/commit/50a9cc9b7b170bd6aaf4fb94db5da1c223606572)) - (GitHub Action)
|
||||||
|
|
||||||
|
## <!-- 26 -->🔄 Update
|
||||||
|
|
||||||
|
- Updated README.md ([#1694](https://github.com/tj-actions/changed-files/issues/1694))
|
||||||
|
|
||||||
|
Co-authored-by: repo-ranger[bot] <repo-ranger[bot]@users.noreply.github.com> ([18c8a4e](https://github.com/tj-actions/changed-files/commit/18c8a4ecebe93d32ed8a88e1d0c098f5f68c221b)) - (tj-actions[bot])
|
||||||
|
|
||||||
|
## <!-- 9 -->⬆️ Upgrades
|
||||||
|
|
||||||
|
- Upgraded to v40.0.2 ([#1689](https://github.com/tj-actions/changed-files/issues/1689))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([c076064](https://github.com/tj-actions/changed-files/commit/c07606463672e7c623bc2801b4002bd645aed1f2)) - (tj-actions[bot])
|
||||||
|
|
||||||
|
# [40.0.2](https://github.com/tj-actions/changed-files/compare/v40.0.1...v40.0.2) - (2023-10-31)
|
||||||
|
|
||||||
|
## <!-- 1 -->🐛 Bug Fixes
|
||||||
|
|
||||||
|
- Order of file patterns ([#1688](https://github.com/tj-actions/changed-files/issues/1688)) ([4052680](https://github.com/tj-actions/changed-files/commit/40526807ee1e208a1a8c1bbe6bd2d1b044ef6368)) - (Tonye Jack)
|
||||||
|
|
||||||
|
## <!-- 7 -->⚙️ Miscellaneous Tasks
|
||||||
|
|
||||||
|
- **deps:** Update dependency @types/node to v20.8.10 ([a59bf8f](https://github.com/tj-actions/changed-files/commit/a59bf8ffcfcfdd831463eff511b55a7123a04aca)) - (renovate[bot])
|
||||||
|
|
||||||
|
## <!-- 9 -->⬆️ Upgrades
|
||||||
|
|
||||||
|
- Upgraded to v40.0.1 ([#1686](https://github.com/tj-actions/changed-files/issues/1686))
|
||||||
|
|
||||||
|
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([6821899](https://github.com/tj-actions/changed-files/commit/68218997649ac879f47639455e9669b94750b50f)) - (tj-actions[bot])
|
||||||
|
|
||||||
# [40.0.1](https://github.com/tj-actions/changed-files/compare/v40.0.0...v40.0.1) - (2023-10-30)
|
# [40.0.1](https://github.com/tj-actions/changed-files/compare/v40.0.0...v40.0.1) - (2023-10-30)
|
||||||
|
|
||||||
## <!-- 1 -->🐛 Bug Fixes
|
## <!-- 1 -->🐛 Bug Fixes
|
||||||
|
|||||||
537
README.md
537
README.md
@@ -3,13 +3,13 @@
|
|||||||
[](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on)
|
[](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on)
|
||||||
[](https://github.com/search?o=desc\&q=tj-actions+changed-files+language%3AYAML\&s=\&type=Code)
|
[](https://github.com/search?o=desc\&q=tj-actions+changed-files+language%3AYAML\&s=\&type=Code)
|
||||||
|
|
||||||
[](https://www.codacy.com/gh/tj-actions/changed-files/dashboard?utm_source=github.com\&utm_medium=referral\&utm_content=tj-actions/changed-files\&utm_campaign=Badge_Grade)
|
[](https://app.codacy.com/gh/tj-actions/changed-files/dashboard?utm_source=gh\&utm_medium=referral\&utm_content=\&utm_campaign=Badge_grade)
|
||||||
[](https://github.com/tj-actions/changed-files/actions/workflows/test.yml)
|
[](https://github.com/tj-actions/changed-files/actions/workflows/test.yml)
|
||||||
[](https://github.com/tj-actions/changed-files/actions/workflows/sync-release-version.yml)
|
[](https://github.com/tj-actions/changed-files/actions/workflows/sync-release-version.yml)
|
||||||
|
|
||||||
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
||||||
|
|
||||||
[](#contributors-)
|
[](#contributors-)
|
||||||
|
|
||||||
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
||||||
|
|
||||||
@@ -17,9 +17,9 @@
|
|||||||
|
|
||||||
Effortlessly track all changed files and directories relative to a target branch, preceding commit or the last remote commit returning **relative paths** from the project root using this GitHub action.
|
Effortlessly track all changed files and directories relative to a target branch, preceding commit or the last remote commit returning **relative paths** from the project root using this GitHub action.
|
||||||
|
|
||||||
> **Note**
|
> \[!NOTE]
|
||||||
>
|
>
|
||||||
> * This action solely identifies files that have undergone changes within the context of events such as `pull_request*`, `push`, and more. However, it doesn't detect pending uncommitted changes created during the workflow execution.
|
> * This action solely identifies files that have changed within the context of events such as `pull_request*`, `push`, and more. However, it doesn't detect pending uncommitted changes created during the workflow execution.
|
||||||
>
|
>
|
||||||
> See: https://github.com/tj-actions/verify-changed-files instead
|
> See: https://github.com/tj-actions/verify-changed-files instead
|
||||||
|
|
||||||
@@ -32,9 +32,9 @@ Effortlessly track all changed files and directories relative to a target branch
|
|||||||
* [Using Github's API :octocat:](#using-githubs-api-octocat)
|
* [Using Github's API :octocat:](#using-githubs-api-octocat)
|
||||||
* [On `push` ⬆️](#on-push-️)
|
* [On `push` ⬆️](#on-push-️)
|
||||||
* [Other supported events :electron:](#other-supported-events-electron)
|
* [Other supported events :electron:](#other-supported-events-electron)
|
||||||
|
* [Inputs ⚙️](#inputs-️)
|
||||||
* [Useful Acronyms 🧮](#useful-acronyms-)
|
* [Useful Acronyms 🧮](#useful-acronyms-)
|
||||||
* [Outputs 📤](#outputs-)
|
* [Outputs 📤](#outputs-)
|
||||||
* [Inputs ⚙️](#inputs-️)
|
|
||||||
* [Versioning 🏷️](#versioning-️)
|
* [Versioning 🏷️](#versioning-️)
|
||||||
* [Examples 📄](#examples-)
|
* [Examples 📄](#examples-)
|
||||||
* [Real-world usage 🌐](#real-world-usage-)
|
* [Real-world usage 🌐](#real-world-usage-)
|
||||||
@@ -51,7 +51,7 @@ Effortlessly track all changed files and directories relative to a target branch
|
|||||||
* Fast execution, averaging 0-10 seconds.
|
* Fast execution, averaging 0-10 seconds.
|
||||||
* Leverages either [Github's REST API](https://docs.github.com/en/rest/reference/repos#list-commits) or [Git's native diff](https://git-scm.com/docs/git-diff) to determine changed files.
|
* Leverages either [Github's REST API](https://docs.github.com/en/rest/reference/repos#list-commits) or [Git's native diff](https://git-scm.com/docs/git-diff) to determine changed files.
|
||||||
* Facilitates easy debugging.
|
* Facilitates easy debugging.
|
||||||
* Scales to handle large repositories.
|
* Scales to handle large/mono repositories.
|
||||||
* Supports Git submodules.
|
* Supports Git submodules.
|
||||||
* Supports [merge queues](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue) for pull requests.
|
* Supports [merge queues](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue) for pull requests.
|
||||||
* Generates escaped [JSON output for running matrix jobs](https://github.com/tj-actions/changed-files/blob/main/.github/workflows/matrix-test.yml) based on changed files.
|
* Generates escaped [JSON output for running matrix jobs](https://github.com/tj-actions/changed-files/blob/main/.github/workflows/matrix-test.yml) based on changed files.
|
||||||
@@ -60,7 +60,7 @@ Effortlessly track all changed files and directories relative to a target branch
|
|||||||
* Optionally excludes the current directory.
|
* Optionally excludes the current directory.
|
||||||
* Writes outputs to a designated `.txt` or `.json` file for further processing.
|
* Writes outputs to a designated `.txt` or `.json` file for further processing.
|
||||||
* Restores deleted files to their previous location or a newly specified location.
|
* Restores deleted files to their previous location or a newly specified location.
|
||||||
* Supports Monorepos by fetching a fixed number of commits.
|
* Supports fetching a fixed number of commits which improves performance.
|
||||||
* Compatible with all platforms (Linux, MacOS, Windows).
|
* Compatible with all platforms (Linux, MacOS, Windows).
|
||||||
* Supports [GitHub-hosted runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners).
|
* Supports [GitHub-hosted runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners).
|
||||||
* Supports [GitHub Enterprise Server](https://docs.github.com/en/enterprise-server@3.3/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/getting-started-with-github-actions-for-github-enterprise-server).
|
* Supports [GitHub Enterprise Server](https://docs.github.com/en/enterprise-server@3.3/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/getting-started-with-github-actions-for-github-enterprise-server).
|
||||||
@@ -83,7 +83,7 @@ And many more...
|
|||||||
|
|
||||||
## Usage 💻
|
## Usage 💻
|
||||||
|
|
||||||
> **Important**
|
> \[!IMPORTANT]
|
||||||
>
|
>
|
||||||
> * **Push Events**: When configuring [`actions/checkout`](https://github.com/actions/checkout#usage), make sure to set [`fetch-depth`](https://github.com/actions/checkout#usage) to either `0` or `2`, depending on your use case.
|
> * **Push Events**: When configuring [`actions/checkout`](https://github.com/actions/checkout#usage), make sure to set [`fetch-depth`](https://github.com/actions/checkout#usage) to either `0` or `2`, depending on your use case.
|
||||||
> * **Mono Repositories**: To avoid pulling the entire branch history, you can utilize the default [`actions/checkout`](https://github.com/actions/checkout#usage)'s [`fetch-depth`](https://github.com/actions/checkout#usage) of `1` for [`pull_request`](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request) events.
|
> * **Mono Repositories**: To avoid pulling the entire branch history, you can utilize the default [`actions/checkout`](https://github.com/actions/checkout#usage)'s [`fetch-depth`](https://github.com/actions/checkout#usage) of `1` for [`pull_request`](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request) events.
|
||||||
@@ -122,43 +122,46 @@ jobs:
|
|||||||
# Example 1
|
# Example 1
|
||||||
- name: Get changed files
|
- name: Get changed files
|
||||||
id: changed-files
|
id: changed-files
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
|
|
||||||
# To compare changes between the current commit and the last pushed remote commit set `since_last_remote_commit: true`. e.g
|
# To compare changes between the current commit and the last pushed remote commit set `since_last_remote_commit: true`. e.g
|
||||||
# with:
|
# with:
|
||||||
# since_last_remote_commit: true
|
# since_last_remote_commit: true
|
||||||
|
|
||||||
- name: List all changed files
|
- name: List all changed files
|
||||||
|
env:
|
||||||
|
ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
run: |
|
run: |
|
||||||
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
|
for file in "$ALL_CHANGED_FILES"; do
|
||||||
echo "$file was changed"
|
echo "$file was changed"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Example 2
|
# Example 2
|
||||||
- name: Get all changed markdown files
|
- name: Get all changed markdown files
|
||||||
id: changed-markdown-files
|
id: changed-markdown-files
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
|
# Avoid using single or double quotes for multiline patterns
|
||||||
files: |
|
files: |
|
||||||
**.md
|
**.md
|
||||||
# Avoid using single or double quotes for multiline patterns
|
|
||||||
|
|
||||||
- name: List all changed files markdown files
|
- name: List all changed files markdown files
|
||||||
|
if: steps.changed-markdown-files.outputs.any_changed == 'true'
|
||||||
|
env:
|
||||||
|
ALL_CHANGED_FILES: ${{ steps.changed-markdown-files.outputs.all_changed_files }}
|
||||||
run: |
|
run: |
|
||||||
for file in ${{ steps.changed-markdown-files.outputs.all_changed_files }}; do
|
for file in "$ALL_CHANGED_FILES"; do
|
||||||
echo "$file was changed"
|
echo "$file was changed"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Example 3
|
# Example 3
|
||||||
- name: Get all test, doc and src files that have changed
|
- name: Get all test, doc and src files that have changed
|
||||||
id: changed-files-yaml
|
id: changed-files-yaml
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
files_yaml: |
|
files_yaml: |
|
||||||
doc:
|
doc:
|
||||||
- '**.md'
|
- '**.md'
|
||||||
- docs/**
|
- docs/**
|
||||||
- README.md
|
|
||||||
test:
|
test:
|
||||||
- test/**
|
- test/**
|
||||||
- '!test/**.md'
|
- '!test/**.md'
|
||||||
@@ -169,29 +172,35 @@ jobs:
|
|||||||
- name: Run step if test file(s) change
|
- name: Run step if test file(s) change
|
||||||
# NOTE: Ensure all outputs are prefixed by the same key used above e.g. `test_(...)` | `doc_(...)` | `src_(...)` when trying to access the `any_changed` output.
|
# NOTE: Ensure all outputs are prefixed by the same key used above e.g. `test_(...)` | `doc_(...)` | `src_(...)` when trying to access the `any_changed` output.
|
||||||
if: steps.changed-files-yaml.outputs.test_any_changed == 'true'
|
if: steps.changed-files-yaml.outputs.test_any_changed == 'true'
|
||||||
|
env:
|
||||||
|
TEST_ALL_CHANGED_FILES: ${{ steps.changed-files-yaml.outputs.test_all_changed_files }}
|
||||||
run: |
|
run: |
|
||||||
echo "One or more test file(s) has changed."
|
echo "One or more test file(s) has changed."
|
||||||
echo "List all the files that have changed: ${{ steps.changed-files-yaml.outputs.test_all_changed_files }}"
|
echo "List all the files that have changed: $TEST_ALL_CHANGED_FILES"
|
||||||
|
|
||||||
- name: Run step if doc file(s) change
|
- name: Run step if doc file(s) change
|
||||||
if: steps.changed-files-yaml.outputs.doc_any_changed == 'true'
|
if: steps.changed-files-yaml.outputs.doc_any_changed == 'true'
|
||||||
|
env:
|
||||||
|
DOC_ALL_CHANGED_FILES: ${{ steps.changed-files-yaml.outputs.doc_all_changed_files }}
|
||||||
run: |
|
run: |
|
||||||
echo "One or more doc file(s) has changed."
|
echo "One or more doc file(s) has changed."
|
||||||
echo "List all the files that have changed: ${{ steps.changed-files-yaml.outputs.doc_all_changed_files }}"
|
echo "List all the files that have changed: $DOC_ALL_CHANGED_FILES"
|
||||||
|
|
||||||
# Example 3
|
# Example 3
|
||||||
- name: Get changed files in the docs folder
|
- name: Get changed files in the docs folder
|
||||||
id: changed-files-specific
|
id: changed-files-specific
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
files: docs/*.{js,html} # Alternatively using: `docs/**`
|
files: docs/*.{js,html} # Alternatively using: `docs/**`
|
||||||
files_ignore: docs/static.js
|
files_ignore: docs/static.js
|
||||||
|
|
||||||
- name: Run step if any file(s) in the docs folder change
|
- name: Run step if any file(s) in the docs folder change
|
||||||
if: steps.changed-files-specific.outputs.any_changed == 'true'
|
if: steps.changed-files-specific.outputs.any_changed == 'true'
|
||||||
|
env:
|
||||||
|
ALL_CHANGED_FILES: ${{ steps.changed-files-specific.outputs.all_changed_files }}
|
||||||
run: |
|
run: |
|
||||||
echo "One or more files in the docs folder has changed."
|
echo "One or more files in the docs folder has changed."
|
||||||
echo "List all the files that have changed: ${{ steps.changed-files-specific.outputs.all_changed_files }}"
|
echo "List all the files that have changed: $ALL_CHANGED_FILES"
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Using Github's API :octocat:
|
#### Using Github's API :octocat:
|
||||||
@@ -222,11 +231,13 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Get changed files
|
- name: Get changed files
|
||||||
id: changed-files
|
id: changed-files
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
|
|
||||||
- name: List all changed files
|
- name: List all changed files
|
||||||
|
env:
|
||||||
|
ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
run: |
|
run: |
|
||||||
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
|
for file in "$ALL_CHANGED_FILES"; do
|
||||||
echo "$file was changed"
|
echo "$file was changed"
|
||||||
done
|
done
|
||||||
```
|
```
|
||||||
@@ -263,13 +274,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Get changed files
|
- name: Get changed files
|
||||||
id: changed-files
|
id: changed-files
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
|
|
||||||
# NOTE: `since_last_remote_commit: true` is implied by default and falls back to the previous local commit.
|
# NOTE: `since_last_remote_commit: true` is implied by default and falls back to the previous local commit.
|
||||||
|
|
||||||
- name: List all changed files
|
- name: List all changed files
|
||||||
|
env:
|
||||||
|
ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
run: |
|
run: |
|
||||||
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
|
for file in "$ALL_CHANGED_FILES"; do
|
||||||
echo "$file was changed"
|
echo "$file was changed"
|
||||||
done
|
done
|
||||||
...
|
...
|
||||||
@@ -296,6 +308,317 @@ Support this project with a :star:
|
|||||||
|
|
||||||
[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png
|
[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png
|
||||||
|
|
||||||
|
> \[!IMPORTANT]
|
||||||
|
>
|
||||||
|
> * When using `files_yaml*` inputs:
|
||||||
|
> * All keys must start with a letter or `_` and contain only alphanumeric characters, `-`, or `_`.
|
||||||
|
> For example, `test` or `test_key` or `tesT-key` are all valid.
|
||||||
|
|
||||||
|
## Inputs ⚙️
|
||||||
|
|
||||||
|
<!-- AUTO-DOC-INPUT:START - Do not remove or modify this section -->
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- uses: tj-actions/changed-files@v42
|
||||||
|
id: changed-files
|
||||||
|
with:
|
||||||
|
# Github API URL.
|
||||||
|
# Type: string
|
||||||
|
# Default: "${{ github.api_url }}"
|
||||||
|
api_url: ''
|
||||||
|
|
||||||
|
# Specify a different base commit SHA or branch used
|
||||||
|
# for comparing changes
|
||||||
|
# Type: string
|
||||||
|
base_sha: ''
|
||||||
|
|
||||||
|
# Exclude changes outside the current directory and show path
|
||||||
|
# names relative to it. NOTE: This requires you to
|
||||||
|
# specify the top-level directory via the `path` input.
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "true"
|
||||||
|
diff_relative: ''
|
||||||
|
|
||||||
|
# Output unique changed directories instead of filenames. NOTE: This
|
||||||
|
# returns `.` for changed files located in the current
|
||||||
|
# working directory which defaults to `$GITHUB_WORKSPACE`.
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "false"
|
||||||
|
dir_names: ''
|
||||||
|
|
||||||
|
# Include only directories that have been deleted as opposed
|
||||||
|
# to directory names of files that have been deleted
|
||||||
|
# in the `deleted_files` output when `dir_names` is set to
|
||||||
|
# `true`.
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "false"
|
||||||
|
dir_names_deleted_files_include_only_deleted_dirs: ''
|
||||||
|
|
||||||
|
# Exclude the current directory represented by `.` from the
|
||||||
|
# output when `dir_names` is set to `true`.
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "false"
|
||||||
|
dir_names_exclude_current_dir: ''
|
||||||
|
|
||||||
|
# File and directory patterns to include in the output
|
||||||
|
# when `dir_names` is set to `true`. NOTE: This returns
|
||||||
|
# only the matching files and also the directory names.
|
||||||
|
# Type: string
|
||||||
|
dir_names_include_files: ''
|
||||||
|
|
||||||
|
# Separator used to split the `dir_names_include_files` input
|
||||||
|
# Type: string
|
||||||
|
# Default: "\n"
|
||||||
|
dir_names_include_files_separator: ''
|
||||||
|
|
||||||
|
# Limit the directory output to a maximum depth e.g
|
||||||
|
# `test/test1/test2` with max depth of `2` returns `test/test1`.
|
||||||
|
# Type: string
|
||||||
|
dir_names_max_depth: ''
|
||||||
|
|
||||||
|
# Escape JSON output.
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "true"
|
||||||
|
escape_json: ''
|
||||||
|
|
||||||
|
# Fail when the initial diff fails.
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "false"
|
||||||
|
fail_on_initial_diff_error: ''
|
||||||
|
|
||||||
|
# Fail when the submodule diff fails.
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "false"
|
||||||
|
fail_on_submodule_diff_error: ''
|
||||||
|
|
||||||
|
# Fetch additional history for submodules.
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "false"
|
||||||
|
fetch_additional_submodule_history: ''
|
||||||
|
|
||||||
|
# Depth of additional branch history fetched. NOTE: This can
|
||||||
|
# be adjusted to resolve errors with insufficient history.
|
||||||
|
# Type: string
|
||||||
|
# Default: "50"
|
||||||
|
fetch_depth: ''
|
||||||
|
|
||||||
|
# File and directory patterns used to detect changes (Defaults to the entire repo if unset).
|
||||||
|
# NOTE: Multiline file/directory patterns should not include quotes.
|
||||||
|
# Type: string
|
||||||
|
files: ''
|
||||||
|
|
||||||
|
# Source file(s) used to populate the `files` input.
|
||||||
|
# Type: string
|
||||||
|
files_from_source_file: ''
|
||||||
|
|
||||||
|
# Separator used to split the `files_from_source_file` input.
|
||||||
|
# Type: string
|
||||||
|
# Default: "\n"
|
||||||
|
files_from_source_file_separator: ''
|
||||||
|
|
||||||
|
# Ignore changes to these file(s). NOTE: Multiline file/directory patterns
|
||||||
|
# should not include quotes.
|
||||||
|
# Type: string
|
||||||
|
files_ignore: ''
|
||||||
|
|
||||||
|
# Source file(s) used to populate the `files_ignore` input
|
||||||
|
# Type: string
|
||||||
|
files_ignore_from_source_file: ''
|
||||||
|
|
||||||
|
# Separator used to split the `files_ignore_from_source_file` input
|
||||||
|
# Type: string
|
||||||
|
# Default: "\n"
|
||||||
|
files_ignore_from_source_file_separator: ''
|
||||||
|
|
||||||
|
# Separator used to split the `files_ignore` input
|
||||||
|
# Type: string
|
||||||
|
# Default: "\n"
|
||||||
|
files_ignore_separator: ''
|
||||||
|
|
||||||
|
# YAML used to define a set of file patterns
|
||||||
|
# to ignore changes
|
||||||
|
# Type: string
|
||||||
|
files_ignore_yaml: ''
|
||||||
|
|
||||||
|
# Source file(s) used to populate the `files_ignore_yaml` input. Example:
|
||||||
|
# https://github.com/tj-actions/changed-files/blob/main/test/changed-files.yml
|
||||||
|
# Type: string
|
||||||
|
files_ignore_yaml_from_source_file: ''
|
||||||
|
|
||||||
|
# Separator used to split the `files_ignore_yaml_from_source_file` input
|
||||||
|
# Type: string
|
||||||
|
# Default: "\n"
|
||||||
|
files_ignore_yaml_from_source_file_separator: ''
|
||||||
|
|
||||||
|
# Separator used to split the `files` input
|
||||||
|
# Type: string
|
||||||
|
# Default: "\n"
|
||||||
|
files_separator: ''
|
||||||
|
|
||||||
|
# YAML used to define a set of file patterns
|
||||||
|
# to detect changes
|
||||||
|
# Type: string
|
||||||
|
files_yaml: ''
|
||||||
|
|
||||||
|
# Source file(s) used to populate the `files_yaml` input. Example:
|
||||||
|
# https://github.com/tj-actions/changed-files/blob/main/test/changed-files.yml
|
||||||
|
# Type: string
|
||||||
|
files_yaml_from_source_file: ''
|
||||||
|
|
||||||
|
# Separator used to split the `files_yaml_from_source_file` input
|
||||||
|
# Type: string
|
||||||
|
# Default: "\n"
|
||||||
|
files_yaml_from_source_file_separator: ''
|
||||||
|
|
||||||
|
# Include `all_old_new_renamed_files` output. Note this can generate a large
|
||||||
|
# output See: #501.
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "false"
|
||||||
|
include_all_old_new_renamed_files: ''
|
||||||
|
|
||||||
|
# Output list of changed files in a JSON formatted
|
||||||
|
# string which can be used for matrix jobs. Example:
|
||||||
|
# https://github.com/tj-actions/changed-files/blob/main/.github/workflows/matrix-test.yml
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "false"
|
||||||
|
json: ''
|
||||||
|
|
||||||
|
# Apply the negation patterns first. NOTE: This affects how
|
||||||
|
# changed files are matched.
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "false"
|
||||||
|
negation_patterns_first: ''
|
||||||
|
|
||||||
|
# Split character for old and new renamed filename pairs.
|
||||||
|
# Type: string
|
||||||
|
# Default: " "
|
||||||
|
old_new_files_separator: ''
|
||||||
|
|
||||||
|
# Split character for old and new filename pairs.
|
||||||
|
# Type: string
|
||||||
|
# Default: ","
|
||||||
|
old_new_separator: ''
|
||||||
|
|
||||||
|
# Directory to store output files.
|
||||||
|
# Type: string
|
||||||
|
# Default: ".github/outputs"
|
||||||
|
output_dir: ''
|
||||||
|
|
||||||
|
# Output renamed files as deleted and added files.
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "false"
|
||||||
|
output_renamed_files_as_deleted_and_added: ''
|
||||||
|
|
||||||
|
# Specify a relative path under `$GITHUB_WORKSPACE` to locate the
|
||||||
|
# repository.
|
||||||
|
# Type: string
|
||||||
|
# Default: "."
|
||||||
|
path: ''
|
||||||
|
|
||||||
|
# Use non-ASCII characters to match files and output the
|
||||||
|
# filenames completely verbatim by setting this to `false`
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "true"
|
||||||
|
quotepath: ''
|
||||||
|
|
||||||
|
# Recover deleted files.
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "false"
|
||||||
|
recover_deleted_files: ''
|
||||||
|
|
||||||
|
# Recover deleted files to a new destination directory, defaults
|
||||||
|
# to the original location.
|
||||||
|
# Type: string
|
||||||
|
recover_deleted_files_to_destination: ''
|
||||||
|
|
||||||
|
# File and directory patterns used to recover deleted files,
|
||||||
|
# defaults to the patterns provided via the `files`, `files_from_source_file`,
|
||||||
|
# `files_ignore` and `files_ignore_from_source_file` inputs or all deleted files if
|
||||||
|
# no patterns are provided.
|
||||||
|
# Type: string
|
||||||
|
recover_files: ''
|
||||||
|
|
||||||
|
# File and directory patterns to ignore when recovering deleted
|
||||||
|
# files.
|
||||||
|
# Type: string
|
||||||
|
recover_files_ignore: ''
|
||||||
|
|
||||||
|
# Separator used to split the `recover_files_ignore` input
|
||||||
|
# Type: string
|
||||||
|
# Default: "\n"
|
||||||
|
recover_files_ignore_separator: ''
|
||||||
|
|
||||||
|
# Separator used to split the `recover_files` input
|
||||||
|
# Type: string
|
||||||
|
# Default: "\n"
|
||||||
|
recover_files_separator: ''
|
||||||
|
|
||||||
|
# Apply sanitization to output filenames before being set as
|
||||||
|
# output.
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "true"
|
||||||
|
safe_output: ''
|
||||||
|
|
||||||
|
# Split character for output strings.
|
||||||
|
# Type: string
|
||||||
|
# Default: " "
|
||||||
|
separator: ''
|
||||||
|
|
||||||
|
# Specify a different commit SHA or branch used for
|
||||||
|
# comparing changes
|
||||||
|
# Type: string
|
||||||
|
sha: ''
|
||||||
|
|
||||||
|
# Get changed files for commits whose timestamp is older
|
||||||
|
# than the given time.
|
||||||
|
# Type: string
|
||||||
|
since: ''
|
||||||
|
|
||||||
|
# Use the last commit on the remote branch as
|
||||||
|
# the `base_sha`. Defaults to the last non-merge commit on
|
||||||
|
# the target branch for pull request events and the
|
||||||
|
# previous remote commit of the current branch for push
|
||||||
|
# events.
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "false"
|
||||||
|
since_last_remote_commit: ''
|
||||||
|
|
||||||
|
# Skip the initial fetch to improve performance for shallow
|
||||||
|
# repositories. NOTE: This could lead to errors with missing
|
||||||
|
# history and the intended use is limited to when
|
||||||
|
# you've fetched the history necessary to perform the diff.
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "false"
|
||||||
|
skip_initial_fetch: ''
|
||||||
|
|
||||||
|
# GitHub token used to fetch changed files from Github's
|
||||||
|
# API.
|
||||||
|
# Type: string
|
||||||
|
# Default: "${{ github.token }}"
|
||||||
|
token: ''
|
||||||
|
|
||||||
|
# Get changed files for commits whose timestamp is earlier
|
||||||
|
# than the given time.
|
||||||
|
# Type: string
|
||||||
|
until: ''
|
||||||
|
|
||||||
|
# Force the use of Github's REST API even when
|
||||||
|
# a local copy of the repository exists
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "false"
|
||||||
|
use_rest_api: ''
|
||||||
|
|
||||||
|
# Write outputs to the `output_dir` defaults to `.github/outputs` folder.
|
||||||
|
# NOTE: This creates a `.txt` file by default and
|
||||||
|
# a `.json` file if `json` is set to `true`.
|
||||||
|
# Type: boolean
|
||||||
|
# Default: "false"
|
||||||
|
write_output_files: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
<!-- AUTO-DOC-INPUT:END -->
|
||||||
|
|
||||||
## Useful Acronyms 🧮
|
## Useful Acronyms 🧮
|
||||||
|
|
||||||
| Acronym | Meaning |
|
| Acronym | Meaning |
|
||||||
@@ -309,10 +632,12 @@ Support this project with a :star:
|
|||||||
| U | Unmerged |
|
| U | Unmerged |
|
||||||
| X | Unknown |
|
| X | Unknown |
|
||||||
|
|
||||||
> **Warning**
|
> \[!IMPORTANT]
|
||||||
>
|
>
|
||||||
> * When using `files_yaml*` inputs ensure all outputs are prefixed by the key `test_{...}` e.g. `test_added_files`, `test_any_changed`
|
> * When using `files_yaml*` inputs:
|
||||||
> * All keys must start with a letter or \_ and contain only alphanumeric characters, -, or \_.
|
> * it's required to prefix all outputs with the key to ensure that the correct outputs are accessible.
|
||||||
|
>
|
||||||
|
> For example, if you use `test` as the key, you can access outputs like `added_files`, `any_changed`, and so on by prefixing them with the key `test_added_files` or `test_any_changed` etc.
|
||||||
|
|
||||||
## Outputs 📤
|
## Outputs 📤
|
||||||
|
|
||||||
@@ -361,65 +686,6 @@ Support this project with a :star:
|
|||||||
|
|
||||||
<!-- AUTO-DOC-OUTPUT:END -->
|
<!-- AUTO-DOC-OUTPUT:END -->
|
||||||
|
|
||||||
## Inputs ⚙️
|
|
||||||
|
|
||||||
<!-- AUTO-DOC-INPUT:START - Do not remove or modify this section -->
|
|
||||||
|
|
||||||
| INPUT | TYPE | REQUIRED | DEFAULT | DESCRIPTION |
|
|
||||||
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------|----------|---------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
||||||
| <a name="input_api_url"></a>[api\_url](#input_api_url) | string | false | `"${{ github.api_url }}"` | Github API URL. |
|
|
||||||
| <a name="input_base_sha"></a>[base\_sha](#input_base_sha) | string | false | | Specify a different base commit <br>SHA or branch used for <br>comparing changes |
|
|
||||||
| <a name="input_diff_relative"></a>[diff\_relative](#input_diff_relative) | string | false | `"true"` | Exclude changes outside the current <br>directory and show path names <br>relative to it. **NOTE:** This <br>requires you to specify the <br>top level directory via the <br>`path` input. |
|
|
||||||
| <a name="input_dir_names"></a>[dir\_names](#input_dir_names) | string | false | `"false"` | Output unique changed directories instead <br>of filenames. **NOTE:** This returns <br>`.` for changed files located <br>in the current working directory <br>which defaults to `$GITHUB_WORKSPACE`. |
|
|
||||||
| <a name="input_dir_names_deleted_files_include_only_deleted_dirs"></a>[dir\_names\_deleted\_files\_include\_only\_deleted\_dirs](#input_dir_names_deleted_files_include_only_deleted_dirs) | string | false | `"false"` | Include only directories that have <br>been deleted as opposed to <br>directory names of files that <br>have been deleted in the <br>`deleted_files` output when `dir_names` is <br>set to `true`. |
|
|
||||||
| <a name="input_dir_names_exclude_current_dir"></a>[dir\_names\_exclude\_current\_dir](#input_dir_names_exclude_current_dir) | string | false | `"false"` | Exclude the current directory represented <br>by `.` from the output <br>when `dir_names` is set to <br>`true`. |
|
|
||||||
| <a name="input_dir_names_include_files"></a>[dir\_names\_include\_files](#input_dir_names_include_files) | string | false | | File and directory patterns to <br>include in the output when <br>`dir_names` is set to `true`. <br>**NOTE:** This returns only the <br>matching files and also the <br>directory names. |
|
|
||||||
| <a name="input_dir_names_include_files_separator"></a>[dir\_names\_include\_files\_separator](#input_dir_names_include_files_separator) | string | false | `"\n"` | Separator used to split the <br>`dir_names_include_files` input |
|
|
||||||
| <a name="input_dir_names_max_depth"></a>[dir\_names\_max\_depth](#input_dir_names_max_depth) | string | false | | Limit the directory output to <br>a maximum depth e.g `test/test1/test2` <br>with max depth of `2` <br>returns `test/test1`. |
|
|
||||||
| <a name="input_escape_json"></a>[escape\_json](#input_escape_json) | string | false | `"true"` | Escape JSON output. |
|
|
||||||
| <a name="input_fail_on_initial_diff_error"></a>[fail\_on\_initial\_diff\_error](#input_fail_on_initial_diff_error) | string | false | `"false"` | Fail when the initial diff <br>fails. |
|
|
||||||
| <a name="input_fail_on_submodule_diff_error"></a>[fail\_on\_submodule\_diff\_error](#input_fail_on_submodule_diff_error) | string | false | `"false"` | Fail when the submodule diff <br>fails. |
|
|
||||||
| <a name="input_fetch_additional_submodule_history"></a>[fetch\_additional\_submodule\_history](#input_fetch_additional_submodule_history) | string | false | `"false"` | Fetch additional history for submodules. |
|
|
||||||
| <a name="input_fetch_depth"></a>[fetch\_depth](#input_fetch_depth) | string | false | `"50"` | Depth of additional branch history <br>fetched. **NOTE**: This can be <br>adjusted to resolve errors with <br>insufficient history. |
|
|
||||||
| <a name="input_files"></a>[files](#input_files) | string | false | | File and directory patterns used <br>to detect changes (Defaults to the entire repo if unset) **NOTE:** <br>Multiline file/directory patterns should not <br>include quotes. |
|
|
||||||
| <a name="input_files_from_source_file"></a>[files\_from\_source\_file](#input_files_from_source_file) | string | false | | Source file(s) used to populate <br>the `files` input. |
|
|
||||||
| <a name="input_files_from_source_file_separator"></a>[files\_from\_source\_file\_separator](#input_files_from_source_file_separator) | string | false | `"\n"` | Separator used to split the <br>`files_from_source_file` input |
|
|
||||||
| <a name="input_files_ignore"></a>[files\_ignore](#input_files_ignore) | string | false | | Ignore changes to these file(s) <br>**NOTE:** Multiline file/directory patterns should <br>not include quotes. |
|
|
||||||
| <a name="input_files_ignore_from_source_file"></a>[files\_ignore\_from\_source\_file](#input_files_ignore_from_source_file) | string | false | | Source file(s) used to populate <br>the `files_ignore` input |
|
|
||||||
| <a name="input_files_ignore_from_source_file_separator"></a>[files\_ignore\_from\_source\_file\_separator](#input_files_ignore_from_source_file_separator) | string | false | `"\n"` | Separator used to split the <br>`files_ignore_from_source_file` input |
|
|
||||||
| <a name="input_files_ignore_separator"></a>[files\_ignore\_separator](#input_files_ignore_separator) | string | false | `"\n"` | Separator used to split the <br>`files_ignore` input |
|
|
||||||
| <a name="input_files_ignore_yaml"></a>[files\_ignore\_yaml](#input_files_ignore_yaml) | string | false | | YAML used to define a <br>set of file patterns to <br>ignore changes |
|
|
||||||
| <a name="input_files_ignore_yaml_from_source_file"></a>[files\_ignore\_yaml\_from\_source\_file](#input_files_ignore_yaml_from_source_file) | string | false | | Source file(s) used to populate <br>the `files_ignore_yaml` input. [Example](https://github.com/tj-actions/changed-files/blob/main/test/changed-files.yml) |
|
|
||||||
| <a name="input_files_ignore_yaml_from_source_file_separator"></a>[files\_ignore\_yaml\_from\_source\_file\_separator](#input_files_ignore_yaml_from_source_file_separator) | string | false | `"\n"` | Separator used to split the <br>`files_ignore_yaml_from_source_file` input |
|
|
||||||
| <a name="input_files_separator"></a>[files\_separator](#input_files_separator) | string | false | `"\n"` | Separator used to split the <br>`files` input |
|
|
||||||
| <a name="input_files_yaml"></a>[files\_yaml](#input_files_yaml) | string | false | | YAML used to define a <br>set of file patterns to <br>detect changes |
|
|
||||||
| <a name="input_files_yaml_from_source_file"></a>[files\_yaml\_from\_source\_file](#input_files_yaml_from_source_file) | string | false | | Source file(s) used to populate <br>the `files_yaml` input. [Example](https://github.com/tj-actions/changed-files/blob/main/test/changed-files.yml) |
|
|
||||||
| <a name="input_files_yaml_from_source_file_separator"></a>[files\_yaml\_from\_source\_file\_separator](#input_files_yaml_from_source_file_separator) | string | false | `"\n"` | Separator used to split the <br>`files_yaml_from_source_file` input |
|
|
||||||
| <a name="input_include_all_old_new_renamed_files"></a>[include\_all\_old\_new\_renamed\_files](#input_include_all_old_new_renamed_files) | string | false | `"false"` | Include `all_old_new_renamed_files` output. Note this <br>can generate a large output <br>See: [#501](https://github.com/tj-actions/changed-files/issues/501). |
|
|
||||||
| <a name="input_json"></a>[json](#input_json) | string | false | `"false"` | Output list of changed files <br>in a JSON formatted string <br>which can be used for <br>matrix jobs. [Example](https://github.com/tj-actions/changed-files/blob/main/.github/workflows/matrix-test.yml) |
|
|
||||||
| <a name="input_old_new_files_separator"></a>[old\_new\_files\_separator](#input_old_new_files_separator) | string | false | `" "` | Split character for old and <br>new renamed filename pairs. |
|
|
||||||
| <a name="input_old_new_separator"></a>[old\_new\_separator](#input_old_new_separator) | string | false | `","` | Split character for old and <br>new filename pairs. |
|
|
||||||
| <a name="input_output_dir"></a>[output\_dir](#input_output_dir) | string | false | `".github/outputs"` | Directory to store output files. |
|
|
||||||
| <a name="input_output_renamed_files_as_deleted_and_added"></a>[output\_renamed\_files\_as\_deleted\_and\_added](#input_output_renamed_files_as_deleted_and_added) | string | false | `"false"` | Output renamed files as deleted <br>and added files. |
|
|
||||||
| <a name="input_path"></a>[path](#input_path) | string | false | `"."` | Specify a relative path under <br>`$GITHUB_WORKSPACE` to locate the repository. |
|
|
||||||
| <a name="input_quotepath"></a>[quotepath](#input_quotepath) | string | false | `"true"` | Use non-ascii characters to match <br>files and output the filenames <br>completely verbatim by setting this <br>to `false` |
|
|
||||||
| <a name="input_recover_deleted_files"></a>[recover\_deleted\_files](#input_recover_deleted_files) | string | false | `"false"` | Recover deleted files. |
|
|
||||||
| <a name="input_recover_deleted_files_to_destination"></a>[recover\_deleted\_files\_to\_destination](#input_recover_deleted_files_to_destination) | string | false | | Recover deleted files to a <br>new destination directory, defaults to <br>the original location. |
|
|
||||||
| <a name="input_recover_files"></a>[recover\_files](#input_recover_files) | string | false | | File and directory patterns used <br>to recover deleted files, defaults <br>to the patterns provided via <br>the `files`, `files_from_source_file`, `files_ignore` and <br>`files_ignore_from_source_file` inputs or all deleted <br>files if no patterns are <br>provided. |
|
|
||||||
| <a name="input_recover_files_ignore"></a>[recover\_files\_ignore](#input_recover_files_ignore) | string | false | | File and directory patterns to <br>ignore when recovering deleted files. |
|
|
||||||
| <a name="input_recover_files_ignore_separator"></a>[recover\_files\_ignore\_separator](#input_recover_files_ignore_separator) | string | false | `"\n"` | Separator used to split the <br>`recover_files_ignore` input |
|
|
||||||
| <a name="input_recover_files_separator"></a>[recover\_files\_separator](#input_recover_files_separator) | string | false | `"\n"` | Separator used to split the <br>`recover_files` input |
|
|
||||||
| <a name="input_separator"></a>[separator](#input_separator) | string | false | `" "` | Split character for output strings |
|
|
||||||
| <a name="input_sha"></a>[sha](#input_sha) | string | false | | Specify a different commit SHA <br>or branch used for comparing <br>changes |
|
|
||||||
| <a name="input_since"></a>[since](#input_since) | string | false | | Get changed files for commits <br>whose timestamp is older than <br>the given time. |
|
|
||||||
| <a name="input_since_last_remote_commit"></a>[since\_last\_remote\_commit](#input_since_last_remote_commit) | string | false | `"false"` | Use the last commit on <br>the remote branch as the <br>`base_sha`. Defaults to the last <br>non-merge commit on the target <br>branch for pull request events <br>and the previous remote commit <br>of the current branch for <br>push events. |
|
|
||||||
| <a name="input_skip_initial_fetch"></a>[skip\_initial\_fetch](#input_skip_initial_fetch) | string | false | `"false"` | Skip the initial fetch to <br>improve performance for shallow repositories. <br>**NOTE**: This could lead to <br>errors with missing history and <br>the intended use is limited <br>to when you've fetched the <br>history necessary to perform the <br>diff. |
|
|
||||||
| <a name="input_token"></a>[token](#input_token) | string | false | `"${{ github.token }}"` | Github token used to fetch <br>changed files from Github's API. |
|
|
||||||
| <a name="input_until"></a>[until](#input_until) | string | false | | Get changed files for commits <br>whose timestamp is earlier than <br>the given time. |
|
|
||||||
| <a name="input_write_output_files"></a>[write\_output\_files](#input_write_output_files) | string | false | `"false"` | Write outputs to the `output_dir` <br>defaults to `.github/outputs` folder. **NOTE:** <br>This creates a `.txt` file <br>by default and a `.json` <br>file if `json` is set <br>to `true`. |
|
|
||||||
|
|
||||||
<!-- AUTO-DOC-INPUT:END -->
|
|
||||||
|
|
||||||
## Versioning 🏷️
|
## Versioning 🏷️
|
||||||
|
|
||||||
This GitHub Action follows the principles of [Semantic Versioning](https://semver.org) for versioning releases.
|
This GitHub Action follows the principles of [Semantic Versioning](https://semver.org) for versioning releases.
|
||||||
@@ -441,7 +707,30 @@ The format of the version string is as follows:
|
|||||||
...
|
...
|
||||||
- name: Get changed files
|
- name: Get changed files
|
||||||
id: changed-files
|
id: changed-files
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Get all changed files without escaping unsafe filename characters</summary>
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
...
|
||||||
|
- name: Get changed files
|
||||||
|
id: changed-files
|
||||||
|
uses: tj-actions/changed-files@v42
|
||||||
|
with:
|
||||||
|
safe_output: false # set to false because we are using an environment variable to store the output and avoid command injection.
|
||||||
|
|
||||||
|
- name: List all added files
|
||||||
|
env:
|
||||||
|
ADDED_FILES: ${{ steps.changed-files.outputs.added_files }}
|
||||||
|
run: |
|
||||||
|
for file in "$ADDED_FILES"; do
|
||||||
|
echo "$file was added"
|
||||||
|
done
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -454,7 +743,7 @@ The format of the version string is as follows:
|
|||||||
...
|
...
|
||||||
- name: Get all changed files and use a comma separator in the output
|
- name: Get all changed files and use a comma separator in the output
|
||||||
id: changed-files
|
id: changed-files
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
separator: ","
|
separator: ","
|
||||||
...
|
...
|
||||||
@@ -471,11 +760,13 @@ See [inputs](#inputs) for more information.
|
|||||||
...
|
...
|
||||||
- name: Get changed files
|
- name: Get changed files
|
||||||
id: changed-files
|
id: changed-files
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
|
|
||||||
- name: List all added files
|
- name: List all added files
|
||||||
|
env:
|
||||||
|
ADDED_FILES: ${{ steps.changed-files.outputs.added_files }}
|
||||||
run: |
|
run: |
|
||||||
for file in ${{ steps.changed-files.outputs.added_files }}; do
|
for file in "$ADDED_FILES"; do
|
||||||
echo "$file was added"
|
echo "$file was added"
|
||||||
done
|
done
|
||||||
...
|
...
|
||||||
@@ -492,7 +783,7 @@ See [outputs](#outputs) for a list of all available outputs.
|
|||||||
...
|
...
|
||||||
- name: Get changed files
|
- name: Get changed files
|
||||||
id: changed-files
|
id: changed-files
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
|
|
||||||
- name: Run a step if my-file.txt was modified
|
- name: Run a step if my-file.txt was modified
|
||||||
if: contains(steps.changed-files.outputs.modified_files, 'my-file.txt')
|
if: contains(steps.changed-files.outputs.modified_files, 'my-file.txt')
|
||||||
@@ -513,7 +804,7 @@ See [outputs](#outputs) for a list of all available outputs.
|
|||||||
|
|
||||||
- name: Get changed files and write the outputs to a Txt file
|
- name: Get changed files and write the outputs to a Txt file
|
||||||
id: changed-files-write-output-files-txt
|
id: changed-files-write-output-files-txt
|
||||||
uses: ./
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
write_output_files: true
|
write_output_files: true
|
||||||
|
|
||||||
@@ -532,7 +823,7 @@ See [outputs](#outputs) for a list of all available outputs.
|
|||||||
...
|
...
|
||||||
- name: Get changed files and write the outputs to a JSON file
|
- name: Get changed files and write the outputs to a JSON file
|
||||||
id: changed-files-write-output-files-json
|
id: changed-files-write-output-files-json
|
||||||
uses: ./
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
json: true
|
json: true
|
||||||
write_output_files: true
|
write_output_files: true
|
||||||
@@ -552,7 +843,7 @@ See [outputs](#outputs) for a list of all available outputs.
|
|||||||
...
|
...
|
||||||
- name: Get changed files
|
- name: Get changed files
|
||||||
id: changed-files
|
id: changed-files
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
my-file.txt
|
my-file.txt
|
||||||
@@ -575,7 +866,7 @@ See [inputs](#inputs) for more information.
|
|||||||
...
|
...
|
||||||
- name: Get changed files
|
- name: Get changed files
|
||||||
id: changed-files-specific
|
id: changed-files-specific
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
my-file.txt
|
my-file.txt
|
||||||
@@ -597,15 +888,19 @@ See [inputs](#inputs) for more information.
|
|||||||
|
|
||||||
- name: Run step if any of the listed files above is deleted
|
- name: Run step if any of the listed files above is deleted
|
||||||
if: steps.changed-files-specific.outputs.any_deleted == 'true'
|
if: steps.changed-files-specific.outputs.any_deleted == 'true'
|
||||||
|
env:
|
||||||
|
DELETED_FILES: ${{ steps.changed-files-specific.outputs.deleted_files }}
|
||||||
run: |
|
run: |
|
||||||
for file in ${{ steps.changed-files-specific.outputs.deleted_files }}; do
|
for file in "$DELETED_FILES"; do
|
||||||
echo "$file was deleted"
|
echo "$file was deleted"
|
||||||
done
|
done
|
||||||
|
|
||||||
- name: Run step if all listed files above have been deleted
|
- name: Run step if all listed files above have been deleted
|
||||||
if: steps.changed-files-specific.outputs.only_deleted == 'true'
|
if: steps.changed-files-specific.outputs.only_deleted == 'true'
|
||||||
|
env:
|
||||||
|
DELETED_FILES: ${{ steps.changed-files-specific.outputs.deleted_files }}
|
||||||
run: |
|
run: |
|
||||||
for file in ${{ steps.changed-files-specific.outputs.deleted_files }}; do
|
for file in "$DELETED_FILES"; do
|
||||||
echo "$file was deleted"
|
echo "$file was deleted"
|
||||||
done
|
done
|
||||||
...
|
...
|
||||||
@@ -622,7 +917,7 @@ See [outputs](#outputs) for a list of all available outputs.
|
|||||||
...
|
...
|
||||||
- name: Get changed files using a source file or list of file(s) to populate to files input.
|
- name: Get changed files using a source file or list of file(s) to populate to files input.
|
||||||
id: changed-files-specific-source-file
|
id: changed-files-specific-source-file
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
files_from_source_file: test/changed-files-list.txt
|
files_from_source_file: test/changed-files-list.txt
|
||||||
...
|
...
|
||||||
@@ -639,7 +934,7 @@ See [inputs](#inputs) for more information.
|
|||||||
...
|
...
|
||||||
- name: Get changed files using a source file or list of file(s) to populate to files input and optionally specify more files.
|
- name: Get changed files using a source file or list of file(s) to populate to files input and optionally specify more files.
|
||||||
id: changed-files-specific-source-file-and-specify-files
|
id: changed-files-specific-source-file-and-specify-files
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
files_from_source_file: |
|
files_from_source_file: |
|
||||||
test/changed-files-list.txt
|
test/changed-files-list.txt
|
||||||
@@ -660,7 +955,7 @@ See [inputs](#inputs) for more information.
|
|||||||
...
|
...
|
||||||
- name: Get changed files using a different SHA
|
- name: Get changed files using a different SHA
|
||||||
id: changed-files
|
id: changed-files
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
sha: ${{ github.event.pull_request.head.sha }}
|
sha: ${{ github.event.pull_request.head.sha }}
|
||||||
...
|
...
|
||||||
@@ -677,7 +972,7 @@ See [inputs](#inputs) for more information.
|
|||||||
...
|
...
|
||||||
- name: Get changed files using a different base SHA
|
- name: Get changed files using a different base SHA
|
||||||
id: changed-files
|
id: changed-files
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
base_sha: ${{ github.event.pull_request.base.sha }}
|
base_sha: ${{ github.event.pull_request.base.sha }}
|
||||||
...
|
...
|
||||||
@@ -709,20 +1004,22 @@ jobs:
|
|||||||
|
|
||||||
- name: Get changed files
|
- name: Get changed files
|
||||||
id: changed-files
|
id: changed-files
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
|
|
||||||
- name: Get changed files in the .github folder
|
- name: Get changed files in the .github folder
|
||||||
id: changed-files-specific
|
id: changed-files-specific
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
base_sha: ${{ steps.get-base-sha.outputs.base_sha }}
|
base_sha: ${{ steps.get-base-sha.outputs.base_sha }}
|
||||||
files: .github/**
|
files: .github/**
|
||||||
|
|
||||||
- name: Run step if any file(s) in the .github folder change
|
- name: Run step if any file(s) in the .github folder change
|
||||||
if: steps.changed-files-specific.outputs.any_changed == 'true'
|
if: steps.changed-files-specific.outputs.any_changed == 'true'
|
||||||
|
env:
|
||||||
|
ALL_CHANGED_FILES: ${{ steps.changed-files-specific.outputs.all_changed_files }}
|
||||||
run: |
|
run: |
|
||||||
echo "One or more files in the .github folder has changed."
|
echo "One or more files in the .github folder has changed."
|
||||||
echo "List all the files that have changed: ${{ steps.changed-files-specific.outputs.all_changed_files }}"
|
echo "List all the files that have changed: $ALL_CHANGED_FILES"
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -743,13 +1040,16 @@ See [inputs](#inputs) for more information.
|
|||||||
|
|
||||||
- name: Run changed-files with defaults in dir1
|
- name: Run changed-files with defaults in dir1
|
||||||
id: changed-files-for-dir1
|
id: changed-files-for-dir1
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
path: dir1
|
path: dir1
|
||||||
|
|
||||||
- name: List all added files in dir1
|
- name: List all added files in dir1
|
||||||
|
env:
|
||||||
|
ADDED_FILES: |-
|
||||||
|
${{ steps.changed-files-for-dir1.outputs.added_files }}
|
||||||
run: |
|
run: |
|
||||||
for file in ${{ steps.changed-files-for-dir1.outputs.added_files }}; do
|
for file in "$ADDED_FILES"; do
|
||||||
echo "$file was added"
|
echo "$file was added"
|
||||||
done
|
done
|
||||||
...
|
...
|
||||||
@@ -766,13 +1066,13 @@ See [inputs](#inputs) for more information.
|
|||||||
...
|
...
|
||||||
- name: Run changed-files with quotepath disabled
|
- name: Run changed-files with quotepath disabled
|
||||||
id: changed-files-quotepath
|
id: changed-files-quotepath
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
quotepath: "false"
|
quotepath: "false"
|
||||||
|
|
||||||
- name: Run changed-files with quotepath disabled for a specified list of file(s)
|
- name: Run changed-files with quotepath disabled for a specified list of file(s)
|
||||||
id: changed-files-quotepath-specific
|
id: changed-files-quotepath-specific
|
||||||
uses: ./
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
files: test/test-è.txt
|
files: test/test-è.txt
|
||||||
quotepath: "false"
|
quotepath: "false"
|
||||||
@@ -805,7 +1105,7 @@ See [inputs](#inputs) for more information.
|
|||||||
|
|
||||||
- name: Run changed-files with the commit of the last successful test workflow run
|
- name: Run changed-files with the commit of the last successful test workflow run
|
||||||
id: changed-files-base-sha-push
|
id: changed-files-base-sha-push
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
base_sha: ${{ steps.last_successful_commit_push.outputs.base }}
|
base_sha: ${{ steps.last_successful_commit_push.outputs.base }}
|
||||||
...
|
...
|
||||||
@@ -832,7 +1132,7 @@ See [inputs](#inputs) for more information.
|
|||||||
|
|
||||||
- name: Run changed-files with the commit of the last successful test workflow run on the main branch
|
- name: Run changed-files with the commit of the last successful test workflow run on the main branch
|
||||||
id: changed-files-base-sha-pull-request
|
id: changed-files-base-sha-pull-request
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
base_sha: ${{ steps.last_successful_commit_pull_request.outputs.base }}
|
base_sha: ${{ steps.last_successful_commit_pull_request.outputs.base }}
|
||||||
...
|
...
|
||||||
@@ -858,7 +1158,7 @@ See [inputs](#inputs) for more information.
|
|||||||
...
|
...
|
||||||
- name: Run changed-files with dir_names
|
- name: Run changed-files with dir_names
|
||||||
id: changed-files-dir-names
|
id: changed-files-dir-names
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
dir_names: "true"
|
dir_names: "true"
|
||||||
...
|
...
|
||||||
@@ -875,7 +1175,7 @@ See [inputs](#inputs) for more information.
|
|||||||
...
|
...
|
||||||
- name: Run changed-files with JSON output
|
- name: Run changed-files with JSON output
|
||||||
id: changed-files-json
|
id: changed-files-json
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
json: "true"
|
json: "true"
|
||||||
...
|
...
|
||||||
@@ -892,13 +1192,13 @@ See [inputs](#inputs) for more information.
|
|||||||
...
|
...
|
||||||
- name: Get changed-files since 2022-08-19
|
- name: Get changed-files since 2022-08-19
|
||||||
id: changed-files-since
|
id: changed-files-since
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
since: "2022-08-19"
|
since: "2022-08-19"
|
||||||
|
|
||||||
- name: Get changed-files until 2022-08-20
|
- name: Get changed-files until 2022-08-20
|
||||||
id: changed-files-until
|
id: changed-files-until
|
||||||
uses: tj-actions/changed-files@v40
|
uses: tj-actions/changed-files@v42
|
||||||
with:
|
with:
|
||||||
until: "2022-08-20"
|
until: "2022-08-20"
|
||||||
...
|
...
|
||||||
@@ -930,6 +1230,8 @@ See [inputs](#inputs) for more information.
|
|||||||
|
|
||||||
* [qmk\_firmware uses tj-actions/changed-files to run linters](https://github.com/qmk/qmk_firmware/blob/7a737235ffd49c32d2c5561e8fe53fd96baa7f96/.github/workflows/lint.yml#L30)
|
* [qmk\_firmware uses tj-actions/changed-files to run linters](https://github.com/qmk/qmk_firmware/blob/7a737235ffd49c32d2c5561e8fe53fd96baa7f96/.github/workflows/lint.yml#L30)
|
||||||
|
|
||||||
|
* [argo-workflows uses tj-actions/changed-files to run specific jobs based on changes detected](https://github.com/argoproj/argo-workflows/blob/baef4856ff2603c76dbe277c825eaa3f9788fc91/.github/workflows/ci-build.yaml#L34)
|
||||||
|
|
||||||
And many more...
|
And many more...
|
||||||
|
|
||||||
### Scalability Example 📈
|
### Scalability Example 📈
|
||||||
@@ -938,7 +1240,7 @@ And many more...
|
|||||||
|
|
||||||
## Important Notice ⚠️
|
## Important Notice ⚠️
|
||||||
|
|
||||||
> **Important**
|
> \[!IMPORTANT]
|
||||||
>
|
>
|
||||||
> * Spaces in file names can introduce bugs when using bash loops. See: [#216](https://github.com/tj-actions/changed-files/issues/216)
|
> * Spaces in file names can introduce bugs when using bash loops. See: [#216](https://github.com/tj-actions/changed-files/issues/216)
|
||||||
> However, this action will handle spaces in file names, with a recommendation of using a separator to prevent any hidden issues.
|
> However, this action will handle spaces in file names, with a recommendation of using a separator to prevent any hidden issues.
|
||||||
@@ -1025,6 +1327,9 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
|||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/albertoperdomo2"><img src="https://avatars.githubusercontent.com/u/62241095?v=4?s=100" width="100px;" alt="Alberto Perdomo"/><br /><sub><b>Alberto Perdomo</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=albertoperdomo2" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/albertoperdomo2"><img src="https://avatars.githubusercontent.com/u/62241095?v=4?s=100" width="100px;" alt="Alberto Perdomo"/><br /><sub><b>Alberto Perdomo</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=albertoperdomo2" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://arthurvolant.com"><img src="https://avatars.githubusercontent.com/u/37664438?v=4?s=100" width="100px;" alt="Arthur"/><br /><sub><b>Arthur</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/issues?q=author%3AV0lantis" title="Bug reports">🐛</a> <a href="https://github.com/tj-actions/changed-files/commits?author=V0lantis" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://arthurvolant.com"><img src="https://avatars.githubusercontent.com/u/37664438?v=4?s=100" width="100px;" alt="Arthur"/><br /><sub><b>Arthur</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/issues?q=author%3AV0lantis" title="Bug reports">🐛</a> <a href="https://github.com/tj-actions/changed-files/commits?author=V0lantis" title="Code">💻</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rodrigorfk"><img src="https://avatars.githubusercontent.com/u/1995033?v=4?s=100" width="100px;" alt="Rodrigo Fior Kuntzer"/><br /><sub><b>Rodrigo Fior Kuntzer</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=rodrigorfk" title="Code">💻</a> <a href="https://github.com/tj-actions/changed-files/commits?author=rodrigorfk" title="Tests">⚠️</a> <a href="https://github.com/tj-actions/changed-files/issues?q=author%3Arodrigorfk" title="Bug reports">🐛</a></td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|||||||
32
SECURITY.md
Normal file
32
SECURITY.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Security Policy
|
||||||
|
|
||||||
|
## Proactive Security Measures
|
||||||
|
|
||||||
|
To proactively detect and address security vulnerabilities, we utilize several robust tools and processes:
|
||||||
|
|
||||||
|
- **Dependency Updates:** We use [Renovate](https://renovatebot.com) and [Dependabot](https://docs.github.com/en/code-security/dependabot/dependabot-security-updates/about-dependabot-security-updates) to keep our dependencies updated and promptly patch detected vulnerabilities through automated PRs.
|
||||||
|
- **[GitHub's Security Features](https://github.com/features/security):** Our repository and dependencies are continuously monitored via GitHub's security features, which include:
|
||||||
|
- **Code Scanning:** Using GitHub's CodeQL, all pull requests are scanned to identify potential vulnerabilities in our source code.
|
||||||
|
- **Automated Alerts:** Dependabot identifies vulnerabilities based on the GitHub Advisory Database and opens PRs with patches, while automated [secret scanning](https://docs.github.com/en/enterprise-cloud@latest/code-security/secret-scanning/about-secret-scanning#about-secret-scanning-for-partner-patterns) provides alerts for detected secrets.
|
||||||
|
- **[GitGuardian Security Checks](https://www.gitguardian.com/):** We employ GitGuardian to ensure security checks are performed on the codebase, enhancing the overall security of our project.
|
||||||
|
- **Code Analysis and Security Scanning:** With the help of [Codacy Static Code Analysis](https://www.codacy.com/) and [Codacy Security Scan](https://security.codacy.com/), we conduct thorough analyses and scans of our code for potential security risks.
|
||||||
|
|
||||||
|
## Reporting Security Vulnerabilities
|
||||||
|
|
||||||
|
Despite our best efforts to deliver secure software, we acknowledge the invaluable role of the community in identifying security breaches.
|
||||||
|
|
||||||
|
### Private Vulnerability Disclosures
|
||||||
|
|
||||||
|
We request all suspected vulnerabilities to be responsibly and privately disclosed by sending an email to [support@tj-actions.online](mailto:support@tj-actions.online).
|
||||||
|
|
||||||
|
### Public Vulnerability Disclosures
|
||||||
|
|
||||||
|
For publicly disclosed security vulnerabilities, please **IMMEDIATELY** email [support@tj-actions.online](mailto:support@tj-actions.online) with the details for prompt action.
|
||||||
|
|
||||||
|
Upon confirmation of a breach, reporters will receive full credit and recognition for their contribution. Please note, that we do not offer monetary compensation for reporting vulnerabilities.
|
||||||
|
|
||||||
|
## Communication of Security Breaches
|
||||||
|
|
||||||
|
We will utilize the [GitHub Security Advisory](https://github.com/tj-actions/changed-files/security/advisories) to communicate any security breaches. The advisory will be made public once a patch has been released to rectify the issue.
|
||||||
|
|
||||||
|
We appreciate your cooperation and contribution to maintaining the security of our software. Remember, a secure community is a strong community.
|
||||||
53
action.yml
53
action.yml
@@ -4,11 +4,11 @@ author: tj-actions
|
|||||||
|
|
||||||
inputs:
|
inputs:
|
||||||
separator:
|
separator:
|
||||||
description: "Split character for output strings"
|
description: "Split character for output strings."
|
||||||
required: false
|
required: false
|
||||||
default: " "
|
default: " "
|
||||||
include_all_old_new_renamed_files:
|
include_all_old_new_renamed_files:
|
||||||
description: "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)."
|
description: "Include `all_old_new_renamed_files` output. Note this can generate a large output See: #501."
|
||||||
required: false
|
required: false
|
||||||
default: "false"
|
default: "false"
|
||||||
old_new_separator:
|
old_new_separator:
|
||||||
@@ -24,11 +24,13 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
default: ""
|
default: ""
|
||||||
files_from_source_file_separator:
|
files_from_source_file_separator:
|
||||||
description: 'Separator used to split the `files_from_source_file` input'
|
description: "Separator used to split the `files_from_source_file` input."
|
||||||
default: "\n"
|
default: "\n"
|
||||||
required: false
|
required: false
|
||||||
files:
|
files:
|
||||||
description: "File and directory patterns used to detect changes (Defaults to the entire repo if unset) **NOTE:** Multiline file/directory patterns should not include quotes."
|
description: |
|
||||||
|
File and directory patterns used to detect changes (Defaults to the entire repo if unset).
|
||||||
|
NOTE: Multiline file/directory patterns should not include quotes.
|
||||||
required: false
|
required: false
|
||||||
default: ""
|
default: ""
|
||||||
files_separator:
|
files_separator:
|
||||||
@@ -40,7 +42,7 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
default: ""
|
default: ""
|
||||||
files_yaml_from_source_file:
|
files_yaml_from_source_file:
|
||||||
description: "Source file(s) used to populate the `files_yaml` input. [Example](https://github.com/tj-actions/changed-files/blob/main/test/changed-files.yml)"
|
description: "Source file(s) used to populate the `files_yaml` input. Example: https://github.com/tj-actions/changed-files/blob/main/test/changed-files.yml"
|
||||||
required: false
|
required: false
|
||||||
default: ""
|
default: ""
|
||||||
files_yaml_from_source_file_separator:
|
files_yaml_from_source_file_separator:
|
||||||
@@ -52,7 +54,7 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
default: ""
|
default: ""
|
||||||
files_ignore_yaml_from_source_file:
|
files_ignore_yaml_from_source_file:
|
||||||
description: "Source file(s) used to populate the `files_ignore_yaml` input. [Example](https://github.com/tj-actions/changed-files/blob/main/test/changed-files.yml)"
|
description: "Source file(s) used to populate the `files_ignore_yaml` input. Example: https://github.com/tj-actions/changed-files/blob/main/test/changed-files.yml"
|
||||||
required: false
|
required: false
|
||||||
default: ""
|
default: ""
|
||||||
files_ignore_yaml_from_source_file_separator:
|
files_ignore_yaml_from_source_file_separator:
|
||||||
@@ -60,7 +62,7 @@ inputs:
|
|||||||
default: "\n"
|
default: "\n"
|
||||||
required: false
|
required: false
|
||||||
files_ignore:
|
files_ignore:
|
||||||
description: "Ignore changes to these file(s) **NOTE:** Multiline file/directory patterns should not include quotes."
|
description: "Ignore changes to these file(s). NOTE: Multiline file/directory patterns should not include quotes."
|
||||||
required: false
|
required: false
|
||||||
default: ""
|
default: ""
|
||||||
files_ignore_separator:
|
files_ignore_separator:
|
||||||
@@ -94,16 +96,16 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
default: "."
|
default: "."
|
||||||
quotepath:
|
quotepath:
|
||||||
description: "Use non-ascii characters to match files and output the filenames completely verbatim by setting this to `false`"
|
description: "Use non-ASCII characters to match files and output the filenames completely verbatim by setting this to `false`"
|
||||||
default: "true"
|
default: "true"
|
||||||
required: false
|
required: false
|
||||||
diff_relative:
|
diff_relative:
|
||||||
description: "Exclude changes outside the current directory and show path names relative to it. **NOTE:** This requires you to specify the top level directory via the `path` input."
|
description: "Exclude changes outside the current directory and show path names relative to it. NOTE: This requires you to specify the top-level directory via the `path` input."
|
||||||
required: false
|
required: false
|
||||||
default: "true"
|
default: "true"
|
||||||
dir_names:
|
dir_names:
|
||||||
default: "false"
|
default: "false"
|
||||||
description: "Output unique changed directories instead of filenames. **NOTE:** This returns `.` for changed files located in the current working directory which defaults to `$GITHUB_WORKSPACE`."
|
description: "Output unique changed directories instead of filenames. NOTE: This returns `.` for changed files located in the current working directory which defaults to `$GITHUB_WORKSPACE`."
|
||||||
required: false
|
required: false
|
||||||
dir_names_max_depth:
|
dir_names_max_depth:
|
||||||
description: "Limit the directory output to a maximum depth e.g `test/test1/test2` with max depth of `2` returns `test/test1`."
|
description: "Limit the directory output to a maximum depth e.g `test/test1/test2` with max depth of `2` returns `test/test1`."
|
||||||
@@ -113,7 +115,7 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
default: "false"
|
default: "false"
|
||||||
dir_names_include_files:
|
dir_names_include_files:
|
||||||
description: "File and directory patterns to include in the output when `dir_names` is set to `true`. **NOTE:** This returns only the matching files and also the directory names."
|
description: "File and directory patterns to include in the output when `dir_names` is set to `true`. NOTE: This returns only the matching files and also the directory names."
|
||||||
required: false
|
required: false
|
||||||
default: ""
|
default: ""
|
||||||
dir_names_include_files_separator:
|
dir_names_include_files_separator:
|
||||||
@@ -125,19 +127,25 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
default: "false"
|
default: "false"
|
||||||
json:
|
json:
|
||||||
description: "Output list of changed files in a JSON formatted string which can be used for matrix jobs. [Example](https://github.com/tj-actions/changed-files/blob/main/.github/workflows/matrix-test.yml)"
|
description: "Output list of changed files in a JSON formatted string which can be used for matrix jobs. Example: https://github.com/tj-actions/changed-files/blob/main/.github/workflows/matrix-test.yml"
|
||||||
required: false
|
required: false
|
||||||
default: "false"
|
default: "false"
|
||||||
escape_json:
|
escape_json:
|
||||||
description: "Escape JSON output."
|
description: "Escape JSON output."
|
||||||
required: false
|
required: false
|
||||||
default: "true"
|
default: "true"
|
||||||
|
safe_output:
|
||||||
|
description: "Apply sanitization to output filenames before being set as output."
|
||||||
|
required: false
|
||||||
|
default: "true"
|
||||||
fetch_depth:
|
fetch_depth:
|
||||||
description: "Depth of additional branch history fetched. **NOTE**: This can be adjusted to resolve errors with insufficient history."
|
description: "Depth of additional branch history fetched. NOTE: This can be adjusted to resolve errors with insufficient history."
|
||||||
required: false
|
required: false
|
||||||
default: "50"
|
default: "50"
|
||||||
skip_initial_fetch:
|
skip_initial_fetch:
|
||||||
description: "Skip the initial fetch to improve performance for shallow repositories. **NOTE**: This could lead to errors with missing history and the intended use is limited to when you've fetched the history necessary to perform the diff."
|
description: |
|
||||||
|
Skip the initial fetch to improve performance for shallow repositories.
|
||||||
|
NOTE: This could lead to errors with missing history and the intended use is limited to when you've fetched the history necessary to perform the diff.
|
||||||
required: false
|
required: false
|
||||||
default: "false"
|
default: "false"
|
||||||
fetch_additional_submodule_history:
|
fetch_additional_submodule_history:
|
||||||
@@ -149,7 +157,7 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
default: "false"
|
default: "false"
|
||||||
write_output_files:
|
write_output_files:
|
||||||
description: "Write outputs to the `output_dir` defaults to `.github/outputs` folder. **NOTE:** This creates a `.txt` file by default and a `.json` file if `json` is set to `true`."
|
description: "Write outputs to the `output_dir` defaults to `.github/outputs` folder. NOTE: This creates a `.txt` file by default and a `.json` file if `json` is set to `true`."
|
||||||
required: false
|
required: false
|
||||||
default: "false"
|
default: "false"
|
||||||
output_dir:
|
output_dir:
|
||||||
@@ -169,7 +177,10 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
default: ""
|
default: ""
|
||||||
recover_files:
|
recover_files:
|
||||||
description: "File and directory patterns used to recover deleted files, defaults to the patterns provided via the `files`, `files_from_source_file`, `files_ignore` and `files_ignore_from_source_file` inputs or all deleted files if no patterns are provided."
|
description: |
|
||||||
|
File and directory patterns used to recover deleted files,
|
||||||
|
defaults to the patterns provided via the `files`, `files_from_source_file`, `files_ignore` and `files_ignore_from_source_file` inputs
|
||||||
|
or all deleted files if no patterns are provided.
|
||||||
required: false
|
required: false
|
||||||
default: ""
|
default: ""
|
||||||
recover_files_separator:
|
recover_files_separator:
|
||||||
@@ -185,13 +196,17 @@ inputs:
|
|||||||
default: "\n"
|
default: "\n"
|
||||||
required: false
|
required: false
|
||||||
token:
|
token:
|
||||||
description: "Github token used to fetch changed files from Github's API."
|
description: "GitHub token used to fetch changed files from Github's API."
|
||||||
required: false
|
required: false
|
||||||
default: ${{ github.token }}
|
default: ${{ github.token }}
|
||||||
api_url:
|
api_url:
|
||||||
description: "Github API URL."
|
description: "Github API URL."
|
||||||
required: false
|
required: false
|
||||||
default: ${{ github.api_url }}
|
default: ${{ github.api_url }}
|
||||||
|
use_rest_api:
|
||||||
|
description: "Force the use of Github's REST API even when a local copy of the repository exists"
|
||||||
|
required: false
|
||||||
|
default: "false"
|
||||||
fail_on_initial_diff_error:
|
fail_on_initial_diff_error:
|
||||||
description: "Fail when the initial diff fails."
|
description: "Fail when the initial diff fails."
|
||||||
required: false
|
required: false
|
||||||
@@ -200,6 +215,10 @@ inputs:
|
|||||||
description: "Fail when the submodule diff fails."
|
description: "Fail when the submodule diff fails."
|
||||||
required: false
|
required: false
|
||||||
default: "false"
|
default: "false"
|
||||||
|
negation_patterns_first:
|
||||||
|
description: "Apply the negation patterns first. NOTE: This affects how changed files are matched."
|
||||||
|
required: false
|
||||||
|
default: "false"
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
added_files:
|
added_files:
|
||||||
|
|||||||
4577
dist/index.js
generated
vendored
4577
dist/index.js
generated
vendored
File diff suppressed because it is too large
Load Diff
2
dist/index.js.map
generated
vendored
2
dist/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
25
dist/licenses.txt
generated
vendored
25
dist/licenses.txt
generated
vendored
@@ -564,31 +564,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
is-plain-object
|
|
||||||
MIT
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2014-2017, Jon Schlinkert.
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
|
|
||||||
|
|
||||||
lodash
|
lodash
|
||||||
MIT
|
MIT
|
||||||
Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|
Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|
||||||
|
|||||||
@@ -10,4 +10,4 @@ module.exports = {
|
|||||||
setupFiles: [
|
setupFiles: [
|
||||||
"<rootDir>/jest/setupEnv.cjs"
|
"<rootDir>/jest/setupEnv.cjs"
|
||||||
]
|
]
|
||||||
}
|
};
|
||||||
|
|||||||
10
package.json
10
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@tj-actions/changed-files",
|
"name": "@tj-actions/changed-files",
|
||||||
"version": "40.0.1",
|
"version": "42.0.0",
|
||||||
"description": "Github action to retrieve all (added, copied, modified, deleted, renamed, type changed, unmerged, unknown) files and directories.",
|
"description": "Github action to retrieve all (added, copied, modified, deleted, renamed, type changed, unmerged, unknown) files and directories.",
|
||||||
"main": "lib/main.js",
|
"main": "lib/main.js",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
@@ -8,10 +8,10 @@
|
|||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc",
|
"build": "tsc",
|
||||||
"format": "prettier --write **/*.ts",
|
"format": "prettier --write src/*.ts src/**/*.ts",
|
||||||
"format-check": "prettier --check **/*.ts",
|
"format-check": "prettier --check src/*.ts src/**/*.ts",
|
||||||
"lint": "eslint **/*.ts --max-warnings 0",
|
"lint": "eslint src/*.ts src/**/*.ts --max-warnings 0",
|
||||||
"lint:fix": "eslint --fix src/**/*.ts",
|
"lint:fix": "eslint --fix src/*.ts src/**/*.ts",
|
||||||
"package": "ncc build lib/main.js --source-map --license licenses.txt",
|
"package": "ncc build lib/main.js --source-map --license licenses.txt",
|
||||||
"test": "jest --coverage",
|
"test": "jest --coverage",
|
||||||
"all": "yarn build && yarn format && yarn lint && yarn package && yarn test"
|
"all": "yarn build && yarn format && yarn lint && yarn package && yarn test"
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
describe('main test', () => {
|
|
||||||
it('adds two numbers', async () => {
|
|
||||||
expect(1 + 1).toEqual(2)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
@@ -1,9 +1,12 @@
|
|||||||
|
import * as core from '@actions/core'
|
||||||
import {ChangeTypeEnum} from '../changedFiles'
|
import {ChangeTypeEnum} from '../changedFiles'
|
||||||
|
import {Inputs} from '../inputs'
|
||||||
import {
|
import {
|
||||||
getDirname,
|
getDirname,
|
||||||
getDirnameMaxDepth,
|
getDirnameMaxDepth,
|
||||||
getFilteredChangedFiles,
|
getFilteredChangedFiles,
|
||||||
normalizeSeparators
|
normalizeSeparators,
|
||||||
|
warnUnsupportedRESTAPIInputs
|
||||||
} from '../utils'
|
} from '../utils'
|
||||||
|
|
||||||
const originalPlatform = process.platform
|
const originalPlatform = process.platform
|
||||||
@@ -575,4 +578,77 @@ describe('utils test', () => {
|
|||||||
expect(filteredFiles[ChangeTypeEnum.Modified]).toEqual([])
|
expect(filteredFiles[ChangeTypeEnum.Modified]).toEqual([])
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('warnUnsupportedRESTAPIInputs', () => {
|
||||||
|
// Warns about unsupported inputs when using the REST API.
|
||||||
|
it('should warn about unsupported inputs when all inputs are supported', async () => {
|
||||||
|
const inputs: Inputs = {
|
||||||
|
files: '',
|
||||||
|
filesSeparator: '\n',
|
||||||
|
filesFromSourceFile: '',
|
||||||
|
filesFromSourceFileSeparator: '\n',
|
||||||
|
filesYaml: '',
|
||||||
|
filesYamlFromSourceFile: '',
|
||||||
|
filesYamlFromSourceFileSeparator: '\n',
|
||||||
|
filesIgnore: '',
|
||||||
|
filesIgnoreSeparator: '\n',
|
||||||
|
filesIgnoreFromSourceFile: '',
|
||||||
|
filesIgnoreFromSourceFileSeparator: '\n',
|
||||||
|
filesIgnoreYaml: '',
|
||||||
|
filesIgnoreYamlFromSourceFile: '',
|
||||||
|
filesIgnoreYamlFromSourceFileSeparator: '\n',
|
||||||
|
separator: ' ',
|
||||||
|
includeAllOldNewRenamedFiles: false,
|
||||||
|
oldNewSeparator: ',',
|
||||||
|
oldNewFilesSeparator: ' ',
|
||||||
|
sha: '1313123',
|
||||||
|
baseSha: '',
|
||||||
|
since: '',
|
||||||
|
until: '',
|
||||||
|
path: '.',
|
||||||
|
quotepath: true,
|
||||||
|
diffRelative: true,
|
||||||
|
dirNames: false,
|
||||||
|
dirNamesMaxDepth: undefined,
|
||||||
|
dirNamesExcludeCurrentDir: false,
|
||||||
|
dirNamesIncludeFiles: '',
|
||||||
|
dirNamesIncludeFilesSeparator: '\n',
|
||||||
|
dirNamesDeletedFilesIncludeOnlyDeletedDirs: false,
|
||||||
|
json: false,
|
||||||
|
escapeJson: true,
|
||||||
|
safeOutput: true,
|
||||||
|
fetchDepth: 50,
|
||||||
|
fetchAdditionalSubmoduleHistory: false,
|
||||||
|
sinceLastRemoteCommit: false,
|
||||||
|
writeOutputFiles: false,
|
||||||
|
outputDir: '.github/outputs',
|
||||||
|
outputRenamedFilesAsDeletedAndAdded: false,
|
||||||
|
recoverDeletedFiles: false,
|
||||||
|
recoverDeletedFilesToDestination: '',
|
||||||
|
recoverFiles: '',
|
||||||
|
recoverFilesSeparator: '\n',
|
||||||
|
recoverFilesIgnore: '',
|
||||||
|
recoverFilesIgnoreSeparator: '\n',
|
||||||
|
token: '${{ github.token }}',
|
||||||
|
apiUrl: '${{ github.api_url }}',
|
||||||
|
skipInitialFetch: false,
|
||||||
|
failOnInitialDiffError: false,
|
||||||
|
failOnSubmoduleDiffError: false,
|
||||||
|
negationPatternsFirst: false,
|
||||||
|
useRestApi: false
|
||||||
|
}
|
||||||
|
|
||||||
|
const coreWarningSpy = jest.spyOn(core, 'warning')
|
||||||
|
|
||||||
|
await warnUnsupportedRESTAPIInputs({
|
||||||
|
inputs
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(coreWarningSpy).toHaveBeenCalledWith(
|
||||||
|
'Input "sha" is not supported when using GitHub\'s REST API to get changed files'
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(coreWarningSpy).toHaveBeenCalledTimes(1)
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ export const getRenamedFiles = async ({
|
|||||||
}))
|
}))
|
||||||
) {
|
) {
|
||||||
let message = `Unable to use three dot diff for: ${submodulePath} submodule. Falling back to two dot diff. You can set 'fetch_additional_submodule_history: true' to fetch additional submodule history in order to use three dot diff`
|
let message = `Unable to use three dot diff for: ${submodulePath} submodule. Falling back to two dot diff. You can set 'fetch_additional_submodule_history: true' to fetch additional submodule history in order to use three dot diff`
|
||||||
if (inputs.fetchSubmoduleHistory) {
|
if (inputs.fetchAdditionalSubmoduleHistory) {
|
||||||
message = `To fetch additional submodule history for: ${submodulePath} you can increase history depth using 'fetch_depth' input`
|
message = `To fetch additional submodule history for: ${submodulePath} you can increase history depth using 'fetch_depth' input`
|
||||||
}
|
}
|
||||||
core.info(message)
|
core.info(message)
|
||||||
@@ -221,7 +221,7 @@ export const getAllDiffFiles = async ({
|
|||||||
diffResult,
|
diffResult,
|
||||||
submodulePaths,
|
submodulePaths,
|
||||||
outputRenamedFilesAsDeletedAndAdded,
|
outputRenamedFilesAsDeletedAndAdded,
|
||||||
fetchSubmoduleHistory,
|
fetchAdditionalSubmoduleHistory,
|
||||||
failOnInitialDiffError,
|
failOnInitialDiffError,
|
||||||
failOnSubmoduleDiffError
|
failOnSubmoduleDiffError
|
||||||
}: {
|
}: {
|
||||||
@@ -230,7 +230,7 @@ export const getAllDiffFiles = async ({
|
|||||||
diffResult: DiffResult
|
diffResult: DiffResult
|
||||||
submodulePaths: string[]
|
submodulePaths: string[]
|
||||||
outputRenamedFilesAsDeletedAndAdded: boolean
|
outputRenamedFilesAsDeletedAndAdded: boolean
|
||||||
fetchSubmoduleHistory: boolean
|
fetchAdditionalSubmoduleHistory: boolean
|
||||||
failOnInitialDiffError: boolean
|
failOnInitialDiffError: boolean
|
||||||
failOnSubmoduleDiffError: boolean
|
failOnSubmoduleDiffError: boolean
|
||||||
}): Promise<ChangedFiles> => {
|
}): Promise<ChangedFiles> => {
|
||||||
@@ -270,7 +270,7 @@ export const getAllDiffFiles = async ({
|
|||||||
}))
|
}))
|
||||||
) {
|
) {
|
||||||
let message = `Set 'fetch_additional_submodule_history: true' to fetch additional submodule history for: ${submodulePath}`
|
let message = `Set 'fetch_additional_submodule_history: true' to fetch additional submodule history for: ${submodulePath}`
|
||||||
if (fetchSubmoduleHistory) {
|
if (fetchAdditionalSubmoduleHistory) {
|
||||||
message = `To fetch additional submodule history for: ${submodulePath} you can increase history depth using 'fetch_depth' input`
|
message = `To fetch additional submodule history for: ${submodulePath} you can increase history depth using 'fetch_depth' input`
|
||||||
}
|
}
|
||||||
core.warning(message)
|
core.warning(message)
|
||||||
|
|||||||
@@ -43,7 +43,8 @@ export const setOutputsAndGetModifiedAndChangedFilesStatus = async ({
|
|||||||
writeOutputFiles: inputs.writeOutputFiles,
|
writeOutputFiles: inputs.writeOutputFiles,
|
||||||
outputDir: inputs.outputDir,
|
outputDir: inputs.outputDir,
|
||||||
json: inputs.json,
|
json: inputs.json,
|
||||||
shouldEscape: inputs.escapeJson
|
shouldEscape: inputs.escapeJson,
|
||||||
|
safeOutput: inputs.safeOutput
|
||||||
})
|
})
|
||||||
await setOutput({
|
await setOutput({
|
||||||
key: getOutputKey('added_files_count', outputPrefix),
|
key: getOutputKey('added_files_count', outputPrefix),
|
||||||
@@ -64,7 +65,8 @@ export const setOutputsAndGetModifiedAndChangedFilesStatus = async ({
|
|||||||
writeOutputFiles: inputs.writeOutputFiles,
|
writeOutputFiles: inputs.writeOutputFiles,
|
||||||
outputDir: inputs.outputDir,
|
outputDir: inputs.outputDir,
|
||||||
json: inputs.json,
|
json: inputs.json,
|
||||||
shouldEscape: inputs.escapeJson
|
shouldEscape: inputs.escapeJson,
|
||||||
|
safeOutput: inputs.safeOutput
|
||||||
})
|
})
|
||||||
|
|
||||||
await setOutput({
|
await setOutput({
|
||||||
@@ -86,7 +88,8 @@ export const setOutputsAndGetModifiedAndChangedFilesStatus = async ({
|
|||||||
writeOutputFiles: inputs.writeOutputFiles,
|
writeOutputFiles: inputs.writeOutputFiles,
|
||||||
outputDir: inputs.outputDir,
|
outputDir: inputs.outputDir,
|
||||||
json: inputs.json,
|
json: inputs.json,
|
||||||
shouldEscape: inputs.escapeJson
|
shouldEscape: inputs.escapeJson,
|
||||||
|
safeOutput: inputs.safeOutput
|
||||||
})
|
})
|
||||||
|
|
||||||
await setOutput({
|
await setOutput({
|
||||||
@@ -108,7 +111,8 @@ export const setOutputsAndGetModifiedAndChangedFilesStatus = async ({
|
|||||||
writeOutputFiles: inputs.writeOutputFiles,
|
writeOutputFiles: inputs.writeOutputFiles,
|
||||||
outputDir: inputs.outputDir,
|
outputDir: inputs.outputDir,
|
||||||
json: inputs.json,
|
json: inputs.json,
|
||||||
shouldEscape: inputs.escapeJson
|
shouldEscape: inputs.escapeJson,
|
||||||
|
safeOutput: inputs.safeOutput
|
||||||
})
|
})
|
||||||
|
|
||||||
await setOutput({
|
await setOutput({
|
||||||
@@ -130,7 +134,8 @@ export const setOutputsAndGetModifiedAndChangedFilesStatus = async ({
|
|||||||
writeOutputFiles: inputs.writeOutputFiles,
|
writeOutputFiles: inputs.writeOutputFiles,
|
||||||
outputDir: inputs.outputDir,
|
outputDir: inputs.outputDir,
|
||||||
json: inputs.json,
|
json: inputs.json,
|
||||||
shouldEscape: inputs.escapeJson
|
shouldEscape: inputs.escapeJson,
|
||||||
|
safeOutput: inputs.safeOutput
|
||||||
})
|
})
|
||||||
|
|
||||||
await setOutput({
|
await setOutput({
|
||||||
@@ -152,7 +157,8 @@ export const setOutputsAndGetModifiedAndChangedFilesStatus = async ({
|
|||||||
writeOutputFiles: inputs.writeOutputFiles,
|
writeOutputFiles: inputs.writeOutputFiles,
|
||||||
outputDir: inputs.outputDir,
|
outputDir: inputs.outputDir,
|
||||||
json: inputs.json,
|
json: inputs.json,
|
||||||
shouldEscape: inputs.escapeJson
|
shouldEscape: inputs.escapeJson,
|
||||||
|
safeOutput: inputs.safeOutput
|
||||||
})
|
})
|
||||||
|
|
||||||
await setOutput({
|
await setOutput({
|
||||||
@@ -174,7 +180,8 @@ export const setOutputsAndGetModifiedAndChangedFilesStatus = async ({
|
|||||||
writeOutputFiles: inputs.writeOutputFiles,
|
writeOutputFiles: inputs.writeOutputFiles,
|
||||||
outputDir: inputs.outputDir,
|
outputDir: inputs.outputDir,
|
||||||
json: inputs.json,
|
json: inputs.json,
|
||||||
shouldEscape: inputs.escapeJson
|
shouldEscape: inputs.escapeJson,
|
||||||
|
safeOutput: inputs.safeOutput
|
||||||
})
|
})
|
||||||
|
|
||||||
await setOutput({
|
await setOutput({
|
||||||
@@ -199,7 +206,8 @@ export const setOutputsAndGetModifiedAndChangedFilesStatus = async ({
|
|||||||
writeOutputFiles: inputs.writeOutputFiles,
|
writeOutputFiles: inputs.writeOutputFiles,
|
||||||
outputDir: inputs.outputDir,
|
outputDir: inputs.outputDir,
|
||||||
json: inputs.json,
|
json: inputs.json,
|
||||||
shouldEscape: inputs.escapeJson
|
shouldEscape: inputs.escapeJson,
|
||||||
|
safeOutput: inputs.safeOutput
|
||||||
})
|
})
|
||||||
|
|
||||||
await setOutput({
|
await setOutput({
|
||||||
@@ -226,7 +234,8 @@ export const setOutputsAndGetModifiedAndChangedFilesStatus = async ({
|
|||||||
writeOutputFiles: inputs.writeOutputFiles,
|
writeOutputFiles: inputs.writeOutputFiles,
|
||||||
outputDir: inputs.outputDir,
|
outputDir: inputs.outputDir,
|
||||||
json: inputs.json,
|
json: inputs.json,
|
||||||
shouldEscape: inputs.escapeJson
|
shouldEscape: inputs.escapeJson,
|
||||||
|
safeOutput: inputs.safeOutput
|
||||||
})
|
})
|
||||||
|
|
||||||
await setOutput({
|
await setOutput({
|
||||||
@@ -314,7 +323,8 @@ export const setOutputsAndGetModifiedAndChangedFilesStatus = async ({
|
|||||||
writeOutputFiles: inputs.writeOutputFiles,
|
writeOutputFiles: inputs.writeOutputFiles,
|
||||||
outputDir: inputs.outputDir,
|
outputDir: inputs.outputDir,
|
||||||
json: inputs.json,
|
json: inputs.json,
|
||||||
shouldEscape: inputs.escapeJson
|
shouldEscape: inputs.escapeJson,
|
||||||
|
safeOutput: inputs.safeOutput
|
||||||
})
|
})
|
||||||
|
|
||||||
await setOutput({
|
await setOutput({
|
||||||
@@ -419,7 +429,8 @@ export const setOutputsAndGetModifiedAndChangedFilesStatus = async ({
|
|||||||
writeOutputFiles: inputs.writeOutputFiles,
|
writeOutputFiles: inputs.writeOutputFiles,
|
||||||
outputDir: inputs.outputDir,
|
outputDir: inputs.outputDir,
|
||||||
json: inputs.json,
|
json: inputs.json,
|
||||||
shouldEscape: inputs.escapeJson
|
shouldEscape: inputs.escapeJson,
|
||||||
|
safeOutput: inputs.safeOutput
|
||||||
})
|
})
|
||||||
|
|
||||||
await setOutput({
|
await setOutput({
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import {Env} from './env'
|
|||||||
import {Inputs} from './inputs'
|
import {Inputs} from './inputs'
|
||||||
import {
|
import {
|
||||||
canDiffCommits,
|
canDiffCommits,
|
||||||
|
cleanShaInput,
|
||||||
getCurrentBranchName,
|
getCurrentBranchName,
|
||||||
getHeadSha,
|
getHeadSha,
|
||||||
getParentSha,
|
getParentSha,
|
||||||
@@ -23,7 +24,11 @@ const getCurrentSHA = async ({
|
|||||||
inputs: Inputs
|
inputs: Inputs
|
||||||
workingDirectory: string
|
workingDirectory: string
|
||||||
}): Promise<string> => {
|
}): Promise<string> => {
|
||||||
let currentSha = inputs.sha
|
let currentSha = await cleanShaInput({
|
||||||
|
sha: inputs.sha,
|
||||||
|
cwd: workingDirectory,
|
||||||
|
token: inputs.token
|
||||||
|
})
|
||||||
core.debug('Getting current SHA...')
|
core.debug('Getting current SHA...')
|
||||||
|
|
||||||
if (inputs.until) {
|
if (inputs.until) {
|
||||||
@@ -147,7 +152,7 @@ export const getSHAForNonPullRequestEvent = async (
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (hasSubmodule && inputs.fetchSubmoduleHistory) {
|
if (hasSubmodule && inputs.fetchAdditionalSubmoduleHistory) {
|
||||||
await gitFetchSubmodules({
|
await gitFetchSubmodules({
|
||||||
cwd: workingDirectory,
|
cwd: workingDirectory,
|
||||||
args: [
|
args: [
|
||||||
@@ -162,7 +167,11 @@ export const getSHAForNonPullRequestEvent = async (
|
|||||||
}
|
}
|
||||||
|
|
||||||
const currentSha = await getCurrentSHA({inputs, workingDirectory})
|
const currentSha = await getCurrentSHA({inputs, workingDirectory})
|
||||||
let previousSha = inputs.baseSha
|
let previousSha = await cleanShaInput({
|
||||||
|
sha: inputs.baseSha,
|
||||||
|
cwd: workingDirectory,
|
||||||
|
token: inputs.token
|
||||||
|
})
|
||||||
const diff = '..'
|
const diff = '..'
|
||||||
const currentBranchName = await getCurrentBranchName({cwd: workingDirectory})
|
const currentBranchName = await getCurrentBranchName({cwd: workingDirectory})
|
||||||
|
|
||||||
@@ -175,7 +184,7 @@ export const getSHAForNonPullRequestEvent = async (
|
|||||||
currentBranch = currentBranchName
|
currentBranch = currentBranchName
|
||||||
}
|
}
|
||||||
|
|
||||||
if (previousSha && currentSha && currentBranch && targetBranch) {
|
if (inputs.baseSha && inputs.sha && currentBranch && targetBranch) {
|
||||||
if (previousSha === currentSha) {
|
if (previousSha === currentSha) {
|
||||||
core.error(
|
core.error(
|
||||||
`Similar commit hashes detected: previous sha: ${previousSha} is equivalent to the current sha: ${currentSha}.`
|
`Similar commit hashes detected: previous sha: ${previousSha} is equivalent to the current sha: ${currentSha}.`
|
||||||
@@ -186,7 +195,6 @@ export const getSHAForNonPullRequestEvent = async (
|
|||||||
throw new Error('Similar commit hashes detected.')
|
throw new Error('Similar commit hashes detected.')
|
||||||
}
|
}
|
||||||
|
|
||||||
await verifyCommitSha({sha: previousSha, cwd: workingDirectory})
|
|
||||||
core.debug(`Previous SHA: ${previousSha}`)
|
core.debug(`Previous SHA: ${previousSha}`)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -198,7 +206,7 @@ export const getSHAForNonPullRequestEvent = async (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!previousSha) {
|
if (!previousSha || previousSha === currentSha) {
|
||||||
core.debug('Getting previous SHA...')
|
core.debug('Getting previous SHA...')
|
||||||
if (inputs.since) {
|
if (inputs.since) {
|
||||||
core.debug(`Getting base SHA for '${inputs.since}'...`)
|
core.debug(`Getting base SHA for '${inputs.since}'...`)
|
||||||
@@ -374,7 +382,7 @@ export const getSHAForPullRequestEvent = async (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (hasSubmodule && inputs.fetchSubmoduleHistory) {
|
if (hasSubmodule && inputs.fetchAdditionalSubmoduleHistory) {
|
||||||
await gitFetchSubmodules({
|
await gitFetchSubmodules({
|
||||||
cwd: workingDirectory,
|
cwd: workingDirectory,
|
||||||
args: [
|
args: [
|
||||||
@@ -390,10 +398,14 @@ export const getSHAForPullRequestEvent = async (
|
|||||||
}
|
}
|
||||||
|
|
||||||
const currentSha = await getCurrentSHA({inputs, workingDirectory})
|
const currentSha = await getCurrentSHA({inputs, workingDirectory})
|
||||||
let previousSha = inputs.baseSha
|
let previousSha = await cleanShaInput({
|
||||||
|
sha: inputs.baseSha,
|
||||||
|
cwd: workingDirectory,
|
||||||
|
token: inputs.token
|
||||||
|
})
|
||||||
let diff = '...'
|
let diff = '...'
|
||||||
|
|
||||||
if (previousSha && currentSha && currentBranch && targetBranch) {
|
if (inputs.baseSha && inputs.sha && currentBranch && targetBranch) {
|
||||||
if (previousSha === currentSha) {
|
if (previousSha === currentSha) {
|
||||||
core.error(
|
core.error(
|
||||||
`Similar commit hashes detected: previous sha: ${previousSha} is equivalent to the current sha: ${currentSha}.`
|
`Similar commit hashes detected: previous sha: ${previousSha} is equivalent to the current sha: ${currentSha}.`
|
||||||
@@ -404,7 +416,6 @@ export const getSHAForPullRequestEvent = async (
|
|||||||
throw new Error('Similar commit hashes detected.')
|
throw new Error('Similar commit hashes detected.')
|
||||||
}
|
}
|
||||||
|
|
||||||
await verifyCommitSha({sha: previousSha, cwd: workingDirectory})
|
|
||||||
core.debug(`Previous SHA: ${previousSha}`)
|
core.debug(`Previous SHA: ${previousSha}`)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -423,7 +434,7 @@ export const getSHAForPullRequestEvent = async (
|
|||||||
diff = '..'
|
diff = '..'
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!previousSha) {
|
if (!previousSha || previousSha === currentSha) {
|
||||||
if (inputs.sinceLastRemoteCommit) {
|
if (inputs.sinceLastRemoteCommit) {
|
||||||
previousSha = github.context.payload.before
|
previousSha = github.context.payload.before
|
||||||
|
|
||||||
|
|||||||
24
src/constant.ts
Normal file
24
src/constant.ts
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
import {Inputs} from './inputs'
|
||||||
|
|
||||||
|
export const DEFAULT_VALUES_OF_UNSUPPORTED_API_INPUTS: Partial<Inputs> = {
|
||||||
|
sha: '',
|
||||||
|
baseSha: '',
|
||||||
|
since: '',
|
||||||
|
until: '',
|
||||||
|
path: '.',
|
||||||
|
quotepath: true,
|
||||||
|
diffRelative: true,
|
||||||
|
sinceLastRemoteCommit: false,
|
||||||
|
recoverDeletedFiles: false,
|
||||||
|
recoverDeletedFilesToDestination: '',
|
||||||
|
recoverFiles: '',
|
||||||
|
recoverFilesSeparator: '\n',
|
||||||
|
recoverFilesIgnore: '',
|
||||||
|
recoverFilesIgnoreSeparator: '\n',
|
||||||
|
includeAllOldNewRenamedFiles: false,
|
||||||
|
oldNewSeparator: ',',
|
||||||
|
oldNewFilesSeparator: ' ',
|
||||||
|
skipInitialFetch: false,
|
||||||
|
fetchAdditionalSubmoduleHistory: false,
|
||||||
|
dirNamesDeletedFilesIncludeOnlyDeletedDirs: false
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@ export type Env = {
|
|||||||
GITHUB_WORKSPACE: string
|
GITHUB_WORKSPACE: string
|
||||||
}
|
}
|
||||||
export const getEnv = async (): Promise<Env> => {
|
export const getEnv = async (): Promise<Env> => {
|
||||||
core.debug(`Process Env: ${JSON.stringify(process.env, null, 2)}`)
|
core.debug(`Env: ${JSON.stringify(process.env, null, 2)}`)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
GITHUB_REF_NAME: process.env.GITHUB_REF_NAME || '',
|
GITHUB_REF_NAME: process.env.GITHUB_REF_NAME || '',
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ export type Inputs = {
|
|||||||
since: string
|
since: string
|
||||||
until: string
|
until: string
|
||||||
path: string
|
path: string
|
||||||
quotePath: boolean
|
quotepath: boolean
|
||||||
diffRelative: boolean
|
diffRelative: boolean
|
||||||
dirNames: boolean
|
dirNames: boolean
|
||||||
dirNamesMaxDepth?: number
|
dirNamesMaxDepth?: number
|
||||||
@@ -34,8 +34,9 @@ export type Inputs = {
|
|||||||
dirNamesDeletedFilesIncludeOnlyDeletedDirs: boolean
|
dirNamesDeletedFilesIncludeOnlyDeletedDirs: boolean
|
||||||
json: boolean
|
json: boolean
|
||||||
escapeJson: boolean
|
escapeJson: boolean
|
||||||
|
safeOutput: boolean
|
||||||
fetchDepth?: number
|
fetchDepth?: number
|
||||||
fetchSubmoduleHistory: boolean
|
fetchAdditionalSubmoduleHistory: boolean
|
||||||
sinceLastRemoteCommit: boolean
|
sinceLastRemoteCommit: boolean
|
||||||
writeOutputFiles: boolean
|
writeOutputFiles: boolean
|
||||||
outputDir: string
|
outputDir: string
|
||||||
@@ -51,6 +52,8 @@ export type Inputs = {
|
|||||||
skipInitialFetch: boolean
|
skipInitialFetch: boolean
|
||||||
failOnInitialDiffError: boolean
|
failOnInitialDiffError: boolean
|
||||||
failOnSubmoduleDiffError: boolean
|
failOnSubmoduleDiffError: boolean
|
||||||
|
negationPatternsFirst: boolean
|
||||||
|
useRestApi: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getInputs = (): Inputs => {
|
export const getInputs = (): Inputs => {
|
||||||
@@ -129,7 +132,7 @@ export const getInputs = (): Inputs => {
|
|||||||
const since = core.getInput('since', {required: false})
|
const since = core.getInput('since', {required: false})
|
||||||
const until = core.getInput('until', {required: false})
|
const until = core.getInput('until', {required: false})
|
||||||
const path = core.getInput('path', {required: false})
|
const path = core.getInput('path', {required: false})
|
||||||
const quotePath = core.getBooleanInput('quotepath', {required: false})
|
const quotepath = core.getBooleanInput('quotepath', {required: false})
|
||||||
const diffRelative = core.getBooleanInput('diff_relative', {required: false})
|
const diffRelative = core.getBooleanInput('diff_relative', {required: false})
|
||||||
const dirNames = core.getBooleanInput('dir_names', {required: false})
|
const dirNames = core.getBooleanInput('dir_names', {required: false})
|
||||||
const dirNamesMaxDepth = core.getInput('dir_names_max_depth', {
|
const dirNamesMaxDepth = core.getInput('dir_names_max_depth', {
|
||||||
@@ -153,6 +156,7 @@ export const getInputs = (): Inputs => {
|
|||||||
)
|
)
|
||||||
const json = core.getBooleanInput('json', {required: false})
|
const json = core.getBooleanInput('json', {required: false})
|
||||||
const escapeJson = core.getBooleanInput('escape_json', {required: false})
|
const escapeJson = core.getBooleanInput('escape_json', {required: false})
|
||||||
|
const safeOutput = core.getBooleanInput('safe_output', {required: false})
|
||||||
const fetchDepth = core.getInput('fetch_depth', {required: false})
|
const fetchDepth = core.getInput('fetch_depth', {required: false})
|
||||||
const sinceLastRemoteCommit = core.getBooleanInput(
|
const sinceLastRemoteCommit = core.getBooleanInput(
|
||||||
'since_last_remote_commit',
|
'since_last_remote_commit',
|
||||||
@@ -193,7 +197,7 @@ export const getInputs = (): Inputs => {
|
|||||||
const skipInitialFetch = core.getBooleanInput('skip_initial_fetch', {
|
const skipInitialFetch = core.getBooleanInput('skip_initial_fetch', {
|
||||||
required: false
|
required: false
|
||||||
})
|
})
|
||||||
const fetchSubmoduleHistory = core.getBooleanInput(
|
const fetchAdditionalSubmoduleHistory = core.getBooleanInput(
|
||||||
'fetch_additional_submodule_history',
|
'fetch_additional_submodule_history',
|
||||||
{
|
{
|
||||||
required: false
|
required: false
|
||||||
@@ -218,6 +222,17 @@ export const getInputs = (): Inputs => {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const negationPatternsFirst = core.getBooleanInput(
|
||||||
|
'negation_patterns_first',
|
||||||
|
{
|
||||||
|
required: false
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
const useRestApi = core.getBooleanInput('use_rest_api', {
|
||||||
|
required: false
|
||||||
|
})
|
||||||
|
|
||||||
const inputs: Inputs = {
|
const inputs: Inputs = {
|
||||||
files,
|
files,
|
||||||
filesSeparator,
|
filesSeparator,
|
||||||
@@ -242,7 +257,7 @@ export const getInputs = (): Inputs => {
|
|||||||
since,
|
since,
|
||||||
until,
|
until,
|
||||||
path,
|
path,
|
||||||
quotePath,
|
quotepath,
|
||||||
diffRelative,
|
diffRelative,
|
||||||
sinceLastRemoteCommit,
|
sinceLastRemoteCommit,
|
||||||
recoverDeletedFiles,
|
recoverDeletedFiles,
|
||||||
@@ -255,7 +270,7 @@ export const getInputs = (): Inputs => {
|
|||||||
oldNewSeparator,
|
oldNewSeparator,
|
||||||
oldNewFilesSeparator,
|
oldNewFilesSeparator,
|
||||||
skipInitialFetch,
|
skipInitialFetch,
|
||||||
fetchSubmoduleHistory,
|
fetchAdditionalSubmoduleHistory,
|
||||||
dirNamesDeletedFilesIncludeOnlyDeletedDirs,
|
dirNamesDeletedFilesIncludeOnlyDeletedDirs,
|
||||||
// End Not Supported via REST API
|
// End Not Supported via REST API
|
||||||
dirNames,
|
dirNames,
|
||||||
@@ -264,11 +279,14 @@ export const getInputs = (): Inputs => {
|
|||||||
dirNamesIncludeFilesSeparator,
|
dirNamesIncludeFilesSeparator,
|
||||||
json,
|
json,
|
||||||
escapeJson,
|
escapeJson,
|
||||||
|
safeOutput,
|
||||||
writeOutputFiles,
|
writeOutputFiles,
|
||||||
outputDir,
|
outputDir,
|
||||||
outputRenamedFilesAsDeletedAndAdded,
|
outputRenamedFilesAsDeletedAndAdded,
|
||||||
token,
|
token,
|
||||||
apiUrl
|
apiUrl,
|
||||||
|
negationPatternsFirst,
|
||||||
|
useRestApi
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fetchDepth) {
|
if (fetchDepth) {
|
||||||
|
|||||||
61
src/main.ts
61
src/main.ts
@@ -26,7 +26,8 @@ import {
|
|||||||
setOutput,
|
setOutput,
|
||||||
submoduleExists,
|
submoduleExists,
|
||||||
updateGitGlobalConfig,
|
updateGitGlobalConfig,
|
||||||
verifyMinimumGitVersion
|
verifyMinimumGitVersion,
|
||||||
|
warnUnsupportedRESTAPIInputs
|
||||||
} from './utils'
|
} from './utils'
|
||||||
|
|
||||||
const getChangedFilesFromLocalGitHistory = async ({
|
const getChangedFilesFromLocalGitHistory = async ({
|
||||||
@@ -44,15 +45,15 @@ const getChangedFilesFromLocalGitHistory = async ({
|
|||||||
}): Promise<void> => {
|
}): Promise<void> => {
|
||||||
await verifyMinimumGitVersion()
|
await verifyMinimumGitVersion()
|
||||||
|
|
||||||
let quotePathValue = 'on'
|
let quotepathValue = 'on'
|
||||||
|
|
||||||
if (!inputs.quotePath) {
|
if (!inputs.quotepath) {
|
||||||
quotePathValue = 'off'
|
quotepathValue = 'off'
|
||||||
}
|
}
|
||||||
|
|
||||||
await updateGitGlobalConfig({
|
await updateGitGlobalConfig({
|
||||||
name: 'core.quotepath',
|
name: 'core.quotepath',
|
||||||
value: quotePathValue
|
value: quotepathValue
|
||||||
})
|
})
|
||||||
|
|
||||||
if (inputs.diffRelative) {
|
if (inputs.diffRelative) {
|
||||||
@@ -123,7 +124,7 @@ const getChangedFilesFromLocalGitHistory = async ({
|
|||||||
diffResult,
|
diffResult,
|
||||||
submodulePaths,
|
submodulePaths,
|
||||||
outputRenamedFilesAsDeletedAndAdded,
|
outputRenamedFilesAsDeletedAndAdded,
|
||||||
fetchSubmoduleHistory: inputs.fetchSubmoduleHistory,
|
fetchAdditionalSubmoduleHistory: inputs.fetchAdditionalSubmoduleHistory,
|
||||||
failOnInitialDiffError: inputs.failOnInitialDiffError,
|
failOnInitialDiffError: inputs.failOnInitialDiffError,
|
||||||
failOnSubmoduleDiffError: inputs.failOnSubmoduleDiffError
|
failOnSubmoduleDiffError: inputs.failOnSubmoduleDiffError
|
||||||
})
|
})
|
||||||
@@ -144,7 +145,9 @@ const getChangedFilesFromLocalGitHistory = async ({
|
|||||||
workingDirectory,
|
workingDirectory,
|
||||||
deletedFiles: allDiffFiles[ChangeTypeEnum.Deleted],
|
deletedFiles: allDiffFiles[ChangeTypeEnum.Deleted],
|
||||||
recoverPatterns,
|
recoverPatterns,
|
||||||
sha: diffResult.previousSha
|
diffResult,
|
||||||
|
hasSubmodule,
|
||||||
|
submodulePaths
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,7 +174,8 @@ const getChangedFilesFromLocalGitHistory = async ({
|
|||||||
value: allOldNewRenamedFiles.paths,
|
value: allOldNewRenamedFiles.paths,
|
||||||
writeOutputFiles: inputs.writeOutputFiles,
|
writeOutputFiles: inputs.writeOutputFiles,
|
||||||
outputDir: inputs.outputDir,
|
outputDir: inputs.outputDir,
|
||||||
json: inputs.json
|
json: inputs.json,
|
||||||
|
safeOutput: inputs.safeOutput
|
||||||
})
|
})
|
||||||
await setOutput({
|
await setOutput({
|
||||||
key: 'all_old_new_renamed_files_count',
|
key: 'all_old_new_renamed_files_count',
|
||||||
@@ -221,7 +225,7 @@ export async function run(): Promise<void> {
|
|||||||
|
|
||||||
const workingDirectory = path.resolve(
|
const workingDirectory = path.resolve(
|
||||||
env.GITHUB_WORKSPACE || process.cwd(),
|
env.GITHUB_WORKSPACE || process.cwd(),
|
||||||
inputs.path
|
inputs.useRestApi ? '.' : inputs.path
|
||||||
)
|
)
|
||||||
core.debug(`Working directory: ${workingDirectory}`)
|
core.debug(`Working directory: ${workingDirectory}`)
|
||||||
|
|
||||||
@@ -240,35 +244,19 @@ export async function run(): Promise<void> {
|
|||||||
})
|
})
|
||||||
core.debug(`Yaml file patterns: ${JSON.stringify(yamlFilePatterns)}`)
|
core.debug(`Yaml file patterns: ${JSON.stringify(yamlFilePatterns)}`)
|
||||||
|
|
||||||
|
if (inputs.useRestApi && !github.context.payload.pull_request?.number) {
|
||||||
|
throw new Error(
|
||||||
|
"Only pull_request* events are supported when using GitHub's REST API."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
inputs.token &&
|
inputs.token &&
|
||||||
github.context.payload.pull_request?.number &&
|
github.context.payload.pull_request?.number &&
|
||||||
!hasGitDirectory
|
(!hasGitDirectory || inputs.useRestApi)
|
||||||
) {
|
) {
|
||||||
core.info("Using GitHub's REST API to get changed files")
|
core.info("Using GitHub's REST API to get changed files")
|
||||||
const unsupportedInputs: (keyof Inputs)[] = [
|
await warnUnsupportedRESTAPIInputs({inputs})
|
||||||
'sha',
|
|
||||||
'baseSha',
|
|
||||||
'since',
|
|
||||||
'until',
|
|
||||||
'sinceLastRemoteCommit',
|
|
||||||
'recoverDeletedFiles',
|
|
||||||
'recoverDeletedFilesToDestination',
|
|
||||||
'recoverFiles',
|
|
||||||
'recoverFilesIgnore',
|
|
||||||
'includeAllOldNewRenamedFiles',
|
|
||||||
'skipInitialFetch',
|
|
||||||
'fetchSubmoduleHistory',
|
|
||||||
'dirNamesDeletedFilesIncludeOnlyDeletedDirs'
|
|
||||||
]
|
|
||||||
|
|
||||||
for (const input of unsupportedInputs) {
|
|
||||||
if (inputs[input]) {
|
|
||||||
core.warning(
|
|
||||||
`Input "${input}" is not supported when using GitHub's REST API to get changed files`
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
await getChangedFilesFromRESTAPI({
|
await getChangedFilesFromRESTAPI({
|
||||||
inputs,
|
inputs,
|
||||||
filePatterns,
|
filePatterns,
|
||||||
@@ -276,10 +264,10 @@ export async function run(): Promise<void> {
|
|||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
if (!hasGitDirectory) {
|
if (!hasGitDirectory) {
|
||||||
core.setFailed(
|
core.info(`Running on a ${github.context.eventName} event...`)
|
||||||
"Can't find local .git directory. Please run actions/checkout before this action"
|
throw new Error(
|
||||||
|
`Can't find local .git in ${workingDirectory} directory. Please run actions/checkout before this action (Make sure the 'path' input is correct). If you intend to use Github's REST API note that only pull_request* events are supported.`
|
||||||
)
|
)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
core.info('Using local .git directory')
|
core.info('Using local .git directory')
|
||||||
@@ -298,5 +286,6 @@ if (!process.env.TESTING) {
|
|||||||
// eslint-disable-next-line github/no-then
|
// eslint-disable-next-line github/no-then
|
||||||
run().catch(e => {
|
run().catch(e => {
|
||||||
core.setFailed(e.message || e)
|
core.setFailed(e.message || e)
|
||||||
|
process.exit(1)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
288
src/utils.ts
288
src/utils.ts
@@ -1,14 +1,16 @@
|
|||||||
/*global AsyncIterableIterator*/
|
/*global AsyncIterableIterator*/
|
||||||
import * as core from '@actions/core'
|
import * as core from '@actions/core'
|
||||||
import * as exec from '@actions/exec'
|
import * as exec from '@actions/exec'
|
||||||
|
import * as github from '@actions/github'
|
||||||
import {createReadStream, promises as fs} from 'fs'
|
import {createReadStream, promises as fs} from 'fs'
|
||||||
import {readFile} from 'fs/promises'
|
import {flattenDeep, snakeCase} from 'lodash'
|
||||||
import {flattenDeep} from 'lodash'
|
|
||||||
import mm from 'micromatch'
|
import mm from 'micromatch'
|
||||||
import * as path from 'path'
|
import * as path from 'path'
|
||||||
import {createInterface} from 'readline'
|
import {createInterface} from 'readline'
|
||||||
import {parseDocument} from 'yaml'
|
import {parseDocument} from 'yaml'
|
||||||
import {ChangedFiles, ChangeTypeEnum} from './changedFiles'
|
import {ChangedFiles, ChangeTypeEnum} from './changedFiles'
|
||||||
|
import {DiffResult} from './commitSha'
|
||||||
|
import {DEFAULT_VALUES_OF_UNSUPPORTED_API_INPUTS} from './constant'
|
||||||
import {Inputs} from './inputs'
|
import {Inputs} from './inputs'
|
||||||
|
|
||||||
const MINIMUM_GIT_VERSION = '2.18.0'
|
const MINIMUM_GIT_VERSION = '2.18.0'
|
||||||
@@ -169,15 +171,16 @@ async function* lineOfFileGenerator({
|
|||||||
input: fileStream,
|
input: fileStream,
|
||||||
crlfDelay: Infinity
|
crlfDelay: Infinity
|
||||||
})
|
})
|
||||||
for await (const line of rl) {
|
for await (let line of rl) {
|
||||||
if (!line.startsWith('#') && line !== '') {
|
if (!line.startsWith('#') && line !== '') {
|
||||||
if (excludedFiles) {
|
if (excludedFiles) {
|
||||||
if (line.startsWith('!')) {
|
line = line.startsWith('!') ? line : `!${line}`
|
||||||
yield line
|
if (line.endsWith(path.sep)) {
|
||||||
} else {
|
line = `${line}**`
|
||||||
yield `!${line}`
|
|
||||||
}
|
}
|
||||||
|
yield line
|
||||||
} else {
|
} else {
|
||||||
|
line = line.endsWith(path.sep) ? `${line}**` : line
|
||||||
yield line
|
yield line
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -283,6 +286,7 @@ export const submoduleExists = async ({
|
|||||||
* Fetches the git repository
|
* Fetches the git repository
|
||||||
* @param args - arguments for fetch command
|
* @param args - arguments for fetch command
|
||||||
* @param cwd - working directory
|
* @param cwd - working directory
|
||||||
|
* @returns exit code
|
||||||
*/
|
*/
|
||||||
export const gitFetch = async ({
|
export const gitFetch = async ({
|
||||||
args,
|
args,
|
||||||
@@ -331,6 +335,7 @@ export const gitFetchSubmodules = async ({
|
|||||||
/**
|
/**
|
||||||
* Retrieves all the submodule paths
|
* Retrieves all the submodule paths
|
||||||
* @param cwd - working directory
|
* @param cwd - working directory
|
||||||
|
* @returns submodule paths
|
||||||
*/
|
*/
|
||||||
export const getSubmodulePath = async ({
|
export const getSubmodulePath = async ({
|
||||||
cwd
|
cwd
|
||||||
@@ -365,6 +370,7 @@ export const getSubmodulePath = async ({
|
|||||||
* @param parentSha2 - parent commit sha
|
* @param parentSha2 - parent commit sha
|
||||||
* @param submodulePath - path of submodule
|
* @param submodulePath - path of submodule
|
||||||
* @param diff - diff type between parent commits (`..` or `...`)
|
* @param diff - diff type between parent commits (`..` or `...`)
|
||||||
|
* @returns commit sha of submodule
|
||||||
*/
|
*/
|
||||||
export const gitSubmoduleDiffSHA = async ({
|
export const gitSubmoduleDiffSHA = async ({
|
||||||
cwd,
|
cwd,
|
||||||
@@ -771,6 +777,56 @@ export const verifyCommitSha = async ({
|
|||||||
return exitCode
|
return exitCode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clean the sha from the input which could be a branch name or a commit sha.
|
||||||
|
*
|
||||||
|
* If the input is a valid commit sha, return it as is.
|
||||||
|
*
|
||||||
|
* If the input is a branch name, get the HEAD sha of that branch and return it.
|
||||||
|
*
|
||||||
|
* @param sha The input string, which could be a branch name or a commit sha.
|
||||||
|
* @param cwd The working directory.
|
||||||
|
* @param token The GitHub token.
|
||||||
|
* @returns The cleaned SHA string.
|
||||||
|
*/
|
||||||
|
export const cleanShaInput = async ({
|
||||||
|
sha,
|
||||||
|
cwd,
|
||||||
|
token
|
||||||
|
}: {
|
||||||
|
sha: string
|
||||||
|
cwd: string
|
||||||
|
token: string
|
||||||
|
}): Promise<string> => {
|
||||||
|
// Check if the input is a valid commit sha
|
||||||
|
if (!sha) {
|
||||||
|
return sha
|
||||||
|
}
|
||||||
|
// Check if the input is a valid commit sha
|
||||||
|
const {stdout, exitCode} = await exec.getExecOutput(
|
||||||
|
'git',
|
||||||
|
['rev-parse', '--verify', `${sha}^{commit}`],
|
||||||
|
{
|
||||||
|
cwd,
|
||||||
|
ignoreReturnCode: true,
|
||||||
|
silent: !core.isDebug()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
if (exitCode !== 0) {
|
||||||
|
const octokit = github.getOctokit(token)
|
||||||
|
// If it's not a valid commit sha, assume it's a branch name and get the HEAD sha
|
||||||
|
const {data: refData} = await octokit.rest.git.getRef({
|
||||||
|
owner: github.context.repo.owner,
|
||||||
|
repo: github.context.repo.repo,
|
||||||
|
ref: `heads/${sha}`
|
||||||
|
})
|
||||||
|
|
||||||
|
return refData.object.sha
|
||||||
|
}
|
||||||
|
|
||||||
|
return stdout.trim()
|
||||||
|
}
|
||||||
export const getPreviousGitTag = async ({
|
export const getPreviousGitTag = async ({
|
||||||
cwd
|
cwd
|
||||||
}: {
|
}: {
|
||||||
@@ -938,90 +994,101 @@ export const getFilePatterns = async ({
|
|||||||
inputs: Inputs
|
inputs: Inputs
|
||||||
workingDirectory: string
|
workingDirectory: string
|
||||||
}): Promise<string[]> => {
|
}): Promise<string[]> => {
|
||||||
let filePatterns = ''
|
let cleanedFilePatterns: string[] = []
|
||||||
|
|
||||||
|
if (inputs.files) {
|
||||||
|
const filesPatterns = inputs.files
|
||||||
|
.split(inputs.filesSeparator)
|
||||||
|
.map(p => (p.endsWith(path.sep) ? `${p}**` : p))
|
||||||
|
.filter(Boolean)
|
||||||
|
|
||||||
|
cleanedFilePatterns.push(...filesPatterns)
|
||||||
|
|
||||||
|
core.debug(`files patterns: ${filesPatterns.join('\n')}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inputs.filesFromSourceFile !== '') {
|
||||||
|
const inputFilesFromSourceFile = inputs.filesFromSourceFile
|
||||||
|
.split(inputs.filesFromSourceFileSeparator)
|
||||||
|
.filter(Boolean)
|
||||||
|
.map(p => path.join(workingDirectory, p))
|
||||||
|
|
||||||
|
core.debug(`files from source file: ${inputFilesFromSourceFile}`)
|
||||||
|
|
||||||
|
const filesFromSourceFiles = await getFilesFromSourceFile({
|
||||||
|
filePaths: inputFilesFromSourceFile
|
||||||
|
})
|
||||||
|
|
||||||
|
core.debug(
|
||||||
|
`files from source files patterns: ${filesFromSourceFiles.join('\n')}`
|
||||||
|
)
|
||||||
|
|
||||||
|
cleanedFilePatterns.push(...filesFromSourceFiles)
|
||||||
|
}
|
||||||
|
|
||||||
if (inputs.filesIgnore) {
|
if (inputs.filesIgnore) {
|
||||||
const filesIgnorePatterns = inputs.filesIgnore
|
const filesIgnorePatterns = inputs.filesIgnore
|
||||||
.split(inputs.filesIgnoreSeparator)
|
.split(inputs.filesIgnoreSeparator)
|
||||||
.filter(p => p !== '')
|
.filter(Boolean)
|
||||||
.map(p => {
|
.map(p => {
|
||||||
if (!p.startsWith('!')) {
|
p = p.startsWith('!') ? p : `!${p}`
|
||||||
p = `!${p}`
|
if (p.endsWith(path.sep)) {
|
||||||
|
p = `${p}**`
|
||||||
}
|
}
|
||||||
return p
|
return p
|
||||||
})
|
})
|
||||||
.join('\n')
|
|
||||||
|
|
||||||
core.debug(`files ignore patterns: ${filesIgnorePatterns}`)
|
core.debug(`files ignore patterns: ${filesIgnorePatterns.join('\n')}`)
|
||||||
|
|
||||||
filePatterns = filePatterns.concat('\n', filesIgnorePatterns)
|
cleanedFilePatterns.push(...filesIgnorePatterns)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (inputs.filesIgnoreFromSourceFile) {
|
if (inputs.filesIgnoreFromSourceFile) {
|
||||||
const inputFilesIgnoreFromSourceFile = inputs.filesIgnoreFromSourceFile
|
const inputFilesIgnoreFromSourceFile = inputs.filesIgnoreFromSourceFile
|
||||||
.split(inputs.filesIgnoreFromSourceFileSeparator)
|
.split(inputs.filesIgnoreFromSourceFileSeparator)
|
||||||
.filter(p => p !== '')
|
.filter(Boolean)
|
||||||
.map(p => path.join(workingDirectory, p))
|
.map(p => path.join(workingDirectory, p))
|
||||||
|
|
||||||
core.debug(
|
core.debug(
|
||||||
`files ignore from source file: ${inputFilesIgnoreFromSourceFile}`
|
`files ignore from source file: ${inputFilesIgnoreFromSourceFile}`
|
||||||
)
|
)
|
||||||
|
|
||||||
const filesIgnoreFromSourceFiles = (
|
const filesIgnoreFromSourceFiles = await getFilesFromSourceFile({
|
||||||
await getFilesFromSourceFile({
|
filePaths: inputFilesIgnoreFromSourceFile,
|
||||||
filePaths: inputFilesIgnoreFromSourceFile,
|
excludedFiles: true
|
||||||
excludedFiles: true
|
})
|
||||||
})
|
|
||||||
).join('\n')
|
|
||||||
|
|
||||||
core.debug(
|
core.debug(
|
||||||
`files ignore from source files patterns: ${filesIgnoreFromSourceFiles}`
|
`files ignore from source files patterns: ${filesIgnoreFromSourceFiles.join(
|
||||||
|
'\n'
|
||||||
|
)}`
|
||||||
)
|
)
|
||||||
|
|
||||||
filePatterns = filePatterns.concat('\n', filesIgnoreFromSourceFiles)
|
cleanedFilePatterns.push(...filesIgnoreFromSourceFiles)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (inputs.files) {
|
if (inputs.negationPatternsFirst) {
|
||||||
filePatterns = filePatterns.concat(
|
cleanedFilePatterns.sort((a, b) => {
|
||||||
'\n',
|
return a.startsWith('!') ? -1 : b.startsWith('!') ? 1 : 0
|
||||||
inputs.files.split(inputs.filesSeparator).filter(Boolean).join('\n')
|
})
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (inputs.filesFromSourceFile !== '') {
|
// Reorder file patterns '**' should come first
|
||||||
const inputFilesFromSourceFile = inputs.filesFromSourceFile
|
if (cleanedFilePatterns.includes('**')) {
|
||||||
.split(inputs.filesFromSourceFileSeparator)
|
cleanedFilePatterns.sort((a, b) => {
|
||||||
.filter(p => p !== '')
|
|
||||||
.map(p => path.join(workingDirectory, p))
|
|
||||||
|
|
||||||
core.debug(`files from source file: ${inputFilesFromSourceFile}`)
|
|
||||||
|
|
||||||
const filesFromSourceFiles = (
|
|
||||||
await getFilesFromSourceFile({filePaths: inputFilesFromSourceFile})
|
|
||||||
).join('\n')
|
|
||||||
|
|
||||||
core.debug(`files from source files patterns: ${filesFromSourceFiles}`)
|
|
||||||
|
|
||||||
filePatterns = filePatterns.concat('\n', filesFromSourceFiles)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isWindows()) {
|
|
||||||
filePatterns = filePatterns.replace(/\r\n/g, '\n')
|
|
||||||
filePatterns = filePatterns.replace(/\r/g, '\n')
|
|
||||||
}
|
|
||||||
|
|
||||||
const filePatternsArray = filePatterns.trim().split('\n').filter(Boolean)
|
|
||||||
|
|
||||||
// Reorder file patterns '**' should come before '!**/*.txt' and then the rest 'dir/**/*.txt'
|
|
||||||
if (filePatternsArray.includes('**')) {
|
|
||||||
filePatternsArray.sort((a, b) => {
|
|
||||||
return a === '**' ? -1 : b === '**' ? 1 : 0
|
return a === '**' ? -1 : b === '**' ? 1 : 0
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
core.debug(`Input file patterns: \n${filePatternsArray.join('\n')}`)
|
if (isWindows()) {
|
||||||
|
cleanedFilePatterns = cleanedFilePatterns.map(pattern =>
|
||||||
|
pattern.replace(/\r\n/g, '\n').replace(/\r/g, '\n')
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
return filePatternsArray
|
core.debug(`Input file patterns: \n${cleanedFilePatterns.join('\n')}`)
|
||||||
|
|
||||||
|
return cleanedFilePatterns
|
||||||
}
|
}
|
||||||
|
|
||||||
// Example YAML input:
|
// Example YAML input:
|
||||||
@@ -1067,7 +1134,7 @@ const getYamlFilePatternsFromContents = async ({
|
|||||||
throw new Error(`File does not exist: ${filePath}`)
|
throw new Error(`File does not exist: ${filePath}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
source = await readFile(filePath, 'utf8')
|
source = await fs.readFile(filePath, 'utf8')
|
||||||
} else {
|
} else {
|
||||||
source = content
|
source = content
|
||||||
}
|
}
|
||||||
@@ -1263,7 +1330,8 @@ export const setArrayOutput = async ({
|
|||||||
writeOutputFiles: inputs.writeOutputFiles,
|
writeOutputFiles: inputs.writeOutputFiles,
|
||||||
outputDir: inputs.outputDir,
|
outputDir: inputs.outputDir,
|
||||||
json: inputs.json,
|
json: inputs.json,
|
||||||
shouldEscape: inputs.escapeJson
|
shouldEscape: inputs.escapeJson,
|
||||||
|
safeOutput: inputs.safeOutput
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1273,7 +1341,8 @@ export const setOutput = async ({
|
|||||||
writeOutputFiles,
|
writeOutputFiles,
|
||||||
outputDir,
|
outputDir,
|
||||||
json = false,
|
json = false,
|
||||||
shouldEscape = false
|
shouldEscape = false,
|
||||||
|
safeOutput = false
|
||||||
}: {
|
}: {
|
||||||
key: string
|
key: string
|
||||||
value: string | string[] | boolean
|
value: string | string[] | boolean
|
||||||
@@ -1281,6 +1350,7 @@ export const setOutput = async ({
|
|||||||
outputDir: string
|
outputDir: string
|
||||||
json?: boolean
|
json?: boolean
|
||||||
shouldEscape?: boolean
|
shouldEscape?: boolean
|
||||||
|
safeOutput?: boolean
|
||||||
}): Promise<void> => {
|
}): Promise<void> => {
|
||||||
let cleanedValue
|
let cleanedValue
|
||||||
if (json) {
|
if (json) {
|
||||||
@@ -1289,6 +1359,11 @@ export const setOutput = async ({
|
|||||||
cleanedValue = value.toString().trim()
|
cleanedValue = value.toString().trim()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if safeOutput is true, escape special characters for bash shell
|
||||||
|
if (safeOutput) {
|
||||||
|
cleanedValue = cleanedValue.replace(/[^\x20-\x7E]|[:*?<>|;`$()&!]/g, '\\$&')
|
||||||
|
}
|
||||||
|
|
||||||
core.setOutput(key, cleanedValue)
|
core.setOutput(key, cleanedValue)
|
||||||
|
|
||||||
if (writeOutputFiles) {
|
if (writeOutputFiles) {
|
||||||
@@ -1335,13 +1410,17 @@ export const recoverDeletedFiles = async ({
|
|||||||
workingDirectory,
|
workingDirectory,
|
||||||
deletedFiles,
|
deletedFiles,
|
||||||
recoverPatterns,
|
recoverPatterns,
|
||||||
sha
|
diffResult,
|
||||||
|
hasSubmodule,
|
||||||
|
submodulePaths
|
||||||
}: {
|
}: {
|
||||||
inputs: Inputs
|
inputs: Inputs
|
||||||
workingDirectory: string
|
workingDirectory: string
|
||||||
deletedFiles: string[]
|
deletedFiles: string[]
|
||||||
recoverPatterns: string[]
|
recoverPatterns: string[]
|
||||||
sha: string
|
diffResult: DiffResult
|
||||||
|
hasSubmodule: boolean
|
||||||
|
submodulePaths: string[]
|
||||||
}): Promise<void> => {
|
}): Promise<void> => {
|
||||||
let recoverableDeletedFiles = deletedFiles
|
let recoverableDeletedFiles = deletedFiles
|
||||||
core.debug(`recoverable deleted files: ${recoverableDeletedFiles}`)
|
core.debug(`recoverable deleted files: ${recoverableDeletedFiles}`)
|
||||||
@@ -1366,19 +1445,64 @@ export const recoverDeletedFiles = async ({
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const deletedFileContents = await getDeletedFileContents({
|
let deletedFileContents: string
|
||||||
cwd: workingDirectory,
|
|
||||||
filePath: deletedFile,
|
const submodulePath = submodulePaths.find(p => deletedFile.startsWith(p))
|
||||||
sha
|
|
||||||
})
|
if (hasSubmodule && submodulePath) {
|
||||||
|
const submoduleShaResult = await gitSubmoduleDiffSHA({
|
||||||
|
cwd: workingDirectory,
|
||||||
|
parentSha1: diffResult.previousSha,
|
||||||
|
parentSha2: diffResult.currentSha,
|
||||||
|
submodulePath,
|
||||||
|
diff: diffResult.diff
|
||||||
|
})
|
||||||
|
|
||||||
|
if (submoduleShaResult.previousSha) {
|
||||||
|
core.debug(
|
||||||
|
`recovering deleted file "${deletedFile}" from submodule ${submodulePath} from ${submoduleShaResult.previousSha}`
|
||||||
|
)
|
||||||
|
deletedFileContents = await getDeletedFileContents({
|
||||||
|
cwd: path.join(workingDirectory, submodulePath),
|
||||||
|
// E.g. submodulePath = test/demo and deletedFile = test/demo/.github/README.md => filePath => .github/README.md
|
||||||
|
filePath: deletedFile.replace(submodulePath, '').substring(1),
|
||||||
|
sha: submoduleShaResult.previousSha
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
core.warning(
|
||||||
|
`Unable to recover deleted file "${deletedFile}" from submodule ${submodulePath} from ${submoduleShaResult.previousSha}`
|
||||||
|
)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
core.debug(
|
||||||
|
`recovering deleted file "${deletedFile}" from ${diffResult.previousSha}`
|
||||||
|
)
|
||||||
|
deletedFileContents = await getDeletedFileContents({
|
||||||
|
cwd: workingDirectory,
|
||||||
|
filePath: deletedFile,
|
||||||
|
sha: diffResult.previousSha
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
core.debug(`recovered deleted file "${deletedFile}"`)
|
||||||
|
|
||||||
if (!(await exists(path.dirname(target)))) {
|
if (!(await exists(path.dirname(target)))) {
|
||||||
|
core.debug(`creating directory "${path.dirname(target)}"`)
|
||||||
await fs.mkdir(path.dirname(target), {recursive: true})
|
await fs.mkdir(path.dirname(target), {recursive: true})
|
||||||
}
|
}
|
||||||
|
core.debug(`writing file "${target}"`)
|
||||||
await fs.writeFile(target, deletedFileContents)
|
await fs.writeFile(target, deletedFileContents)
|
||||||
|
core.debug(`wrote file "${target}"`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines whether the specified working directory has a local Git directory.
|
||||||
|
*
|
||||||
|
* @param workingDirectory - The path of the working directory.
|
||||||
|
* @returns A boolean value indicating whether the working directory has a local Git directory.
|
||||||
|
*/
|
||||||
export const hasLocalGitDirectory = async ({
|
export const hasLocalGitDirectory = async ({
|
||||||
workingDirectory
|
workingDirectory
|
||||||
}: {
|
}: {
|
||||||
@@ -1388,3 +1512,33 @@ export const hasLocalGitDirectory = async ({
|
|||||||
cwd: workingDirectory
|
cwd: workingDirectory
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Warns about unsupported inputs when using the REST API.
|
||||||
|
*
|
||||||
|
* @param inputs - The inputs object.
|
||||||
|
*/
|
||||||
|
export const warnUnsupportedRESTAPIInputs = async ({
|
||||||
|
inputs
|
||||||
|
}: {
|
||||||
|
inputs: Inputs
|
||||||
|
}): Promise<void> => {
|
||||||
|
for (const key of Object.keys(DEFAULT_VALUES_OF_UNSUPPORTED_API_INPUTS)) {
|
||||||
|
const defaultValue = Object.hasOwnProperty.call(
|
||||||
|
DEFAULT_VALUES_OF_UNSUPPORTED_API_INPUTS,
|
||||||
|
key
|
||||||
|
)
|
||||||
|
? DEFAULT_VALUES_OF_UNSUPPORTED_API_INPUTS[
|
||||||
|
key as keyof Inputs
|
||||||
|
]?.toString()
|
||||||
|
: ''
|
||||||
|
|
||||||
|
if (defaultValue !== inputs[key as keyof Inputs]?.toString()) {
|
||||||
|
core.warning(
|
||||||
|
`Input "${snakeCase(
|
||||||
|
key
|
||||||
|
)}" is not supported when using GitHub's REST API to get changed files`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user