in sharedlibraries/guestactions/guestactions.go [86:109]
func handleShellCommand(ctx context.Context, command *gpb.Command, execute commandlineexecutor.Execute) *gpb.CommandResult {
sc := command.GetShellCommand()
result := execute(
ctx,
commandlineexecutor.Params{
Executable: sc.GetCommand(),
ArgsToSplit: sc.GetArgs(),
Timeout: int(sc.GetTimeoutSeconds()),
},
)
log.CtxLogger(ctx).Debugw("received result for shell command.",
"command", prototext.Format(command), "stdOut", result.StdOut,
"stdErr", result.StdErr, "error", result.Error, "exitCode", result.ExitCode)
exitCode := int32(result.ExitCode)
if exitCode == 0 && (result.Error != nil || result.StdErr != "") {
exitCode = int32(1)
}
return &gpb.CommandResult{
Command: command,
Stdout: result.StdOut,
Stderr: result.StdErr,
ExitCode: exitCode,
}
}