mirror of
https://github.com/diligencia/semantic-branch-version.git
synced 2024-11-23 23:13:51 +08:00
92 lines
2.7 KiB
JavaScript
92 lines
2.7 KiB
JavaScript
|
"use strict";
|
||
|
var __importStar = (this && this.__importStar) || function (mod) {
|
||
|
if (mod && mod.__esModule) return mod;
|
||
|
var result = {};
|
||
|
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
||
|
result["default"] = mod;
|
||
|
return result;
|
||
|
};
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
const os = __importStar(require("os"));
|
||
|
/**
|
||
|
* Commands
|
||
|
*
|
||
|
* Command Format:
|
||
|
* ::name key=value,key=value::message
|
||
|
*
|
||
|
* Examples:
|
||
|
* ::warning::This is the message
|
||
|
* ::set-env name=MY_VAR::some value
|
||
|
*/
|
||
|
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 += ' ';
|
||
|
let first = true;
|
||
|
for (const key in this.properties) {
|
||
|
if (this.properties.hasOwnProperty(key)) {
|
||
|
const val = this.properties[key];
|
||
|
if (val) {
|
||
|
if (first) {
|
||
|
first = false;
|
||
|
}
|
||
|
else {
|
||
|
cmdStr += ',';
|
||
|
}
|
||
|
cmdStr += `${key}=${escapeProperty(val)}`;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
cmdStr += `${CMD_STRING}${escapeData(this.message)}`;
|
||
|
return cmdStr;
|
||
|
}
|
||
|
}
|
||
|
/**
|
||
|
* Sanitizes an input into a string so it can be passed into issueCommand safely
|
||
|
* @param input input to sanitize into a string
|
||
|
*/
|
||
|
function toCommandValue(input) {
|
||
|
if (input === null || input === undefined) {
|
||
|
return '';
|
||
|
}
|
||
|
else if (typeof input === 'string' || input instanceof String) {
|
||
|
return input;
|
||
|
}
|
||
|
return JSON.stringify(input);
|
||
|
}
|
||
|
exports.toCommandValue = toCommandValue;
|
||
|
function escapeData(s) {
|
||
|
return toCommandValue(s)
|
||
|
.replace(/%/g, '%25')
|
||
|
.replace(/\r/g, '%0D')
|
||
|
.replace(/\n/g, '%0A');
|
||
|
}
|
||
|
function escapeProperty(s) {
|
||
|
return toCommandValue(s)
|
||
|
.replace(/%/g, '%25')
|
||
|
.replace(/\r/g, '%0D')
|
||
|
.replace(/\n/g, '%0A')
|
||
|
.replace(/:/g, '%3A')
|
||
|
.replace(/,/g, '%2C');
|
||
|
}
|
||
|
//# sourceMappingURL=command.js.map
|