@plugjs/plug
Version:
PlugJS Build System ===================
36 lines (35 loc) • 1.47 kB
JavaScript
// 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