Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cf4fe8759a | ||
|
|
58c7ce2add | ||
|
|
61316fda76 | ||
|
|
5d38ef5289 | ||
|
|
51330c5719 | ||
|
|
7b92155d7a | ||
|
|
3127174fab | ||
|
|
cfdaf8f14e |
10
.github/workflows/test.yml
vendored
10
.github/workflows/test.yml
vendored
@@ -508,6 +508,16 @@ jobs:
|
||||
echo '${{ toJSON(steps.changed-files-since-last-remote-commit.outputs) }}'
|
||||
shell:
|
||||
bash
|
||||
- name: Run changed-files with dir name
|
||||
id: changed-files-dir-name
|
||||
uses: ./
|
||||
with:
|
||||
files: .github/workflows
|
||||
- name: Show output
|
||||
run: |
|
||||
echo '${{ toJSON(steps.changed-files-dir-name.outputs) }}'
|
||||
shell:
|
||||
bash
|
||||
- name: Run changed-files with write_output_files
|
||||
id: changed-files-write-output-files
|
||||
uses: ./
|
||||
|
||||
12
HISTORY.md
12
HISTORY.md
@@ -1,5 +1,17 @@
|
||||
# Changelog
|
||||
|
||||
# [36.0.8](https://github.com/tj-actions/changed-files/compare/v36.0.7...v36.0.8) - (2023-05-29)
|
||||
|
||||
## <!-- 0 -->🚀 Features
|
||||
|
||||
- Add support for running on release event ([#1191](https://github.com/tj-actions/changed-files/issues/1191)) ([043929e](https://github.com/tj-actions/changed-files/commit/043929ee8fffa1dd1d619782a5a338cf39e76e23)) - (Tonye Jack)
|
||||
|
||||
## <!-- 9 -->⬆️ Upgrades
|
||||
|
||||
- Upgraded to v36.0.7 ([#1190](https://github.com/tj-actions/changed-files/issues/1190))
|
||||
|
||||
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([96fd197](https://github.com/tj-actions/changed-files/commit/96fd19710a49b0e910f7363e8af37dd6b182636a)) - (tj-actions[bot])
|
||||
|
||||
# [36.0.7](https://github.com/tj-actions/changed-files/compare/v36.0.6...v36.0.7) - (2023-05-29)
|
||||
|
||||
## <!-- 1 -->🐛 Bug Fixes
|
||||
|
||||
15
README.md
15
README.md
@@ -59,6 +59,7 @@ Retrieve all changed files and directories relative to a target branch, preceedi
|
||||
* Restrict change detection to a subset of files and directories:
|
||||
* Boolean output indicating that certain files have been changed.
|
||||
* Using [Glob pattern](https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet) matching.
|
||||
* Globstar.
|
||||
* Brace expansion.
|
||||
|
||||
## Usage
|
||||
@@ -67,7 +68,6 @@ Retrieve all changed files and directories relative to a target branch, preceedi
|
||||
>
|
||||
> * **IMPORTANT:** For `push` events when configuring [`actions/checkout`](https://github.com/actions/checkout#usage) the `fetch-depth` should be set to either `fetch-depth: 0` **OR** `fetch-depth: 2` depending on your use case.
|
||||
> * For monorepos where pulling all the branch history might not be desired, you can omit [`actions/checkout`](https://github.com/actions/checkout#usage) - `fetch-depth` for `pull_request` events.
|
||||
> * For files located in a sub-directory ensure that the pattern specified contains `**/` (globstar) to match any preceding directories or explicitly pass the full path relative to the project root. See: [Pattern Gotcha](https://github.com/tj-actions/glob#pattern-gotcha).
|
||||
> * All multiline inputs should not use double or single quotes since the value is already a string seperated by a newline character. See [Examples](#examples) for more information.
|
||||
> * Ensure that `persist-credentials` is set to `true` when configuring [`actions/checkout`](https://github.com/actions/checkout#usage) if `fetch-depth` isn't set to `0`.
|
||||
|
||||
@@ -125,19 +125,19 @@ jobs:
|
||||
echo "List all the files that have changed: ${{ steps.changed-files-specific.outputs.all_changed_files }}"
|
||||
|
||||
# Example 3
|
||||
- name: Get all changed *.js file(s) or any file in the static folder excluding the docs folder
|
||||
- name: Get all changed .js file(s) or any file in the static folder excluding the docs folder
|
||||
id: changed-files-excluded
|
||||
uses: tj-actions/changed-files@v36
|
||||
with:
|
||||
files: |
|
||||
**/*.js
|
||||
**.js
|
||||
static
|
||||
files_ignore: docs
|
||||
|
||||
- name: Run step if any *.js file(s) or any file in the static folder change
|
||||
- name: Run step if any .js file(s) or any file in the static folder change
|
||||
if: steps.changed-files-excluded.outputs.any_changed == 'true'
|
||||
run: |
|
||||
echo "One or more *.js file(s) or any file in the static folder but not in the doc folder has changed."
|
||||
echo "One or more .js file(s) or any file in the static folder but not in the doc folder has changed."
|
||||
echo "List all the files that have changed: ${{ steps.changed-files-excluded.outputs.all_changed_files }}"
|
||||
```
|
||||
|
||||
@@ -731,6 +731,10 @@ See [inputs](#inputs) for more information.
|
||||
|
||||
* [nodejs/docker-node: uses tj-actions/changed-files to generate matrix jobs based on changes detected](https://github.com/nodejs/docker-node/blob/3c4fa6daf06a4786d202f2f610351837806a0380/.github/workflows/build-test.yml#L29)
|
||||
|
||||
* [refined-github: uses tj-actions/changed-files to automate test URL validation in added/edited files](https://github.com/refined-github/refined-github/blob/b754bfe58904da8a599d7876fdaaf18302785629/.github/workflows/features.yml#L35)
|
||||
|
||||
* [aws-doc-sdk-examples: uses tj-actions/changed-files to automate testing](https://github.com/awsdocs/aws-doc-sdk-examples/blob/2393723ef6b0cad9502f4852f5c72f7be58ca89d/.github/workflows/javascript.yml#L22)
|
||||
|
||||
And many more...
|
||||
|
||||
## Known Limitation
|
||||
@@ -767,7 +771,6 @@ With the switch from using grep's Extended regex to match files to the natively
|
||||
|
||||
This package was created with [cookiecutter-action](https://github.com/tj-actions/cookiecutter-action).
|
||||
|
||||
* [tj-actions/glob](https://github.com/tj-actions/glob)
|
||||
* [tj-actions/auto-doc](https://github.com/tj-actions/auto-doc)
|
||||
* [tj-actions/verify-changed-files](https://github.com/tj-actions/verify-changed-files)
|
||||
* [tj-actions/demo](https://github.com/tj-actions/demo)
|
||||
|
||||
38
dist/index.js
generated
vendored
38
dist/index.js
generated
vendored
@@ -980,8 +980,8 @@ function run() {
|
||||
});
|
||||
core.debug(`All other changed files: ${allOtherChangedFiles}`);
|
||||
const otherChangedFiles = allOtherChangedFiles
|
||||
.split(inputs.filesSeparator)
|
||||
.filter(filePath => !allChangedFiles.split(inputs.filesSeparator).includes(filePath));
|
||||
.split(inputs.separator)
|
||||
.filter(filePath => !allChangedFiles.split(inputs.separator).includes(filePath));
|
||||
const onlyChanged = otherChangedFiles.length === 0 && allChangedFiles.length > 0;
|
||||
yield (0, utils_1.setOutput)({
|
||||
key: 'only_changed',
|
||||
@@ -990,7 +990,7 @@ function run() {
|
||||
});
|
||||
yield (0, utils_1.setOutput)({
|
||||
key: 'other_changed_files',
|
||||
value: otherChangedFiles.join(inputs.filesSeparator),
|
||||
value: otherChangedFiles.join(inputs.separator),
|
||||
inputs
|
||||
});
|
||||
const allModifiedFiles = yield (0, changedFiles_1.getDiffFiles)({
|
||||
@@ -1022,8 +1022,8 @@ function run() {
|
||||
submodulePaths
|
||||
});
|
||||
const otherModifiedFiles = allOtherModifiedFiles
|
||||
.split(inputs.filesSeparator)
|
||||
.filter(filePath => !allModifiedFiles.split(inputs.filesSeparator).includes(filePath));
|
||||
.split(inputs.separator)
|
||||
.filter(filePath => !allModifiedFiles.split(inputs.separator).includes(filePath));
|
||||
const onlyModified = otherModifiedFiles.length === 0 && allModifiedFiles.length > 0;
|
||||
yield (0, utils_1.setOutput)({
|
||||
key: 'only_modified',
|
||||
@@ -1032,7 +1032,7 @@ function run() {
|
||||
});
|
||||
yield (0, utils_1.setOutput)({
|
||||
key: 'other_modified_files',
|
||||
value: otherModifiedFiles.join(inputs.filesSeparator),
|
||||
value: otherModifiedFiles.join(inputs.separator),
|
||||
inputs
|
||||
});
|
||||
const deletedFiles = yield (0, changedFiles_1.getDiffFiles)({
|
||||
@@ -1064,8 +1064,8 @@ function run() {
|
||||
submodulePaths
|
||||
});
|
||||
const otherDeletedFiles = allOtherDeletedFiles
|
||||
.split(inputs.filesSeparator)
|
||||
.filter(filePath => !deletedFiles.split(inputs.filesSeparator).includes(filePath));
|
||||
.split(inputs.separator)
|
||||
.filter(filePath => !deletedFiles.split(inputs.separator).includes(filePath));
|
||||
const onlyDeleted = otherDeletedFiles.length === 0 && deletedFiles.length > 0;
|
||||
yield (0, utils_1.setOutput)({
|
||||
key: 'only_deleted',
|
||||
@@ -1074,7 +1074,7 @@ function run() {
|
||||
});
|
||||
yield (0, utils_1.setOutput)({
|
||||
key: 'other_deleted_files',
|
||||
value: otherDeletedFiles.join(inputs.filesSeparator),
|
||||
value: otherDeletedFiles.join(inputs.separator),
|
||||
inputs
|
||||
});
|
||||
if (inputs.includeAllOldNewRenamedFiles) {
|
||||
@@ -1660,7 +1660,25 @@ const getFilePatterns = ({ inputs, workingDirectory }) => __awaiter(void 0, void
|
||||
filePatterns = filePatterns.replace(/\r/g, '\n');
|
||||
}
|
||||
core.debug(`file patterns: ${filePatterns}`);
|
||||
return filePatterns.trim().split('\n').filter(Boolean);
|
||||
return filePatterns
|
||||
.trim()
|
||||
.split('\n')
|
||||
.filter(Boolean)
|
||||
.map(pattern => {
|
||||
if (pattern.endsWith('/')) {
|
||||
return `${pattern}**`;
|
||||
}
|
||||
else {
|
||||
const pathParts = pattern.split('/');
|
||||
const lastPart = pathParts[pathParts.length - 1];
|
||||
if (!lastPart.includes('.')) {
|
||||
return `${pattern}/**`;
|
||||
}
|
||||
else {
|
||||
return pattern;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
exports.getFilePatterns = getFilePatterns;
|
||||
const setOutput = ({ key, value, inputs }) => __awaiter(void 0, void 0, void 0, function* () {
|
||||
|
||||
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
20
src/main.ts
20
src/main.ts
@@ -265,10 +265,9 @@ export async function run(): Promise<void> {
|
||||
core.debug(`All other changed files: ${allOtherChangedFiles}`)
|
||||
|
||||
const otherChangedFiles = allOtherChangedFiles
|
||||
.split(inputs.filesSeparator)
|
||||
.split(inputs.separator)
|
||||
.filter(
|
||||
filePath =>
|
||||
!allChangedFiles.split(inputs.filesSeparator).includes(filePath)
|
||||
filePath => !allChangedFiles.split(inputs.separator).includes(filePath)
|
||||
)
|
||||
|
||||
const onlyChanged =
|
||||
@@ -282,7 +281,7 @@ export async function run(): Promise<void> {
|
||||
|
||||
await setOutput({
|
||||
key: 'other_changed_files',
|
||||
value: otherChangedFiles.join(inputs.filesSeparator),
|
||||
value: otherChangedFiles.join(inputs.separator),
|
||||
inputs
|
||||
})
|
||||
|
||||
@@ -318,10 +317,9 @@ export async function run(): Promise<void> {
|
||||
})
|
||||
|
||||
const otherModifiedFiles = allOtherModifiedFiles
|
||||
.split(inputs.filesSeparator)
|
||||
.split(inputs.separator)
|
||||
.filter(
|
||||
filePath =>
|
||||
!allModifiedFiles.split(inputs.filesSeparator).includes(filePath)
|
||||
filePath => !allModifiedFiles.split(inputs.separator).includes(filePath)
|
||||
)
|
||||
|
||||
const onlyModified =
|
||||
@@ -335,7 +333,7 @@ export async function run(): Promise<void> {
|
||||
|
||||
await setOutput({
|
||||
key: 'other_modified_files',
|
||||
value: otherModifiedFiles.join(inputs.filesSeparator),
|
||||
value: otherModifiedFiles.join(inputs.separator),
|
||||
inputs
|
||||
})
|
||||
|
||||
@@ -371,9 +369,9 @@ export async function run(): Promise<void> {
|
||||
})
|
||||
|
||||
const otherDeletedFiles = allOtherDeletedFiles
|
||||
.split(inputs.filesSeparator)
|
||||
.split(inputs.separator)
|
||||
.filter(
|
||||
filePath => !deletedFiles.split(inputs.filesSeparator).includes(filePath)
|
||||
filePath => !deletedFiles.split(inputs.separator).includes(filePath)
|
||||
)
|
||||
|
||||
const onlyDeleted = otherDeletedFiles.length === 0 && deletedFiles.length > 0
|
||||
@@ -386,7 +384,7 @@ export async function run(): Promise<void> {
|
||||
|
||||
await setOutput({
|
||||
key: 'other_deleted_files',
|
||||
value: otherDeletedFiles.join(inputs.filesSeparator),
|
||||
value: otherDeletedFiles.join(inputs.separator),
|
||||
inputs
|
||||
})
|
||||
|
||||
|
||||
18
src/utils.ts
18
src/utils.ts
@@ -757,7 +757,23 @@ export const getFilePatterns = async ({
|
||||
|
||||
core.debug(`file patterns: ${filePatterns}`)
|
||||
|
||||
return filePatterns.trim().split('\n').filter(Boolean)
|
||||
return filePatterns
|
||||
.trim()
|
||||
.split('\n')
|
||||
.filter(Boolean)
|
||||
.map(pattern => {
|
||||
if (pattern.endsWith('/')) {
|
||||
return `${pattern}**`
|
||||
} else {
|
||||
const pathParts = pattern.split('/')
|
||||
const lastPart = pathParts[pathParts.length - 1]
|
||||
if (!lastPart.includes('.')) {
|
||||
return `${pattern}/**`
|
||||
} else {
|
||||
return pattern
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export const setOutput = async ({
|
||||
|
||||
Reference in New Issue
Block a user