File tree 3 files changed +41
-37
lines changed 3 files changed +41
-37
lines changed Original file line number Diff line number Diff line change @@ -270,7 +270,7 @@ You can now check what blocks have been created by:
270
270
fileAdder .Hidden = hidden
271
271
fileAdder .Trickle = trickle
272
272
fileAdder .Wrap = wrap
273
- fileAdder .Pin = dopin
273
+ fileAdder .Pin = dopin && ! hash
274
274
fileAdder .Silent = silent
275
275
fileAdder .RawLeaves = rawblks
276
276
fileAdder .NoCopy = nocopy
@@ -297,42 +297,12 @@ You can now check what blocks have been created by:
297
297
fileAdder .SetMfsRoot (mr )
298
298
}
299
299
300
- addAllAndPin := func (f files.File ) error {
301
- // Iterate over each top-level file and add individually. Otherwise the
302
- // single files.File f is treated as a directory, affecting hidden file
303
- // semantics.
304
- for {
305
- file , err := f .NextFile ()
306
- if err == io .EOF {
307
- // Finished the list of files.
308
- break
309
- } else if err != nil {
310
- return err
311
- }
312
- if err := fileAdder .AddFile (file ); err != nil {
313
- return err
314
- }
315
- }
316
-
317
- // copy intermediary nodes from editor to our actual dagservice
318
- _ , err := fileAdder .Finalize ()
319
- if err != nil {
320
- return err
321
- }
322
-
323
- if hash {
324
- return nil
325
- }
326
-
327
- return fileAdder .PinRoot ()
328
- }
329
-
330
300
errCh := make (chan error )
331
301
go func () {
332
302
var err error
333
303
defer func () { errCh <- err }()
334
304
defer close (outChan )
335
- err = addAllAndPin (req .Files )
305
+ err = fileAdder . AddAllAndPin (req .Files )
336
306
}()
337
307
338
308
err = res .Emit (outChan )
Original file line number Diff line number Diff line change @@ -398,8 +398,8 @@ func (adder *Adder) addNode(node ipld.Node, path string) error {
398
398
return nil
399
399
}
400
400
401
- // AddFile adds the given file while respecting the adder .
402
- func (adder * Adder ) AddFile (file files.File ) error {
401
+ // AddAllAndPin adds the given request's files and pin them .
402
+ func (adder * Adder ) AddAllAndPin (file files.File ) error {
403
403
if adder .Pin {
404
404
adder .unlocker = adder .blockstore .PinLock ()
405
405
}
@@ -409,7 +409,41 @@ func (adder *Adder) AddFile(file files.File) error {
409
409
}
410
410
}()
411
411
412
- return adder .addFile (file )
412
+ switch {
413
+ case file .IsDirectory ():
414
+ // Iterate over each top-level file and add individually. Otherwise the
415
+ // single files.File f is treated as a directory, affecting hidden file
416
+ // semantics.
417
+ for {
418
+ file , err := file .NextFile ()
419
+ if err == io .EOF {
420
+ // Finished the list of files.
421
+ break
422
+ } else if err != nil {
423
+ return err
424
+ }
425
+ if err := adder .addFile (file ); err != nil {
426
+ return err
427
+ }
428
+ }
429
+ break
430
+ default :
431
+ if err := adder .addFile (file ); err != nil {
432
+ return err
433
+ }
434
+ break
435
+ }
436
+
437
+ // copy intermediary nodes from editor to our actual dagservice
438
+ _ , err := adder .Finalize ()
439
+ if err != nil {
440
+ return err
441
+ }
442
+
443
+ if ! adder .Pin {
444
+ return nil
445
+ }
446
+ return adder .PinRoot ()
413
447
}
414
448
415
449
func (adder * Adder ) addFile (file files.File ) error {
Original file line number Diff line number Diff line change @@ -85,7 +85,7 @@ func TestAddGCLive(t *testing.T) {
85
85
go func () {
86
86
defer close (addDone )
87
87
defer close (out )
88
- err := adder .AddFile (slf )
88
+ err := adder .AddAllAndPin (slf )
89
89
90
90
if err != nil {
91
91
t .Fatal (err )
@@ -191,7 +191,7 @@ func testAddWPosInfo(t *testing.T, rawLeaves bool) {
191
191
192
192
go func () {
193
193
defer close (adder .Out )
194
- err = adder .AddFile (file )
194
+ err = adder .AddAllAndPin (file )
195
195
if err != nil {
196
196
t .Fatal (err )
197
197
}
You can’t perform that action at this time.
0 commit comments