@@ -55,38 +55,38 @@ func Open(treeRoot string, clean bool, formatters map[string]*format.Formatter)
55
55
name := hex .EncodeToString (digest )
56
56
path , err := xdg .CacheFile (fmt .Sprintf ("treefmt/eval-cache/%v.db" , name ))
57
57
if err != nil {
58
- return fmt .Errorf ("%w: could not resolve local path for the cache" , err )
58
+ return fmt .Errorf ("could not resolve local path for the cache: %w " , err )
59
59
}
60
60
61
61
db , err = bolt .Open (path , 0o600 , nil )
62
62
if err != nil {
63
- return fmt .Errorf ("%w: failed to open cache" , err )
63
+ return fmt .Errorf ("failed to open cache at %v: %w" , path , err )
64
64
}
65
65
66
66
err = db .Update (func (tx * bolt.Tx ) error {
67
67
// create bucket for tracking paths
68
68
pathsBucket , err := tx .CreateBucketIfNotExists ([]byte (pathsBucket ))
69
69
if err != nil {
70
- return fmt .Errorf ("%w: failed to create paths bucket" , err )
70
+ return fmt .Errorf ("failed to create paths bucket: %w " , err )
71
71
}
72
72
73
73
// create bucket for tracking formatters
74
74
formattersBucket , err := tx .CreateBucketIfNotExists ([]byte (formattersBucket ))
75
75
if err != nil {
76
- return fmt .Errorf ("%w: failed to create formatters bucket" , err )
76
+ return fmt .Errorf ("failed to create formatters bucket: %w " , err )
77
77
}
78
78
79
79
// check for any newly configured or modified formatters
80
80
for name , formatter := range formatters {
81
81
82
82
stat , err := os .Lstat (formatter .Executable ())
83
83
if err != nil {
84
- return fmt .Errorf ("%w: failed to state formatter executable" , err )
84
+ return fmt .Errorf ("failed to stat formatter executable %v: %w" , formatter . Executable () , err )
85
85
}
86
86
87
87
entry , err := getEntry (formattersBucket , name )
88
88
if err != nil {
89
- return fmt .Errorf ("%w: failed to retrieve entry for formatter" , err )
89
+ return fmt .Errorf ("failed to retrieve cache entry for formatter %v: %w" , name , err )
90
90
}
91
91
92
92
clean = clean || entry == nil || ! (entry .Size == stat .Size () && entry .Modified == stat .ModTime ())
@@ -105,7 +105,7 @@ func Open(treeRoot string, clean bool, formatters map[string]*format.Formatter)
105
105
}
106
106
107
107
if err = putEntry (formattersBucket , name , entry ); err != nil {
108
- return fmt .Errorf ("%w: failed to write formatter entry" , err )
108
+ return fmt .Errorf ("failed to write cache entry for formatter %v: %w" , name , err )
109
109
}
110
110
}
111
111
@@ -115,22 +115,22 @@ func Open(treeRoot string, clean bool, formatters map[string]*format.Formatter)
115
115
if ! ok {
116
116
// remove the formatter entry from the cache
117
117
if err = formattersBucket .Delete (key ); err != nil {
118
- return fmt .Errorf ("%w: failed to remove formatter entry" , err )
118
+ return fmt .Errorf ("failed to remove cache entry for formatter %v: %w" , key , err )
119
119
}
120
120
// indicate a clean is required
121
121
clean = true
122
122
}
123
123
return nil
124
124
}); err != nil {
125
- return fmt .Errorf ("%w: failed to check for removed formatters" , err )
125
+ return fmt .Errorf ("failed to check cache for removed formatters: %w " , err )
126
126
}
127
127
128
128
if clean {
129
129
// remove all path entries
130
130
c := pathsBucket .Cursor ()
131
131
for k , v := c .First (); ! (k == nil && v == nil ); k , v = c .Next () {
132
132
if err = c .Delete (); err != nil {
133
- return fmt .Errorf ("%w: failed to remove path entry" , err )
133
+ return fmt .Errorf ("failed to remove path entry: %w " , err )
134
134
}
135
135
}
136
136
}
@@ -155,7 +155,7 @@ func getEntry(bucket *bolt.Bucket, path string) (*Entry, error) {
155
155
if b != nil {
156
156
var cached Entry
157
157
if err := msgpack .Unmarshal (b , & cached ); err != nil {
158
- return nil , fmt .Errorf ("%w: failed to unmarshal cache info for path '%v'" , err , path )
158
+ return nil , fmt .Errorf ("failed to unmarshal cache info for path '%v': %w " , path , err )
159
159
}
160
160
return & cached , nil
161
161
} else {
@@ -167,11 +167,11 @@ func getEntry(bucket *bolt.Bucket, path string) (*Entry, error) {
167
167
func putEntry (bucket * bolt.Bucket , path string , entry * Entry ) error {
168
168
bytes , err := msgpack .Marshal (entry )
169
169
if err != nil {
170
- return fmt .Errorf ("%w: failed to marshal cache entry" , err )
170
+ return fmt .Errorf ("failed to marshal cache path %v: %w" , path , err )
171
171
}
172
172
173
173
if err = bucket .Put ([]byte (path ), bytes ); err != nil {
174
- return fmt .Errorf ("%w: failed to put cache entry" , err )
174
+ return fmt .Errorf ("failed to put cache path %v: %w" , path , err )
175
175
}
176
176
return nil
177
177
}
@@ -202,7 +202,7 @@ func ChangeSet(ctx context.Context, walker walk.Walker, filesCh chan<- *walk.Fil
202
202
return ctx .Err ()
203
203
default :
204
204
if err != nil {
205
- return fmt .Errorf ("%w: failed to walk path" , err )
205
+ return fmt .Errorf ("failed to walk path: %w " , err )
206
206
} else if file .Info .IsDir () {
207
207
// ignore directories
208
208
return nil
@@ -219,7 +219,7 @@ func ChangeSet(ctx context.Context, walker walk.Walker, filesCh chan<- *walk.Fil
219
219
if tx == nil {
220
220
tx , err = db .Begin (false )
221
221
if err != nil {
222
- return fmt .Errorf ("%w: failed to open a new read tx" , err )
222
+ return fmt .Errorf ("failed to open a new cache read tx: %w " , err )
223
223
}
224
224
bucket = tx .Bucket ([]byte (pathsBucket ))
225
225
}
0 commit comments