diff --git a/pkg/cli/cmd/root.go b/pkg/cli/cmd/root.go index 9606d3b..854d06c 100644 --- a/pkg/cli/cmd/root.go +++ b/pkg/cli/cmd/root.go @@ -60,7 +60,7 @@ capabilities. $ escape-cli issues list --severity HIGH,CRITICAL 💡 PRO TIPS: - • Use -v for verbose logging (-vv for debug, -vvv for trace) + • Use -v for debug, -vv for trace, -vvv for http/raw debug • Output in JSON or YAML with -o json or -o yaml • Most list commands support powerful filtering options • Use --watch flag when starting scans for real-time updates @@ -78,16 +78,15 @@ capabilities. verbosityFrom = "environment variable ESCAPE_VERBOSITY" } + // Verbosity levels per Health Monitoring for Private Locations docs: + // 0 = default (minimal), 1 = debug, 2 = trace, 3 = trace + http/raw if rootCmdVerbose > 0 { //nolint:mnd - log.SetLevel(logrus.InfoLevel) - } - if rootCmdVerbose > 1 { //nolint:mnd log.SetLevel(logrus.DebugLevel) } - if rootCmdVerbose > 2 { //nolint:mnd + if rootCmdVerbose > 1 { //nolint:mnd log.SetLevel(logrus.TraceLevel) } - if rootCmdVerbose > 3 { //nolint:mnd + if rootCmdVerbose > 2 { //nolint:mnd escape.Debug = true } log.Info("Verbose mode: %d from %s", rootCmdVerbose, verbosityFrom) @@ -107,7 +106,7 @@ capabilities. } func init() { - rootCmd.PersistentFlags().CountVarP(&rootCmdVerbose, "verbose", "v", "verbose output: -v (info), -vv (debug), -vvv (trace), -vvvv (http debug)") + rootCmd.PersistentFlags().CountVarP(&rootCmdVerbose, "verbose", "v", "verbose output: -v (debug), -vv (trace), -vvv (http/raw debug)") rootCmd.PersistentFlags().StringVarP(&rootCmdOutputStr, "output", "o", "pretty", "output format: pretty (human-readable tables), json (machine-readable), yaml (configuration files)") rootCmd.SetUsageTemplate(rootCmd.UsageTemplate() + ` COMMAND CATEGORIES: diff --git a/pkg/log/main_test.go b/pkg/log/main_test.go index 412dd48..04b9b96 100644 --- a/pkg/log/main_test.go +++ b/pkg/log/main_test.go @@ -1,4 +1,4 @@ -package log +package log //nolint:revive import ( "testing" diff --git a/pkg/version/update_check.go b/pkg/version/update_check.go index 080c4f0..1564d9a 100644 --- a/pkg/version/update_check.go +++ b/pkg/version/update_check.go @@ -1,4 +1,4 @@ -package version +package version //nolint:revive import ( "context" @@ -15,62 +15,60 @@ import ( const updateCheckTimeout = 1000 * time.Millisecond type githubRelease struct { - TagName string `json:"tag_name"` + TagName string `json:"tag_name"` } func normalizeVersion(v string) string { - v = strings.TrimSpace(v) - v = strings.TrimPrefix(v, "v") - return v + v = strings.TrimSpace(v) + v = strings.TrimPrefix(v, "v") + return v } func getLatestReleaseTag(ctx context.Context) (string, error) { - client := env.GetHTTPClient() - req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://api.github.com/repos/Escape-Technologies/cli/releases/latest", nil) - if err != nil { - return "", fmt.Errorf("create request: %w", err) - } + client := env.GetHTTPClient() + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://api.github.com/repos/Escape-Technologies/cli/releases/latest", nil) + if err != nil { + return "", fmt.Errorf("create request: %w", err) + } - resp, err := client.Do(req) - if err != nil { - return "", fmt.Errorf("perform request: %w", err) - } - defer func() { _ = resp.Body.Close() }() - if resp.StatusCode != http.StatusOK { - return "", fmt.Errorf("unexpected status: %s", resp.Status) - } - var release githubRelease - if err := json.NewDecoder(resp.Body).Decode(&release); err != nil { - return "", fmt.Errorf("decode response: %w", err) - } - return strings.TrimSpace(release.TagName), nil + resp, err := client.Do(req) + if err != nil { + return "", fmt.Errorf("perform request: %w", err) + } + defer func() { _ = resp.Body.Close() }() + if resp.StatusCode != http.StatusOK { + return "", fmt.Errorf("unexpected status: %s", resp.Status) + } + var release githubRelease + if err := json.NewDecoder(resp.Body).Decode(&release); err != nil { + return "", fmt.Errorf("decode response: %w", err) + } + return strings.TrimSpace(release.TagName), nil } // WarnIfNotLatestVersion checks the latest GitHub release and prints if the current version is not the latest. func WarnIfNotLatestVersion(parentCtx context.Context) { - v := GetVersion() - if strings.TrimSpace(v.Version) == "" || v.Version == "local" { - return - } + v := GetVersion() + if strings.TrimSpace(v.Version) == "" || v.Version == "local" { + return + } - ctx, cancel := context.WithTimeout(parentCtx, updateCheckTimeout) - defer cancel() + ctx, cancel := context.WithTimeout(parentCtx, updateCheckTimeout) + defer cancel() - latest, err := getLatestReleaseTag(ctx) - if err != nil || latest == "" { - return - } + latest, err := getLatestReleaseTag(ctx) + if err != nil || latest == "" { + return + } - current := normalizeVersion(v.Version) - latestNorm := normalizeVersion(latest) - if current == latestNorm { - return - } + current := normalizeVersion(v.Version) + latestNorm := normalizeVersion(latest) + if current == latestNorm { + return + } - yellow := "\x1b[33m" - reset := "\x1b[0m" - msg := fmt.Sprintf("A new version of escape-cli is available: %s (you have %s). Update: https://docs.escape.tech/documentation/tooling/cli/?h=cli", latest, v.Version) - fmt.Fprintf(os.Stderr, "%s%s%s\n", yellow, msg, reset) + yellow := "\x1b[33m" + reset := "\x1b[0m" + msg := fmt.Sprintf("A new version of escape-cli is available: %s (you have %s). Update: https://docs.escape.tech/documentation/tooling/cli/?h=cli", latest, v.Version) + fmt.Fprintf(os.Stderr, "%s%s%s\n", yellow, msg, reset) } - - diff --git a/pkg/version/version.go b/pkg/version/version.go index 2828f57..87d26ce 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -1,5 +1,5 @@ // Package version contains the version information for the CLI -package version +package version //nolint:revive import "fmt"