mirror of
https://github.com/ipfs/kubo.git
synced 2025-05-21 00:47:22 +08:00
add pin lock in AddallPin function
License: MIT Signed-off-by: Kejie Zhang <601172892@qq.com>
This commit is contained in:

committed by
Steven Allen

parent
49bb9fba2a
commit
1379ee76f3
@ -86,6 +86,7 @@ type Adder struct {
|
||||
Name string
|
||||
NoCopy bool
|
||||
Chunker string
|
||||
Hash bool
|
||||
root ipld.Node
|
||||
mroot *mfs.Root
|
||||
unlocker bstore.Unlocker
|
||||
@ -398,8 +399,8 @@ func (adder *Adder) addNode(node ipld.Node, path string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// AddFile adds the given file while respecting the adder.
|
||||
func (adder *Adder) AddFile(file files.File) error {
|
||||
// AddAllAndPin adds the given request's files and pin them.
|
||||
func (adder *Adder) AddAllAndPin(file files.File) error {
|
||||
if adder.Pin {
|
||||
adder.unlocker = adder.blockstore.PinLock()
|
||||
}
|
||||
@ -409,7 +410,41 @@ func (adder *Adder) AddFile(file files.File) error {
|
||||
}
|
||||
}()
|
||||
|
||||
return adder.addFile(file)
|
||||
switch {
|
||||
case file.IsDirectory():
|
||||
// Iterate over each top-level file and add individually. Otherwise the
|
||||
// single files.File f is treated as a directory, affecting hidden file
|
||||
// semantics.
|
||||
for {
|
||||
file, err := file.NextFile()
|
||||
if err == io.EOF {
|
||||
// Finished the list of files.
|
||||
break
|
||||
} else if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := adder.addFile(file); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
break
|
||||
default:
|
||||
if err := adder.addFile(file); err != nil {
|
||||
return err
|
||||
}
|
||||
break
|
||||
}
|
||||
|
||||
// copy intermediary nodes from editor to our actual dagservice
|
||||
_, err := adder.Finalize()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if adder.Hash {
|
||||
return nil
|
||||
}
|
||||
return adder.PinRoot()
|
||||
}
|
||||
|
||||
func (adder *Adder) addFile(file files.File) error {
|
||||
|
Reference in New Issue
Block a user