From f118ba2a0a080b528eac3c70a65f1ee3f4818e66 Mon Sep 17 00:00:00 2001 From: Mike Landau Date: Thu, 7 Sep 2023 12:28:47 -0700 Subject: [PATCH 1/2] [debug] Print exec time --- internal/boxcli/midcobra/debug.go | 13 ++++--------- internal/boxcli/root.go | 6 +++++- internal/debug/debug.go | 8 +++++--- internal/debug/time.go | 27 +++++++++++++++++++++++++++ internal/envir/env.go | 1 - internal/envir/util.go | 5 ----- 6 files changed, 41 insertions(+), 19 deletions(-) create mode 100644 internal/debug/time.go diff --git a/internal/boxcli/midcobra/debug.go b/internal/boxcli/midcobra/debug.go index 11c115af888..ca331af8d7c 100644 --- a/internal/boxcli/midcobra/debug.go +++ b/internal/boxcli/midcobra/debug.go @@ -5,7 +5,6 @@ package midcobra import ( "errors" - "os" "os/exec" "strconv" @@ -15,7 +14,6 @@ import ( "go.jetpack.io/devbox/internal/boxcli/usererr" "go.jetpack.io/devbox/internal/debug" - "go.jetpack.io/devbox/internal/envir" "go.jetpack.io/devbox/internal/telemetry" "go.jetpack.io/devbox/internal/ux" ) @@ -41,14 +39,11 @@ func (d *DebugMiddleware) preRun(cmd *cobra.Command, args []string) { return } - strVal := "" if d.flag.Changed { - strVal = d.flag.Value.String() - } else { - strVal = os.Getenv(envir.DevboxDebug) - } - if enabled, _ := strconv.ParseBool(strVal); enabled { - debug.Enable() + strVal := d.flag.Value.String() + if enabled, _ := strconv.ParseBool(strVal); enabled { + debug.Enable() + } } } diff --git a/internal/boxcli/root.go b/internal/boxcli/root.go index 94d986b8ef0..3092dcea028 100644 --- a/internal/boxcli/root.go +++ b/internal/boxcli/root.go @@ -121,7 +121,11 @@ func Main() { return } - os.Exit(Execute(ctx, os.Args[1:])) + code := Execute(ctx, os.Args[1:]) + // Run out here instead of as a middleware so we can capture any time we spend + // in middlewares as well. + debug.PrintExecutionTime() + os.Exit(code) } func listAllCommands(cmd *cobra.Command, indent string) { diff --git a/internal/debug/debug.go b/internal/debug/debug.go index 702ef9e082d..b698ca78a43 100644 --- a/internal/debug/debug.go +++ b/internal/debug/debug.go @@ -7,18 +7,20 @@ import ( "fmt" "io" "log" + "os" "runtime" + "strconv" "github.com/getsentry/sentry-go" "github.com/pkg/errors" - - "go.jetpack.io/devbox/internal/envir" ) +const devboxDebug = "DEVBOX_DEBUG" + var enabled bool func init() { - enabled = envir.IsDevboxDebugEnabled() + enabled, _ = strconv.ParseBool(os.Getenv(devboxDebug)) } func IsEnabled() bool { return enabled } diff --git a/internal/debug/time.go b/internal/debug/time.go new file mode 100644 index 00000000000..d2a9b284d65 --- /dev/null +++ b/internal/debug/time.go @@ -0,0 +1,27 @@ +// Copyright 2023 Jetpack Technologies Inc and contributors. All rights reserved. +// Use of this source code is governed by the license in the LICENSE file. + +package debug + +import ( + "fmt" + "os" + "strconv" + "strings" + "time" +) + +const devboxPrintExecTime = "DEVBOX_PRINT_EXEC_TIME" + +var start = time.Now() + +func PrintExecutionTime() { + if enabled, _ := strconv.ParseBool(os.Getenv(devboxPrintExecTime)); !enabled { + return + } + fmt.Fprintf( + os.Stderr, + "\"%s\" took %s\n", strings.Join(os.Args, " "), + time.Since(start), + ) +} diff --git a/internal/envir/env.go b/internal/envir/env.go index 24520da2051..8bdda6e8cbc 100644 --- a/internal/envir/env.go +++ b/internal/envir/env.go @@ -5,7 +5,6 @@ package envir const ( DevboxCache = "DEVBOX_CACHE" - DevboxDebug = "DEVBOX_DEBUG" DevboxFeaturePrefix = "DEVBOX_FEATURE_" DevboxGateway = "DEVBOX_GATEWAY" // DevboxLatestVersion is the latest version available of the devbox CLI binary. diff --git a/internal/envir/util.go b/internal/envir/util.go index 1f3c46ea458..e7d8d880d13 100644 --- a/internal/envir/util.go +++ b/internal/envir/util.go @@ -23,11 +23,6 @@ func DoNotTrack() bool { return doNotTrack } -func IsDevboxDebugEnabled() bool { - enabled, _ := strconv.ParseBool(os.Getenv(DevboxDebug)) - return enabled -} - func IsInBrowser() bool { // TODO: a better name inBrowser, _ := strconv.ParseBool(os.Getenv("START_WEB_TERMINAL")) return inBrowser From 4b4bf8f3e3f25eb7a4fb431c2c70406a0b8e8813 Mon Sep 17 00:00:00 2001 From: Mike Landau Date: Thu, 7 Sep 2023 13:31:05 -0700 Subject: [PATCH 2/2] Fix --- internal/debug/debug.go | 4 ++-- testscripts/testrunner/setupenv.go | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/internal/debug/debug.go b/internal/debug/debug.go index b698ca78a43..cc42fdb8033 100644 --- a/internal/debug/debug.go +++ b/internal/debug/debug.go @@ -15,12 +15,12 @@ import ( "github.com/pkg/errors" ) -const devboxDebug = "DEVBOX_DEBUG" +const DevboxDebug = "DEVBOX_DEBUG" var enabled bool func init() { - enabled, _ = strconv.ParseBool(os.Getenv(devboxDebug)) + enabled, _ = strconv.ParseBool(os.Getenv(DevboxDebug)) } func IsEnabled() bool { return enabled } diff --git a/testscripts/testrunner/setupenv.go b/testscripts/testrunner/setupenv.go index a22aa3a9893..4ca9768f11f 100644 --- a/testscripts/testrunner/setupenv.go +++ b/testscripts/testrunner/setupenv.go @@ -8,6 +8,7 @@ import ( "github.com/rogpeppe/go-internal/testscript" + "go.jetpack.io/devbox/internal/debug" "go.jetpack.io/devbox/internal/envir" "go.jetpack.io/devbox/internal/xdg" ) @@ -22,7 +23,7 @@ func setupTestEnv(t *testing.T, envs *testscript.Env) error { return err } - envs.Setenv(envir.DevboxDebug, os.Getenv(envir.DevboxDebug)) + envs.Setenv(debug.DevboxDebug, os.Getenv(debug.DevboxDebug)) return nil }