2021-03-27 12:31:20 -06:00
|
|
|
import * as glob from 'glob';
|
|
|
|
import {lstatSync} from 'fs';
|
|
|
|
import * as core from '@actions/core';
|
|
|
|
|
|
|
|
export interface Inputs {
|
|
|
|
version: string;
|
|
|
|
files: string[];
|
|
|
|
args: string;
|
2023-05-02 19:44:03 -06:00
|
|
|
installOnly: boolean;
|
2021-03-27 12:31:20 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
export async function getInputs(): Promise<Inputs> {
|
|
|
|
return {
|
|
|
|
version: core.getInput('version') || 'latest',
|
|
|
|
files: getInputList(core.getInput('files') || core.getInput('file'), true),
|
2023-05-02 19:44:03 -06:00
|
|
|
args: core.getInput('args'),
|
|
|
|
installOnly: core.getBooleanInput('install-only')
|
2021-03-27 12:31:20 -06:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getInputList(items: string, ignoreComma?: boolean): string[] {
|
|
|
|
if (items == '') {
|
|
|
|
return [];
|
|
|
|
}
|
|
|
|
return items
|
|
|
|
.split(/\r?\n/)
|
|
|
|
.filter(x => x)
|
|
|
|
.reduce<string[]>(
|
|
|
|
(acc, line) => acc.concat(!ignoreComma ? line.split(',').filter(x => x) : line).map(pat => pat.trim()),
|
|
|
|
[]
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
export const asyncForEach = async (array, callback) => {
|
|
|
|
for (let index = 0; index < array.length; index++) {
|
|
|
|
await callback(array[index], index, array);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
export const resolvePaths = (patterns: string[]): string[] => {
|
|
|
|
return patterns.reduce((acc: string[], pattern: string): string[] => {
|
|
|
|
return acc.concat(glob.sync(pattern).filter(path => lstatSync(path).isFile()));
|
|
|
|
}, []);
|
|
|
|
};
|