Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cf4fe8759a | ||
|
|
58c7ce2add | ||
|
|
61316fda76 | ||
|
|
5d38ef5289 | ||
|
|
51330c5719 | ||
|
|
7b92155d7a | ||
|
|
3127174fab | ||
|
|
cfdaf8f14e | ||
|
|
043929ee8f | ||
|
|
96fd19710a |
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: ./
|
||||
|
||||
34
HISTORY.md
34
HISTORY.md
@@ -1,5 +1,39 @@
|
||||
# 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
|
||||
|
||||
- Bug running changed files with limited history ([#1188](https://github.com/tj-actions/changed-files/issues/1188)) ([449a845](https://github.com/tj-actions/changed-files/commit/449a845ff28da516ea1752afd195d2f7f642c6f4)) - (Tonye Jack)
|
||||
|
||||
## <!-- 26 -->🔄 Update
|
||||
|
||||
- Update README.md ([777b2b4](https://github.com/tj-actions/changed-files/commit/777b2b437a82c8afbb474f57812fd790c7509391)) - (Tonye Jack)
|
||||
- Update README.md ([2fafe0a](https://github.com/tj-actions/changed-files/commit/2fafe0a7349fddf5ea3a02484419a4831979d79b)) - (Tonye Jack)
|
||||
|
||||
## <!-- 7 -->⚙️ Miscellaneous Tasks
|
||||
|
||||
- **deps:** Lock file maintenance ([#1189](https://github.com/tj-actions/changed-files/issues/1189)) ([4e2535f](https://github.com/tj-actions/changed-files/commit/4e2535f2b330e70ff7055f7de4272653cfdbd555)) - (renovate[bot])
|
||||
- **deps:** Update tj-actions/eslint-changed-files action to v19 ([#1185](https://github.com/tj-actions/changed-files/issues/1185)) ([bc88d8b](https://github.com/tj-actions/changed-files/commit/bc88d8bc954005f987c5c73e133f2cb4927ddf3e)) - (renovate[bot])
|
||||
|
||||
## <!-- 9 -->⬆️ Upgrades
|
||||
|
||||
- Upgraded to v36.0.6 ([#1184](https://github.com/tj-actions/changed-files/issues/1184))
|
||||
|
||||
Co-authored-by: jackton1 <jackton1@users.noreply.github.com> ([fd2b77d](https://github.com/tj-actions/changed-files/commit/fd2b77dd749ff644f3fe50e1f7341902e0064744)) - (tj-actions[bot])
|
||||
|
||||
# [36.0.6](https://github.com/tj-actions/changed-files/compare/v36.0.5...v36.0.6) - (2023-05-26)
|
||||
|
||||
## <!-- 0 -->🚀 Features
|
||||
|
||||
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)
|
||||
|
||||
50
dist/index.js
generated
vendored
50
dist/index.js
generated
vendored
@@ -213,7 +213,8 @@ const getSHAForPushEvent = (inputs, env, workingDirectory, isShallow, hasSubmodu
|
||||
if (isShallow) {
|
||||
core.info('Repository is shallow, fetching more history...');
|
||||
if (isTag) {
|
||||
const sourceBranch = env.GITHUB_EVENT_BASE_REF.replace('refs/heads/', '');
|
||||
const sourceBranch = env.GITHUB_EVENT_BASE_REF.replace('refs/heads/', '') ||
|
||||
env.GITHUB_EVENT_RELEASE_TARGET_COMMITISH;
|
||||
yield (0, utils_1.gitFetch)({
|
||||
cwd: workingDirectory,
|
||||
args: [
|
||||
@@ -568,7 +569,7 @@ exports.getEnv = void 0;
|
||||
const fs_1 = __nccwpck_require__(7147);
|
||||
const core = __importStar(__nccwpck_require__(2186));
|
||||
const getEnv = () => __awaiter(void 0, void 0, void 0, function* () {
|
||||
var _a, _b, _c, _d, _e, _f, _g, _h;
|
||||
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
||||
const eventPath = process.env.GITHUB_EVENT_PATH;
|
||||
let eventJson = {};
|
||||
if (eventPath) {
|
||||
@@ -581,9 +582,10 @@ const getEnv = () => __awaiter(void 0, void 0, void 0, function* () {
|
||||
GITHUB_EVENT_PULL_REQUEST_BASE_REF: ((_d = (_c = eventJson.pull_request) === null || _c === void 0 ? void 0 : _c.base) === null || _d === void 0 ? void 0 : _d.ref) || '',
|
||||
GITHUB_EVENT_BEFORE: eventJson.before || '',
|
||||
GITHUB_EVENT_BASE_REF: eventJson.base_ref || '',
|
||||
GITHUB_EVENT_HEAD_REPO_FORK: ((_e = eventJson.head_repo) === null || _e === void 0 ? void 0 : _e.fork) || '',
|
||||
GITHUB_EVENT_PULL_REQUEST_NUMBER: ((_f = eventJson.pull_request) === null || _f === void 0 ? void 0 : _f.number) || '',
|
||||
GITHUB_EVENT_PULL_REQUEST_BASE_SHA: ((_h = (_g = eventJson.pull_request) === null || _g === void 0 ? void 0 : _g.base) === null || _h === void 0 ? void 0 : _h.sha) || '',
|
||||
GITHUB_EVENT_RELEASE_TARGET_COMMITISH: ((_e = eventJson.release) === null || _e === void 0 ? void 0 : _e.target_commitish) || '',
|
||||
GITHUB_EVENT_HEAD_REPO_FORK: ((_f = eventJson.head_repo) === null || _f === void 0 ? void 0 : _f.fork) || '',
|
||||
GITHUB_EVENT_PULL_REQUEST_NUMBER: ((_g = eventJson.pull_request) === null || _g === void 0 ? void 0 : _g.number) || '',
|
||||
GITHUB_EVENT_PULL_REQUEST_BASE_SHA: ((_j = (_h = eventJson.pull_request) === null || _h === void 0 ? void 0 : _h.base) === null || _j === void 0 ? void 0 : _j.sha) || '',
|
||||
GITHUB_EVENT_FORCED: eventJson.forced || '',
|
||||
GITHUB_REF_NAME: process.env.GITHUB_REF_NAME || '',
|
||||
GITHUB_REF: process.env.GITHUB_REF || '',
|
||||
@@ -978,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',
|
||||
@@ -988,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)({
|
||||
@@ -1020,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',
|
||||
@@ -1030,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)({
|
||||
@@ -1062,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',
|
||||
@@ -1072,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) {
|
||||
@@ -1658,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
@@ -83,7 +83,9 @@ export const getSHAForPushEvent = async (
|
||||
core.info('Repository is shallow, fetching more history...')
|
||||
|
||||
if (isTag) {
|
||||
const sourceBranch = env.GITHUB_EVENT_BASE_REF.replace('refs/heads/', '')
|
||||
const sourceBranch =
|
||||
env.GITHUB_EVENT_BASE_REF.replace('refs/heads/', '') ||
|
||||
env.GITHUB_EVENT_RELEASE_TARGET_COMMITISH
|
||||
await gitFetch({
|
||||
cwd: workingDirectory,
|
||||
args: [
|
||||
|
||||
@@ -8,6 +8,7 @@ export type Env = {
|
||||
GITHUB_REF_NAME: string
|
||||
GITHUB_REF: string
|
||||
GITHUB_EVENT_BASE_REF: string
|
||||
GITHUB_EVENT_RELEASE_TARGET_COMMITISH: string
|
||||
GITHUB_EVENT_HEAD_REPO_FORK: string
|
||||
GITHUB_WORKSPACE: string
|
||||
GITHUB_EVENT_FORCED: string
|
||||
@@ -27,6 +28,9 @@ type GithubEvent = {
|
||||
}
|
||||
number: string
|
||||
}
|
||||
release?: {
|
||||
target_commitish: string
|
||||
}
|
||||
before?: string
|
||||
base_ref?: string
|
||||
head_repo?: {
|
||||
@@ -49,6 +53,8 @@ export const getEnv = async (): Promise<Env> => {
|
||||
GITHUB_EVENT_PULL_REQUEST_BASE_REF: eventJson.pull_request?.base?.ref || '',
|
||||
GITHUB_EVENT_BEFORE: eventJson.before || '',
|
||||
GITHUB_EVENT_BASE_REF: eventJson.base_ref || '',
|
||||
GITHUB_EVENT_RELEASE_TARGET_COMMITISH:
|
||||
eventJson.release?.target_commitish || '',
|
||||
GITHUB_EVENT_HEAD_REPO_FORK: eventJson.head_repo?.fork || '',
|
||||
GITHUB_EVENT_PULL_REQUEST_NUMBER: eventJson.pull_request?.number || '',
|
||||
GITHUB_EVENT_PULL_REQUEST_BASE_SHA: eventJson.pull_request?.base?.sha || '',
|
||||
|
||||
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