feat: adding any and all boolean outputs

This adds two boolean outputs `any` and `all` so that someone can track whether (1) any filter has at least one changed file, or (2) all filters have at least one changed file

Closes #266

Signed-off-by: Scott Crooks <scott.crooks@gmail.com>
This commit is contained in:
Scott Crooks 2025-04-11 19:43:02 +02:00
parent de90cc6fb3
commit 7b47280cac
No known key found for this signature in database
GPG key ID: 1013BA3530FFE8DA
3 changed files with 16 additions and 0 deletions

View file

@ -45,6 +45,10 @@ inputs:
required: false
default: '100'
outputs:
all_changed:
description: Boolean value indicating if all of the filters contained at least one changed file
any_changed:
description: Boolean value indicating if any of the filters contained at least one changed file
changes:
description: JSON array with names of all filters matching any of changed files
runs:

6
dist/index.js vendored
View file

@ -745,11 +745,14 @@ async function getChangedFilesFromApi(token, pullRequest) {
function exportResults(results, format) {
core.info('Results:');
const changes = [];
let anyChanged = false;
let allChanged = true;
for (const [key, files] of Object.entries(results)) {
const value = files.length > 0;
core.startGroup(`Filter ${key} = ${value}`);
if (files.length > 0) {
changes.push(key);
anyChanged = true;
core.info('Matching files:');
for (const file of files) {
core.info(`${file.filename} [${file.status}]`);
@ -757,6 +760,7 @@ function exportResults(results, format) {
}
else {
core.info('Matching files: none');
allChanged = false;
}
core.setOutput(key, value);
core.setOutput(`${key}_count`, files.length);
@ -764,6 +768,8 @@ function exportResults(results, format) {
const filesValue = serializeExport(files, format);
core.setOutput(`${key}_files`, filesValue);
}
core.setOutput('all_changed', allChanged);
core.setOutput('any_changed', anyChanged);
core.endGroup();
}
if (results['changes'] === undefined) {

View file

@ -231,17 +231,21 @@ async function getChangedFilesFromApi(token: string, pullRequest: PullRequestEve
function exportResults(results: FilterResults, format: ExportFormat): void {
core.info('Results:')
const changes = []
let anyChanged = false
let allChanged = true
for (const [key, files] of Object.entries(results)) {
const value = files.length > 0
core.startGroup(`Filter ${key} = ${value}`)
if (files.length > 0) {
changes.push(key)
anyChanged = true
core.info('Matching files:')
for (const file of files) {
core.info(`${file.filename} [${file.status}]`)
}
} else {
core.info('Matching files: none')
allChanged = false
}
core.setOutput(key, value)
@ -250,6 +254,8 @@ function exportResults(results: FilterResults, format: ExportFormat): void {
const filesValue = serializeExport(files, format)
core.setOutput(`${key}_files`, filesValue)
}
core.setOutput('all_changed', allChanged)
core.setOutput('any_changed', anyChanged)
core.endGroup()
}