From b378c18ddf0c6fc42af61bc644cac8a044904714 Mon Sep 17 00:00:00 2001 From: Cole Faust Date: Tue, 24 Oct 2023 10:21:49 -0700 Subject: [PATCH] Simplify commandString Use the same logic for both go and non-go actions. This also has a slight performance improvement for go actions by allocating the slice in advance instead of using append() Test: Presubmits Change-Id: I92b60c547d8470816a67ac1ef6e334fd5f547701 --- bazel/aquery.go | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/bazel/aquery.go b/bazel/aquery.go index 27ccb20c8..35942bc32 100644 --- a/bazel/aquery.go +++ b/bazel/aquery.go @@ -443,26 +443,21 @@ func (a *aqueryArtifactHandler) depsetContentHashes(inputDepsetIds []uint32) ([] // escapes the args received from aquery and creates a command string func commandString(actionEntry *analysis_v2_proto.Action) string { - switch actionEntry.Mnemonic { - case "GoCompilePkg", "GoStdlib": - argsEscaped := []string{} - for _, arg := range actionEntry.Arguments { - if arg == "" { - // If this is an empty string, add '' - // And not - // 1. (literal empty) - // 2. `''\'''\'''` (escaped version of '') - // - // If we had used (1), then this would appear as a whitespace when we strings.Join - argsEscaped = append(argsEscaped, "''") - } else { - argsEscaped = append(argsEscaped, proptools.ShellEscapeIncludingSpaces(arg)) - } + argsEscaped := make([]string, len(actionEntry.Arguments)) + for i, arg := range actionEntry.Arguments { + if arg == "" { + // If this is an empty string, add '' + // And not + // 1. (literal empty) + // 2. `''\'''\'''` (escaped version of '') + // + // If we had used (1), then this would appear as a whitespace when we strings.Join + argsEscaped[i] = "''" + } else { + argsEscaped[i] = proptools.ShellEscapeIncludingSpaces(arg) } - return strings.Join(argsEscaped, " ") - default: - return strings.Join(proptools.ShellEscapeListIncludingSpaces(actionEntry.Arguments), " ") } + return strings.Join(argsEscaped, " ") } func (a *aqueryArtifactHandler) normalActionBuildStatement(actionEntry *analysis_v2_proto.Action) (*BuildStatement, error) {