util: add opt-in whitespace preservation for multiline inputs

Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
This commit is contained in:
CrazyMax
2026-04-24 14:54:53 +02:00
parent d6de532537
commit 6a4f724ca6
2 changed files with 25 additions and 2 deletions

View File

@@ -157,6 +157,28 @@ ccc`
]);
});
it('preserves trailing new lines when trimming is disabled', async () => {
setInput(
'secrets',
`"PRIVATE_SSH_KEY=TESTESTTESTESTTESTESTTESTEST
TESTESTTESTESTTESTESTTESTEST
TESTESTTESTESTTESTESTTESTEST
"
`
);
const res = Util.getInputList('secrets', {ignoreComma: true, trimWhitespace: false});
expect(res).toEqual([
`PRIVATE_SSH_KEY=TESTESTTESTESTTESTESTTESTEST
TESTESTTESTESTTESTESTTESTEST
TESTESTTESTESTTESTESTTESTEST
`
]);
});
it('multiline values without quotes', async () => {
setInput(
'secrets',

View File

@@ -27,11 +27,12 @@ export interface ListOpts {
comment?: string;
commentNoInfix?: boolean;
quote?: string | boolean | Buffer | null;
trimWhitespace?: boolean;
}
export class Util {
public static getInputList(name: string, opts?: ListOpts): string[] {
return this.getList(core.getInput(name), opts);
return this.getList(core.getInput(name, {trimWhitespace: opts?.trimWhitespace !== false}), opts);
}
public static getList(input: string, opts?: ListOpts): string[] {
@@ -64,7 +65,7 @@ export class Util {
}
}
return res.filter(item => item).map(pat => pat.trim());
return res.filter(item => item).map(item => (opts?.trimWhitespace === false ? item : item.trim()));
}
public static getInputNumber(name: string): number | undefined {