Skip to content

Commit f5e751c

Browse files
authored
Template: Reduce log level for Getwd() failures (#251)
1 parent ac99302 commit f5e751c

File tree

4 files changed

+59
-16
lines changed

4 files changed

+59
-16
lines changed

go.mod

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ require (
77
github.com/adrg/xdg v0.4.0
88
github.com/capnspacehook/taskmaster v0.0.0-20210519235353-1629df7c85e9
99
github.com/coreos/go-systemd/v22 v22.5.0
10-
github.com/creativeprojects/clog v0.13.0
10+
github.com/creativeprojects/clog v0.14.0
1111
github.com/creativeprojects/go-selfupdate v1.1.1
1212
github.com/distatus/battery v0.11.0
1313
github.com/fatih/color v1.15.0
@@ -24,7 +24,7 @@ require (
2424
github.com/stretchr/testify v1.8.4
2525
golang.org/x/crypto v0.11.0
2626
golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53
27-
golang.org/x/sys v0.10.0
27+
golang.org/x/sys v0.13.0
2828
golang.org/x/text v0.11.0
2929
gopkg.in/yaml.v3 v3.0.1
3030
howett.net/plist v1.0.0
@@ -47,7 +47,7 @@ require (
4747
github.com/hashicorp/hcl v1.0.0 // indirect
4848
github.com/lufia/plan9stats v0.0.0-20230110061619-bbe2e5e100de // indirect
4949
github.com/magiconair/properties v1.8.7 // indirect
50-
github.com/mattn/go-isatty v0.0.17 // indirect
50+
github.com/mattn/go-isatty v0.0.19 // indirect
5151
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
5252
github.com/pelletier/go-toml/v2 v2.0.8 // indirect
5353
github.com/pmezard/go-difflib v1.0.0 // indirect

go.sum

+7
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8
6363
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
6464
github.com/creativeprojects/clog v0.13.0 h1:QVWO65Za2/XfCQeNnDvO4td9i7fwV2xuv8V5jzFIONk=
6565
github.com/creativeprojects/clog v0.13.0/go.mod h1:4CBBbXkwjxTSIE/OyrC77aTrEEHj6daYGFEDrNjfOkU=
66+
github.com/creativeprojects/clog v0.14.0 h1:kthfMG6efS9kI4ACgYRIOPZ2efQkXvW7VhqZigCtpzU=
67+
github.com/creativeprojects/clog v0.14.0/go.mod h1:iHLlN4sZU+o5rRiFab6ZGHs2vApq09DyykMVJ2Sflro=
6668
github.com/creativeprojects/go-selfupdate v1.1.1 h1:eQT5xvjniA6UsNd5ScVu+vzP+fmpMafycNVbLCNsqLY=
6769
github.com/creativeprojects/go-selfupdate v1.1.1/go.mod h1:nm7AWUJfrfYt/SB97NAcMhR0KEpPqlrVHXkWFti+ezw=
6870
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -195,6 +197,8 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovk
195197
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
196198
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
197199
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
200+
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
201+
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
198202
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
199203
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
200204
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
@@ -427,9 +431,12 @@ golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBc
427431
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
428432
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
429433
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
434+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
430435
golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
431436
golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA=
432437
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
438+
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
439+
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
433440
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
434441
golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c=
435442
golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=

util/templates/data.go

+18-8
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"path/filepath"
66
"runtime"
77
"strings"
8+
"sync"
89
"time"
910

1011
"github.com/creativeprojects/clog"
@@ -43,10 +44,14 @@ func NewDefaultData(env map[string]string) (data DefaultData) {
4344
CurrentDir: startupDir,
4445
}
4546

46-
if cwd, err := os.Getwd(); err == nil {
47-
data.CurrentDir = filepath.ToSlash(cwd)
47+
if logStartupDirError != nil {
48+
logStartupDirError()
49+
}
50+
51+
if dir, errorFunc := internalGetCurrentDir(".CurrentDir"); errorFunc == nil {
52+
data.CurrentDir = dir
4853
} else {
49-
clog.Warning("failed retrieving pwd: %s", err.Error())
54+
errorFunc()
5055
}
5156

5257
if binary, err := os.Executable(); err == nil {
@@ -75,11 +80,16 @@ func NewDefaultData(env map[string]string) (data DefaultData) {
7580
return data
7681
}
7782

78-
var startupDir = (func() string {
83+
func internalGetCurrentDir(name string) (startupDir string, logError func()) {
7984
if dir, err := os.Getwd(); err == nil {
80-
return filepath.ToSlash(dir)
85+
startupDir = filepath.ToSlash(dir)
8186
} else {
82-
clog.Warning("failed retrieving pwd: %s", err.Error())
83-
return "."
87+
startupDir = "."
88+
logError = sync.OnceFunc(func() {
89+
clog.Debugf("using %q as fallback for %s ; %s", startupDir, name, err.Error())
90+
})
8491
}
85-
})()
92+
return
93+
}
94+
95+
var startupDir, logStartupDirError = internalGetCurrentDir(".StartupDir")

util/templates/data_test.go

+31-5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"testing"
99
"time"
1010

11+
"github.com/creativeprojects/clog"
1112
"github.com/creativeprojects/resticprofile/util"
1213
"github.com/stretchr/testify/assert"
1314
"github.com/stretchr/testify/require"
@@ -23,13 +24,38 @@ func TestBinaryDir(t *testing.T) {
2324
func TestCurrentDir(t *testing.T) {
2425
dir, err := os.Getwd()
2526
require.NoError(t, err)
26-
defer func(d string) { _ = os.Chdir(d) }(dir)
27+
resetDir := func() { _ = os.Chdir(dir) }
28+
defer resetDir()
2729

28-
require.NoError(t, os.Chdir(t.TempDir()))
29-
currentDir, _ := os.Getwd()
30+
t.Run("CurrentDir", func(t *testing.T) {
31+
defer resetDir()
32+
require.NoError(t, os.Chdir(t.TempDir()))
33+
currentDir, _ := os.Getwd()
3034

31-
assert.Equal(t, filepath.ToSlash(dir), NewDefaultData(nil).StartupDir)
32-
assert.Equal(t, filepath.ToSlash(currentDir), NewDefaultData(nil).CurrentDir)
35+
assert.Equal(t, filepath.ToSlash(dir), NewDefaultData(nil).StartupDir)
36+
assert.Equal(t, filepath.ToSlash(currentDir), NewDefaultData(nil).CurrentDir)
37+
})
38+
39+
t.Run("getStartupDir", func(t *testing.T) {
40+
defer resetDir()
41+
42+
defaultLogger := clog.GetDefaultLogger()
43+
defer clog.SetDefaultLogger(defaultLogger)
44+
45+
dir := filepath.Join(t.TempDir(), "start-dir")
46+
require.NoError(t, os.Mkdir(dir, 0700))
47+
require.NoError(t, os.Chdir(dir))
48+
dir, _ = os.Getwd()
49+
50+
mem := clog.NewMemoryHandler()
51+
clog.SetDefaultLogger(clog.NewLogger(mem))
52+
53+
currentDir, logError := internalGetCurrentDir(".TestDir")
54+
assert.Equal(t, filepath.ToSlash(dir), currentDir)
55+
assert.Nil(t, logError)
56+
57+
// TODO: Test error in getwd()
58+
})
3359
}
3460

3561
func TestTempDir(t *testing.T) {

0 commit comments

Comments
 (0)