Skip to content

Commit 3ba8341

Browse files
fix: do not run env variables check if debug is enabled (#170)
1 parent 59b95b8 commit 3ba8341

File tree

3 files changed

+55
-118
lines changed

3 files changed

+55
-118
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
kind: "\U0001F41B Bug Fix"
2+
body: If pterm debug messages was enabled before then there is no need to check env variables again.
3+
time: 2025-10-31T11:57:36.624516857+02:00

pkg/magetoolsutils/magetoolsutils.go

Lines changed: 38 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -9,73 +9,50 @@ import (
99
"github.com/pterm/pterm"
1010
)
1111

12-
// checkPtermDebug looks for DEBUG=1 and sets debug level output if this is found to help troubleshoot tasks.
13-
func CheckPtermDebug() { //nolint:cyclop,funlen // cyclop,funlen: i'm sure there's a better way, but for now it works, refactor later // TODO: simplify this env var logic check with helpers
14-
// var debug bool
15-
// var err error
12+
// CheckPtermDebug looks for DEBUG=1 and sets debug level output if this is found to help troubleshoot tasks.
13+
func CheckPtermDebug() {
14+
switch {
15+
case pterm.PrintDebugMessages:
16+
return // Debug messages already enabled. Do nothing.
1617

17-
// pterm.Debug.Printfln(
18-
// "\nDEBUG: %v\n"+"SYSTEM_DEBUG: %v\n"+"ACTIONS_STEP_DEBUG: %v\n",
19-
// os.Getenv("DEBUG"),
20-
// os.Getenv("SYSTEM_DEBUG"),
21-
// os.Getenv("ACTIONS_STEP_DEBUG"),
22-
// )
18+
case enableDebugMessagesBasedOnEnv("DEBUG"):
19+
return // General debug env.
2320

24-
// --------------------- GENERAL DEBUG ---------------------
25-
envDebug, isSet := os.LookupEnv("DEBUG")
26-
if isSet {
27-
debug, err := strconv.ParseBool(envDebug)
28-
if err != nil {
29-
pterm.Warning.WithShowLineNumber(true).
30-
WithLineNumberOffset(1).
31-
Printfln("ParseBool(DEBUG): %v\t debug: %v", err, debug)
32-
}
33-
if debug {
34-
pterm.Debug.Println("strconv.ParseBool(\"DEBUG\") true, enabling debug output and exiting")
35-
pterm.Debug.Println("DEBUG env var detected, setting tasks to debug level output")
36-
pterm.EnableDebugMessages()
37-
return
38-
}
39-
}
21+
case enableDebugMessagesBasedOnEnv("SYSTEM_DEBUG"):
22+
return // Azure DevOps debug env.
4023

41-
// --------------------- AZURE DEVOPS DEBUG ---------------------
42-
envSystemDebug, isSet := os.LookupEnv("SYSTEM_DEBUG")
43-
if isSet {
44-
debug, err := strconv.ParseBool(envSystemDebug) // CI: azure devops uses this for diagnostic level output
45-
if err != nil {
46-
pterm.Warning.WithShowLineNumber(true).
47-
WithLineNumberOffset(1).
48-
Printfln("ParseBool(SYSTEM_DEBUG): %v\t debug: %v", err, debug)
49-
}
24+
case enableDebugMessagesBasedOnEnv("ACTIONS_STEP_DEBUG"):
25+
return // GitHub Actions debug env.
5026

51-
if debug {
52-
pterm.Debug.Println("strconv.ParseBool(\"SYSTEM_DEBUG\") true, enabling debug output and exiting")
53-
pterm.Debug.Println("SYSTEM_DEBUG env var detected, setting tasks to debug level output")
54-
pterm.EnableDebugMessages()
55-
return
56-
}
27+
case mg.Verbose():
28+
pterm.EnableDebugMessages()
29+
pterm.Debug.Println("mg.Verbose() true (-v or MAGEFILE_VERBOSE env var), setting tasks to debug level output")
30+
return
5731
}
32+
}
5833

59-
// --------------------- GITHUB ACTIONS DEBUG ---------------------
60-
envActionsDebug, isSet := os.LookupEnv("ACTIONS_STEP_DEBUG")
61-
if isSet {
62-
debug, err := strconv.ParseBool(envActionsDebug) // CI: github uses this for diagnostic level output
63-
if err != nil {
64-
pterm.Warning.WithShowLineNumber(true).
65-
WithLineNumberOffset(1).
66-
Printfln("ParseBool(ACTIONS_STEP_DEBUG): %v\t debug: %v", err, debug)
67-
}
68-
if debug {
69-
pterm.Debug.Println("strconv.ParseBool(\"ACTIONS_STEP_DEBUG\") true, enabling debug output and exiting")
70-
pterm.Info.Println("ACTIONS_STEP_DEBUG env var detected, setting tasks to debug level output")
71-
pterm.EnableDebugMessages()
72-
return
73-
}
34+
// enableDebugMessagesBasedOnEnv checks if the specified environment variable is set to a truthy value.
35+
// If so, it enables debug messages in pterm and returns true. Otherwise, it returns false.
36+
func enableDebugMessagesBasedOnEnv(name string) bool {
37+
envValue, isSet := os.LookupEnv(name)
38+
if !isSet {
39+
return false
7440
}
75-
if mg.Verbose() {
76-
pterm.Debug.Printfln("mg.Verbose() true, setting pterm.EnableDebugMessages()")
77-
pterm.Debug.Println("mg.Verbose() true (-v or MAGEFILE_VERBOSE env var), setting tasks to debug level output")
78-
pterm.EnableDebugMessages()
79-
return
41+
42+
debug, err := strconv.ParseBool(envValue)
43+
if err != nil {
44+
const offset = 2
45+
pterm.Warning.WithShowLineNumber(true).
46+
WithLineNumberOffset(offset).
47+
Printfln("ParseBool(%s): %v\t debug: %v", name, err, debug)
48+
return false
8049
}
50+
if !debug {
51+
return false
52+
}
53+
54+
pterm.EnableDebugMessages()
55+
pterm.Debug.Printfln("%s env var detected, setting tasks to debug level output", name)
56+
57+
return true
8158
}

pkg/magetoolsutils/magetoolsutils_test.go

Lines changed: 14 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
package magetoolsutils_test
44

55
import (
6-
"os"
76
"testing"
87

98
u "github.com/sheldonhull/magetools/pkg/magetoolsutils"
@@ -13,35 +12,26 @@ import (
1312
)
1413

1514
func Test_CheckPtermDebug(t *testing.T) {
16-
// pterm.EnableDebugMessages()
17-
18-
// pterm.DisableDebugMessages()
19-
// pterm.DisableStyling()
20-
// pterm.DisableOutput()
21-
orig := os.Getenv("DEBUG")
22-
defer os.Setenv("DEBUG", orig)
23-
24-
origSystem := os.Getenv("SYSTEM_DEBUG")
25-
defer os.Setenv("SYSTEM_DEBUG", origSystem)
26-
27-
origActions := os.Getenv("ACTIONS_STEP_DEBUG")
28-
defer os.Setenv("ACTIONS_STEP_DEBUG", origActions)
2915
testCases := []struct {
3016
desc string
3117
envvar string
3218
}{
3319
{
34-
desc: "DEBUG general flag",
20+
desc: "General debug env",
3521
envvar: "DEBUG",
3622
},
3723
{
38-
desc: "SYSTEM_DEBUG azure-devops flag",
24+
desc: "Azure DevOps debug env",
3925
envvar: "SYSTEM_DEBUG",
4026
},
4127
{
42-
desc: "ACTIONS_STEP_DEBUG github-actions flag",
28+
desc: "GitHub Actions debug env",
4329
envvar: "ACTIONS_STEP_DEBUG",
4430
},
31+
{
32+
desc: "Magefile debug env",
33+
envvar: "MAGEFILE_VERBOSE",
34+
},
4535
}
4636
for _, tt := range testCases {
4737
tt := tt
@@ -52,85 +42,52 @@ func Test_CheckPtermDebug(t *testing.T) {
5242
is.Equal(pterm.PrintDebugMessages, false) // unset should be false
5343
})
5444
t.Run(tt.envvar+" 0 should be false", func(t *testing.T) {
55-
var err error
5645
is := iz.New(t)
57-
err = os.Setenv(tt.envvar, "0")
58-
is.NoErr(err) // os.SetEnv() should not error
46+
t.Setenv(tt.envvar, "0")
5947
u.CheckPtermDebug()
6048
is.Equal(pterm.PrintDebugMessages, false) // 0 should be false
61-
err = os.Unsetenv(tt.envvar)
62-
is.NoErr(err) // os.Unsetenv should not error for test cleanup
6349
pterm.DisableDebugMessages()
6450
})
6551
t.Run(tt.envvar+" false should be false", func(t *testing.T) {
66-
var err error
6752
is := iz.New(t)
68-
err = os.Setenv(tt.envvar, "false")
69-
is.NoErr(err) // os.SetEnv() should not error
53+
t.Setenv(tt.envvar, "false")
7054
u.CheckPtermDebug()
7155
is.Equal(pterm.PrintDebugMessages, false) // "false" should be false
72-
err = os.Unsetenv(tt.envvar)
73-
is.NoErr(err) // os.Unsetenv should not error for test cleanup
7456
pterm.DisableDebugMessages()
7557
})
7658
t.Run(tt.envvar+" False should be false", func(t *testing.T) {
77-
var err error
7859
is := iz.New(t)
79-
os.Setenv(tt.envvar, orig)
80-
err = os.Setenv(tt.envvar, "False")
81-
is.NoErr(err) // os.SetEnv() should not error
60+
t.Setenv(tt.envvar, "False")
8261
u.CheckPtermDebug()
8362
is.Equal(pterm.PrintDebugMessages, false) // "False" should be false
84-
err = os.Unsetenv(tt.envvar)
85-
is.NoErr(err) // os.Unsetenv should not error for test cleanup
8663
pterm.DisableDebugMessages()
8764
})
8865
t.Run(tt.envvar+" blank should be false", func(t *testing.T) {
89-
var err error
9066
is := iz.New(t)
91-
os.Setenv(tt.envvar, orig)
92-
err = os.Setenv(tt.envvar, "")
93-
is.NoErr(err) // os.SetEnv() should not error
67+
t.Setenv(tt.envvar, "")
9468
u.CheckPtermDebug()
9569
is.Equal(pterm.PrintDebugMessages, false) // "" should be false
96-
err = os.Unsetenv(tt.envvar)
97-
is.NoErr(err) // os.Unsetenv should not error for test cleanup
9870
pterm.DisableDebugMessages()
9971
})
10072
t.Run(tt.envvar+" 1 should be true", func(t *testing.T) {
101-
var err error
10273
is := iz.New(t)
103-
os.Setenv(tt.envvar, orig)
104-
err = os.Setenv(tt.envvar, "1")
105-
is.NoErr(err) // os.SetEnv() should not error
74+
t.Setenv(tt.envvar, "1")
10675
u.CheckPtermDebug()
10776
is.Equal(pterm.PrintDebugMessages, true) // "1" should be true
108-
err = os.Unsetenv(tt.envvar)
109-
is.NoErr(err) // os.Unsetenv should not error for test cleanup
11077
pterm.DisableDebugMessages()
11178
})
11279
t.Run(tt.envvar+" true should be true", func(t *testing.T) {
113-
var err error
11480
is := iz.New(t)
115-
os.Setenv(tt.envvar, orig)
116-
err = os.Setenv(tt.envvar, "true")
117-
is.NoErr(err) // os.SetEnv() should not error
81+
t.Setenv(tt.envvar, "true")
11882
u.CheckPtermDebug()
11983
is.Equal(pterm.PrintDebugMessages, true) // "true" should be true
120-
err = os.Unsetenv(tt.envvar)
121-
is.NoErr(err) // os.Unsetenv should not error for test cleanup
12284
pterm.DisableDebugMessages()
12385
})
12486
t.Run(tt.envvar+" True should be true", func(t *testing.T) {
125-
var err error
12687
is := iz.New(t)
127-
os.Setenv(tt.envvar, orig)
128-
err = os.Setenv(tt.envvar, "True")
129-
is.NoErr(err) // os.SetEnv() should not error
88+
t.Setenv(tt.envvar, "True")
13089
u.CheckPtermDebug()
13190
is.Equal(pterm.PrintDebugMessages, true) // "True" should be true
132-
err = os.Unsetenv(tt.envvar)
133-
is.NoErr(err) // os.Unsetenv should not error for test cleanup
13491
pterm.DisableDebugMessages()
13592
})
13693
}

0 commit comments

Comments
 (0)