@plugjs/plug
Version:
PlugJS Build System ===================
46 lines • 1.62 kB
JavaScript
import { EOL } from 'node:os';
import { formatWithOptions } from 'node:util';
import { stripAnsi } from "../utils/ansi.js";
import { logOptions } from "./options.js";
/* Initial values, and subscribe to changes */
let _output = logOptions.output;
let _githubAnnotations = logOptions.githubAnnotations;
let _inspectOptions = { ...logOptions.inspectOptions, breakLength: Infinity };
logOptions.on('changed', (options) => {
_output = options.output;
_githubAnnotations = options.githubAnnotations;
_inspectOptions = { ...options.inspectOptions, breakLength: Infinity };
});
function escapeData(data) {
return stripAnsi(data)
.replace(/%/g, '%25')
.replace(/\r/g, '%0D')
.replace(/\n/g, '%0A');
}
function escapeProp(prop) {
return stripAnsi(`${prop}`)
.replace(/%/g, '%25')
.replace(/\r/g, '%0D')
.replace(/\n/g, '%0A')
.replace(/:/g, '%3A')
.replace(/,/g, '%2C');
}
export function githubAnnotation(options, ...args) {
if (!_githubAnnotations)
return;
if (typeof options === 'string')
options = { type: options };
const { type, ...parameters } = options;
const attributes = Object.entries(parameters)
.filter(([key, value]) => !!(key && value))
.map(([key, value]) => `${key}=${escapeProp(value)}`)
.join(',');
const msg = escapeData(formatWithOptions(_inspectOptions, ...args));
if (attributes) {
_output.write(`::${type} ${attributes}::${msg}${EOL}`);
}
else {
_output.write(`::${type}::${msg}${EOL}`);
}
}
//# sourceMappingURL=github.js.map