@@ -78,6 +78,7 @@ func dump(acmeFile string, baseConfig *dumper.BaseConfig) error {
7878
7979func dumpV1 (acmeFile string , baseConfig * dumper.BaseConfig ) error {
8080 data := & traefikv1.StoredData {}
81+
8182 err := readJSONFile (acmeFile , data )
8283 if err != nil {
8384 return err
@@ -88,6 +89,7 @@ func dumpV1(acmeFile string, baseConfig *dumper.BaseConfig) error {
8889
8990func dumpV2 (acmeFile string , baseConfig * dumper.BaseConfig ) error {
9091 data := map [string ]* traefikv2.StoredData {}
92+
9193 err := readJSONFile (acmeFile , & data )
9294 if err != nil {
9395 return err
@@ -98,6 +100,7 @@ func dumpV2(acmeFile string, baseConfig *dumper.BaseConfig) error {
98100
99101func dumpV3 (acmeFile string , baseConfig * dumper.BaseConfig ) error {
100102 data := map [string ]* traefikv3.StoredData {}
103+
101104 err := readJSONFile (acmeFile , & data )
102105 if err != nil {
103106 return err
@@ -106,18 +109,20 @@ func dumpV3(acmeFile string, baseConfig *dumper.BaseConfig) error {
106109 return dumperv3 .Dump (data , baseConfig )
107110}
108111
109- func readJSONFile (acmeFile string , data interface {} ) error {
112+ func readJSONFile (acmeFile string , data any ) error {
110113 source , err := os .Open (filepath .Clean (acmeFile ))
111114 if err != nil {
112115 return fmt .Errorf ("failed to open file %q: %w" , acmeFile , err )
113116 }
117+
114118 defer func () { _ = source .Close () }()
115119
116120 err = json .NewDecoder (source ).Decode (data )
117121 if errors .Is (err , io .EOF ) {
118122 log .Printf ("warn: file %q may not be ready: %v" , acmeFile , err )
119123 return nil
120124 }
125+
121126 if err != nil {
122127 return fmt .Errorf ("failed to unmarshal file %q: %w" , acmeFile , err )
123128 }
@@ -134,6 +139,7 @@ func watch(ctx context.Context, acmeFile string, baseConfig *dumper.BaseConfig)
134139 defer func () { _ = watcher .Close () }()
135140
136141 done := make (chan bool )
142+
137143 go func () {
138144 var previousHash []byte
139145
@@ -151,7 +157,9 @@ func watch(ctx context.Context, acmeFile string, baseConfig *dumper.BaseConfig)
151157 hash , errW := manageEvent (ctx , watcher , event , acmeFile , previousHash , baseConfig )
152158 if errW != nil {
153159 log .Println ("error:" , errW )
160+
154161 done <- true
162+
155163 return
156164 }
157165
@@ -163,7 +171,9 @@ func watch(ctx context.Context, acmeFile string, baseConfig *dumper.BaseConfig)
163171 }
164172
165173 log .Println ("error:" , errW )
174+
166175 done <- true
176+
167177 return
168178 }
169179 }
@@ -226,9 +236,11 @@ func calculateHash(acmeFile string) ([]byte, error) {
226236 if err != nil {
227237 return nil , err
228238 }
239+
229240 defer func () { _ = file .Close () }()
230241
231242 h := sha256 .New ()
243+
232244 _ , err = io .Copy (h , file )
233245 if err != nil {
234246 return nil , err
0 commit comments