fix arguments parsing
This commit is contained in:
File diff suppressed because one or more lines are too long
2
dist/azure/gitreleasemanager/close/bundle.js
vendored
2
dist/azure/gitreleasemanager/close/bundle.js
vendored
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
2
dist/azure/gitreleasemanager/open/bundle.js
vendored
2
dist/azure/gitreleasemanager/open/bundle.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
dist/azure/gitreleasemanager/setup/bundle.js
vendored
2
dist/azure/gitreleasemanager/setup/bundle.js
vendored
File diff suppressed because one or more lines are too long
59
dist/azure/gitversion/execute/bundle.js
vendored
59
dist/azure/gitversion/execute/bundle.js
vendored
File diff suppressed because one or more lines are too long
59
dist/azure/gitversion/setup/bundle.js
vendored
59
dist/azure/gitversion/setup/bundle.js
vendored
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
2
dist/github/gitreleasemanager/open/bundle.js
vendored
2
dist/github/gitreleasemanager/open/bundle.js
vendored
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
59
dist/github/gitversion/execute/bundle.js
vendored
59
dist/github/gitversion/execute/bundle.js
vendored
File diff suppressed because one or more lines are too long
59
dist/github/gitversion/setup/bundle.js
vendored
59
dist/github/gitversion/setup/bundle.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
dist/mock/gitreleasemanager/close/bundle.js
vendored
2
dist/mock/gitreleasemanager/close/bundle.js
vendored
File diff suppressed because one or more lines are too long
2
dist/mock/gitreleasemanager/create/bundle.js
vendored
2
dist/mock/gitreleasemanager/create/bundle.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
dist/mock/gitreleasemanager/open/bundle.js
vendored
2
dist/mock/gitreleasemanager/open/bundle.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
dist/mock/gitreleasemanager/setup/bundle.js
vendored
2
dist/mock/gitreleasemanager/setup/bundle.js
vendored
File diff suppressed because one or more lines are too long
59
dist/mock/gitversion/execute/bundle.js
vendored
59
dist/mock/gitversion/execute/bundle.js
vendored
File diff suppressed because one or more lines are too long
59
dist/mock/gitversion/setup/bundle.js
vendored
59
dist/mock/gitversion/setup/bundle.js
vendored
File diff suppressed because one or more lines are too long
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user