UNPKG

@plugjs/plug

Version:
36 lines (35 loc) 1.47 kB
// logging/github.ts import { EOL } from "node:os"; import { formatWithOptions } from "node:util"; import { stripAnsi } from "../utils/ansi.mjs"; import { logOptions } from "./options.mjs"; var _output = logOptions.output; var _githubAnnotations = logOptions.githubAnnotations; var _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"); } 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}`); } } export { githubAnnotation }; //# sourceMappingURL=github.mjs.map