UNPKG

@plugjs/plug

Version:
46 lines 1.62 kB
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