mirror of
https://github.com/microsoft/setup-msbuild.git
synced 2024-11-24 20:41:08 +07:00
66 lines
2.1 KiB
JavaScript
66 lines
2.1 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
const os = require("os");
|
||
|
/**
|
||
|
* Commands
|
||
|
*
|
||
|
* Command Format:
|
||
|
* ##[name key=value;key=value]message
|
||
|
*
|
||
|
* Examples:
|
||
|
* ##[warning]This is the user warning message
|
||
|
* ##[set-secret name=mypassword]definitelyNotAPassword!
|
||
|
*/
|
||
|
function issueCommand(command, properties, message) {
|
||
|
const cmd = new Command(command, properties, message);
|
||
|
process.stdout.write(cmd.toString() + os.EOL);
|
||
|
}
|
||
|
exports.issueCommand = issueCommand;
|
||
|
function issue(name, message = '') {
|
||
|
issueCommand(name, {}, message);
|
||
|
}
|
||
|
exports.issue = issue;
|
||
|
const CMD_STRING = '::';
|
||
|
class Command {
|
||
|
constructor(command, properties, message) {
|
||
|
if (!command) {
|
||
|
command = 'missing.command';
|
||
|
}
|
||
|
this.command = command;
|
||
|
this.properties = properties;
|
||
|
this.message = message;
|
||
|
}
|
||
|
toString() {
|
||
|
let cmdStr = CMD_STRING + this.command;
|
||
|
if (this.properties && Object.keys(this.properties).length > 0) {
|
||
|
cmdStr += ' ';
|
||
|
for (const key in this.properties) {
|
||
|
if (this.properties.hasOwnProperty(key)) {
|
||
|
const val = this.properties[key];
|
||
|
if (val) {
|
||
|
// safely append the val - avoid blowing up when attempting to
|
||
|
// call .replace() if message is not a string for some reason
|
||
|
cmdStr += `${key}=${escape(`${val || ''}`)},`;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
cmdStr += CMD_STRING;
|
||
|
// safely append the message - avoid blowing up when attempting to
|
||
|
// call .replace() if message is not a string for some reason
|
||
|
const message = `${this.message || ''}`;
|
||
|
cmdStr += escapeData(message);
|
||
|
return cmdStr;
|
||
|
}
|
||
|
}
|
||
|
function escapeData(s) {
|
||
|
return s.replace(/\r/g, '%0D').replace(/\n/g, '%0A');
|
||
|
}
|
||
|
function escape(s) {
|
||
|
return s
|
||
|
.replace(/\r/g, '%0D')
|
||
|
.replace(/\n/g, '%0A')
|
||
|
.replace(/]/g, '%5D')
|
||
|
.replace(/;/g, '%3B');
|
||
|
}
|
||
|
//# sourceMappingURL=command.js.map
|