fix arguments parsing

This commit is contained in:
Artur Stolear
2020-11-11 13:30:19 +01:00
committed by Artur
parent 302eb63bc1
commit d7bba81943
29 changed files with 417 additions and 49 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -26,7 +26,8 @@ export interface IGitReleaseManagerTool extends IDotnetTool {
}
@injectable()
export class GitReleaseManagerTool extends DotnetTool
export class GitReleaseManagerTool
extends DotnetTool
implements IGitReleaseManagerTool {
constructor(
@inject(TYPES.IBuildAgent) buildAgent: IBuildAgent,

View File

@@ -60,7 +60,7 @@ export class GitVersionTool extends DotnetTool implements IGitVersionTool {
workDir: string,
options: GitVersionSettings
): string[] {
const args = [workDir, '/output', 'json', '/output', 'buildserver']
let args = [workDir, '/output', 'json', '/output', 'buildserver']
const {
useConfigFile,
@@ -103,8 +103,7 @@ export class GitVersionTool extends DotnetTool implements IGitVersionTool {
}
if (additionalArguments) {
//args.push(additionalArguments)
Array.prototype.push.apply(args,additionalArguments.split(' '))
args = args.concat(this.argStringToArray(additionalArguments))
}
return args
}
@@ -120,6 +119,68 @@ export class GitVersionTool extends DotnetTool implements IGitVersionTool {
})
}
private argStringToArray(argString: string): string[] {
var args: string[] = []
var inQuotes = false
var escaped = false
var lastCharWasSpace = true
var arg = ''
var append = function (c: string) {
// we only escape double quotes.
if (escaped && c !== '"') {
arg += '\\'
}
arg += c
escaped = false
}
for (var i = 0; i < argString.length; i++) {
var c = argString.charAt(i)
if (c === ' ' && !inQuotes) {
if (!lastCharWasSpace) {
args.push(arg)
arg = ''
}
lastCharWasSpace = true
continue
} else {
lastCharWasSpace = false
}
if (c === '"') {
if (!escaped) {
inQuotes = !inQuotes
} else {
append(c)
}
continue
}
if (c === '\\' && escaped) {
append(c)
continue
}
if (c === '\\' && inQuotes) {
escaped = true
continue
}
append(c)
lastCharWasSpace = false
}
if (!lastCharWasSpace) {
args.push(arg.trim())
}
return args
}
private toCamelCase(input: string): string {
return input.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function (
match,