1
0
Fork 0

Run linter

pull/4/head
Danny McCormick 2019-05-20 19:17:56 -04:00
parent e6cc6dc147
commit 97c1e7df5a
3 changed files with 137 additions and 133 deletions

View File

@ -1,6 +1,6 @@
import im = require('./interfaces'); import im = require('./interfaces')
import intm = require('./internal'); import intm = require('./internal')
import process = require('process'); import process = require('process')
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// Variables // Variables
@ -12,8 +12,8 @@ import process = require('process');
* @param val the value of the variable * @param val the value of the variable
*/ */
export function exportVariable(name: string, val: string) { export function exportVariable(name: string, val: string) {
process.env[name] = val; process.env[name] = val
intm._issueCommand('set-variable', {'name': name}, val); intm._issueCommand('set-variable', {name: name}, val)
} }
/** /**
@ -22,8 +22,8 @@ export function exportVariable(name: string, val: string) {
* @param val value of the secret * @param val value of the secret
*/ */
export function setSecret(name: string, val: string) { export function setSecret(name: string, val: string) {
exportVariable(name, val); exportVariable(name, val)
intm._issueCommand('set-secret', {}, val); intm._issueCommand('set-secret', {}, val)
} }
/** /**
@ -34,12 +34,13 @@ export function setSecret(name: string, val: string) {
* @returns string * @returns string
*/ */
export function getInput(name: string, options?: im.InputOptions): string { export function getInput(name: string, options?: im.InputOptions): string {
let val: string = process.env['INPUT_' + name.replace(' ', '_').toUpperCase()] || ''; let val: string =
process.env['INPUT_' + name.replace(' ', '_').toUpperCase()] || ''
if (options && options.required && !val) { if (options && options.required && !val) {
throw new Error(`Input required and not supplied: ${name}`); throw new Error(`Input required and not supplied: ${name}`)
} }
return val.trim(); return val.trim()
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
@ -50,7 +51,7 @@ export function getInput(name: string, options?: im.InputOptions): string {
* Sets the action status to neutral * Sets the action status to neutral
*/ */
export function setNeutral() { export function setNeutral() {
process.exitCode = im.ExitCode.Neutral; process.exitCode = im.ExitCode.Neutral
} }
/** /**
@ -59,8 +60,8 @@ export function setNeutral() {
* @param message add error issue message * @param message add error issue message
*/ */
export function setFailed(message: string) { export function setFailed(message: string) {
process.exitCode = im.ExitCode.Failure; process.exitCode = im.ExitCode.Failure
error(message); error(message)
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
@ -72,7 +73,7 @@ export function setFailed(message: string) {
* @param message debug message * @param message debug message
*/ */
export function debug(message: string) { export function debug(message: string) {
intm._issueCommand('debug', {}, message); intm._issueCommand('debug', {}, message)
} }
/** /**
@ -80,7 +81,7 @@ export function debug(message: string) {
* @param message error issue message * @param message error issue message
*/ */
export function error(message: string) { export function error(message: string) {
intm._issue('error', message); intm._issue('error', message)
} }
/** /**
@ -88,5 +89,5 @@ export function error(message: string) {
* @param message warning issue message * @param message warning issue message
*/ */
export function warning(message: string) { export function warning(message: string) {
intm._issue('warning', message); intm._issue('warning', message)
} }

View File

@ -23,5 +23,5 @@ export enum ExitCode {
*/ */
export interface InputOptions { export interface InputOptions {
/** Optional. Whether the input is required. If required and not present, will throw. Defaults to false */ /** Optional. Whether the input is required. If required and not present, will throw. Defaults to false */
required?: boolean; required?: boolean
} }

View File

@ -1,5 +1,4 @@
import os = require('os'); import os = require('os')
/** /**
* Commands * Commands
@ -11,138 +10,142 @@ import os = require('os');
* ##[warning]This is the user warning message * ##[warning]This is the user warning message
* ##[set-secret name=mypassword]definatelyNotAPassword! * ##[set-secret name=mypassword]definatelyNotAPassword!
*/ */
export function _issueCommand(command: string, properties: any, message: string) { export function _issueCommand(
var cmd = new _Command(command, properties, message); command: string,
_writeLine(cmd.toString()); properties: any,
message: string
) {
var cmd = new _Command(command, properties, message)
_writeLine(cmd.toString())
} }
export function _issue(name: string, message: string) { export function _issue(name: string, message: string) {
_issueCommand(name, {}, message); _issueCommand(name, {}, message)
} }
let CMD_PREFIX = '##['; let CMD_PREFIX = '##['
export class _Command { export class _Command {
constructor(command: string, properties: any, message: string) { constructor(command: string, properties: any, message: string) {
if (!command) { if (!command) {
command = 'missing.command'; command = 'missing.command'
} }
this.command = command; this.command = command
this.properties = properties; this.properties = properties
this.message = message; this.message = message
} }
public command: string; public command: string
public message: string; public message: string
public properties: any; public properties: any
public toString() { public toString() {
var cmdStr = CMD_PREFIX + this.command; var cmdStr = CMD_PREFIX + this.command
if (this.properties && Object.keys(this.properties).length > 0) { if (this.properties && Object.keys(this.properties).length > 0) {
cmdStr += ' '; cmdStr += ' '
for (var key in this.properties) { for (var key in this.properties) {
if (this.properties.hasOwnProperty(key)) { if (this.properties.hasOwnProperty(key)) {
var val = this.properties[key]; var val = this.properties[key]
if (val) { if (val) {
// safely append the val - avoid blowing up when attempting to // safely append the val - avoid blowing up when attempting to
// call .replace() if message is not a string for some reason // call .replace() if message is not a string for some reason
cmdStr += key + '=' + escape('' + (val || '')) + ';'; cmdStr += key + '=' + escape('' + (val || '')) + ';'
} }
} }
} }
} }
cmdStr += ']'; cmdStr += ']'
// safely append the message - avoid blowing up when attempting to // safely append the message - avoid blowing up when attempting to
// call .replace() if message is not a string for some reason // call .replace() if message is not a string for some reason
let message: string = '' + (this.message || ''); let message: string = '' + (this.message || '')
cmdStr += escapedata(message); cmdStr += escapedata(message)
return cmdStr; return cmdStr
} }
} }
export function _commandFromString(commandLine: string) { export function _commandFromString(commandLine: string) {
var preLen = CMD_PREFIX.length; var preLen = CMD_PREFIX.length
var lbPos = commandLine.indexOf('['); var lbPos = commandLine.indexOf('[')
var rbPos = commandLine.indexOf(']'); var rbPos = commandLine.indexOf(']')
if (lbPos == -1 || rbPos == -1 || rbPos - lbPos < 3) { if (lbPos == -1 || rbPos == -1 || rbPos - lbPos < 3) {
throw new Error('Invalid command brackets'); throw new Error('Invalid command brackets')
} }
var cmdInfo = commandLine.substring(lbPos + 1, rbPos); var cmdInfo = commandLine.substring(lbPos + 1, rbPos)
var spaceIdx = cmdInfo.indexOf(' '); var spaceIdx = cmdInfo.indexOf(' ')
var command = cmdInfo; var command = cmdInfo
var properties: {[key: string]: string} = {}; var properties: {[key: string]: string} = {}
if (spaceIdx > 0) { if (spaceIdx > 0) {
command = cmdInfo.trim().substring(0, spaceIdx); command = cmdInfo.trim().substring(0, spaceIdx)
var propSection = cmdInfo.trim().substring(spaceIdx+1); var propSection = cmdInfo.trim().substring(spaceIdx + 1)
var propLines: string[] = propSection.split(';'); var propLines: string[] = propSection.split(';')
propLines.forEach(function (propLine: string) { propLines.forEach(function(propLine: string) {
propLine = propLine.trim(); propLine = propLine.trim()
if (propLine.length > 0) { if (propLine.length > 0) {
var eqIndex = propLine.indexOf('='); var eqIndex = propLine.indexOf('=')
if (eqIndex == -1){ if (eqIndex == -1) {
throw new Error('Invalid property: ' + propLine); throw new Error('Invalid property: ' + propLine)
} }
var key: string = propLine.substring(0, eqIndex); var key: string = propLine.substring(0, eqIndex)
var val: string = propLine.substring(eqIndex+1); var val: string = propLine.substring(eqIndex + 1)
properties[key] = unescape(val); properties[key] = unescape(val)
} }
}); })
} }
let msg: string = unescapedata(commandLine.substring(rbPos + 1)); let msg: string = unescapedata(commandLine.substring(rbPos + 1))
var cmd = new _Command(command, properties, msg); var cmd = new _Command(command, properties, msg)
return cmd; return cmd
} }
function escapedata(s: string) : string { function escapedata(s: string): string {
return s.replace(/\r/g, '%0D') return s.replace(/\r/g, '%0D').replace(/\n/g, '%0A')
.replace(/\n/g, '%0A');
} }
function unescapedata(s: string) : string { function unescapedata(s: string): string {
return s.replace(/%0D/g, '\r') return s.replace(/%0D/g, '\r').replace(/%0A/g, '\n')
.replace(/%0A/g, '\n');
} }
function escape(s: string) : string { function escape(s: string): string {
return s.replace(/\r/g, '%0D') return s
.replace(/\r/g, '%0D')
.replace(/\n/g, '%0A') .replace(/\n/g, '%0A')
.replace(/]/g, '%5D') .replace(/]/g, '%5D')
.replace(/;/g, '%3B'); .replace(/;/g, '%3B')
} }
function unescape(s: string) : string { function unescape(s: string): string {
return s.replace(/%0D/g, '\r') return s
.replace(/%0D/g, '\r')
.replace(/%0A/g, '\n') .replace(/%0A/g, '\n')
.replace(/%5D/g, ']') .replace(/%5D/g, ']')
.replace(/%3B/g, ';'); .replace(/%3B/g, ';')
} }
//----------------------------------------------------- //-----------------------------------------------------
// Streams: allow to override the stream // Streams: allow to override the stream
//----------------------------------------------------- //-----------------------------------------------------
let _outStream = process.stdout; let _outStream = process.stdout
let _errStream = process.stderr; let _errStream = process.stderr
export function _writeLine(str: string): void { export function _writeLine(str: string): void {
_outStream.write(str + os.EOL); _outStream.write(str + os.EOL)
} }
export function _setStdStream(stdStream: NodeJS.WriteStream): void { export function _setStdStream(stdStream: NodeJS.WriteStream): void {
_outStream = stdStream; _outStream = stdStream
} }
export function _setErrStream(errStream: NodeJS.WriteStream): void { export function _setErrStream(errStream: NodeJS.WriteStream): void {
_errStream = errStream; _errStream = errStream
} }