| "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 |