in agent/pluginmanager/acspluginmanager/main/main.go [67:195]
func execute(ctx *cli.Context, args []string) error {
verbose := flag.VerboseFlag(ctx.Flags()).IsAssigned()
pluginManager, err := pm.NewPluginManager(verbose)
if err != nil {
return err
}
version := flag.VersionFlag(ctx.Flags()).IsAssigned()
list := flag.ListFlag(ctx.Flags()).IsAssigned()
local := flag.LocalFlag(ctx.Flags()).IsAssigned()
verify := flag.VerifyFlag(ctx.Flags()).IsAssigned()
status := flag.StatusFlag(ctx.Flags()).IsAssigned()
exec := flag.ExecFlag(ctx.Flags()).IsAssigned()
remove := flag.RemoveFlag(ctx.Flags()).IsAssigned()
plugin, _ := flag.PluginFlag(ctx.Flags()).GetValue()
pluginId, _ := flag.PluginIdFlag(ctx.Flags()).GetValue()
pluginVersion, _ := flag.PluginVersionFlag(ctx.Flags()).GetValue()
params, _ := flag.ParamsFlag(ctx.Flags()).GetValue()
paramsV2, _ := flag.ParamsV2Flag(ctx.Flags()).GetValue()
url, _ := flag.UrlFlag(ctx.Flags()).GetValue()
separator, _ := flag.SeparatorFlag(ctx.Flags()).GetValue()
file, _ := flag.FileFlag(ctx.Flags()).GetValue()
var fetchTimeoutInSeconds int = 20
if fetchTimeout, assigned := flag.FetchTimeoutFlag(ctx.Flags()).GetValue(); assigned {
fetchTimeoutValue, err := strconv.Atoi(fetchTimeout)
if err != nil {
return fmt.Errorf(`Invalid fetch timeout argument "%s": %w`, fetchTimeout, err)
}
fetchTimeoutInSeconds = fetchTimeoutValue
}
var optionalExecutionTimeoutInSeconds *int = nil
if executionTimeout, assigned := flag.ExecutionTimeoutFlag(ctx.Flags()).GetValue(); assigned {
executionTimeoutValue, err := strconv.Atoi(executionTimeout)
if err != nil {
return fmt.Errorf(`Invalid timeout argument for execution "%s": %w`, executionTimeout, err)
}
optionalExecutionTimeoutInSeconds = &executionTimeoutValue
}
if verbose {
log.GetLogger().WithFields(log.Fields{
"verbose": verbose,
"list": list,
"local": local,
"verify": verify,
"status": status,
"exec": exec,
"plugin": plugin,
"pluginId": pluginId,
"pluginversion": pluginVersion,
"params": params,
"paramsV2": paramsV2,
"url": url,
"separator": separator,
"file": file,
}).Infof("Command-line options")
}
exitCode := 0
if version {
fmt.Println(versioning.AssistVersion)
} else if list {
log.GetLogger().Infof("Listing all plugins")
exitCode, err = pluginManager.List(plugin, local)
} else if verify {
executeParams := &pm.ExecuteParams{
CommonExecuteParams: pm.CommonExecuteParams{
Params: params,
Separator: separator,
ParamsV2: paramsV2,
OptionalExecutionTimeoutInSeconds: optionalExecutionTimeoutInSeconds,
},
}
if err = parsePlatformSpecificFlags(ctx.Flags(), executeParams); err != nil {
return err
}
exitCode, err = pluginManager.VerifyPlugin(&pm.VerifyFetchOptions{
Url: url,
FetchTimeoutInSeconds: fetchTimeoutInSeconds,
}, executeParams)
} else if status {
exitCode, err = pluginManager.ShowPluginStatus()
} else if exec {
executeParams := &pm.ExecuteParams{
CommonExecuteParams: pm.CommonExecuteParams{
Params: params,
Separator: separator,
ParamsV2: paramsV2,
OptionalExecutionTimeoutInSeconds: optionalExecutionTimeoutInSeconds,
},
}
if err = parsePlatformSpecificFlags(ctx.Flags(), executeParams); err != nil {
return err
}
exitCode, err = pluginManager.ExecutePlugin(&pm.ExecFetchOptions{
File: file,
PluginName: plugin,
PluginId: pluginId,
Version: pluginVersion,
Local: local,
FetchTimeoutInSeconds: fetchTimeoutInSeconds,
}, executeParams)
} else if remove {
exitCode, err = pluginManager.RemovePlugin(plugin)
} else {
ctx.Command().PrintFlags(ctx)
}
if err != nil {
log.GetLogger().Errorln(err)
}
if exitCode != 0 {
os.Exit(exitCode)
}
if err != nil {
fmt.Println(err)
}
return nil
}