提交 b8bc26a7 作者: Łukasz Magiera

WIP almost working ipfs add

License: MIT
Signed-off-by: 's avatarŁukasz Magiera <magik6k@gmail.com>
上级 2e8bb8c0
...@@ -185,6 +185,22 @@ You can now check what blocks have been created by: ...@@ -185,6 +185,22 @@ You can now check what blocks have been created by:
events := make(chan interface{}, adderOutChanSize) events := make(chan interface{}, adderOutChanSize)
var toadd files.Node = req.Files
addName := ""
if !wrap {
it := req.Files.Entries()
if !it.Next() {
err := it.Err()
if err == nil {
return fmt.Errorf("expected a file argument")
}
return err
}
addName = it.Name()
toadd = it.Node()
}
opts := []options.UnixfsAddOption{ opts := []options.UnixfsAddOption{
options.Unixfs.Hash(hashFunCode), options.Unixfs.Hash(hashFunCode),
...@@ -198,13 +214,13 @@ You can now check what blocks have been created by: ...@@ -198,13 +214,13 @@ You can now check what blocks have been created by:
options.Unixfs.FsCache(fscache), options.Unixfs.FsCache(fscache),
options.Unixfs.Nocopy(nocopy), options.Unixfs.Nocopy(nocopy),
options.Unixfs.Wrap(wrap),
options.Unixfs.Hidden(hidden), options.Unixfs.Hidden(hidden),
options.Unixfs.StdinName(pathName), options.Unixfs.StdinName(pathName),
options.Unixfs.Progress(progress), options.Unixfs.Progress(progress),
options.Unixfs.Silent(silent), options.Unixfs.Silent(silent),
options.Unixfs.Events(events), options.Unixfs.Events(events),
options.Unixfs.BaseName(addName),
} }
if cidVerSet { if cidVerSet {
...@@ -224,7 +240,7 @@ You can now check what blocks have been created by: ...@@ -224,7 +240,7 @@ You can now check what blocks have been created by:
var err error var err error
defer func() { errCh <- err }() defer func() { errCh <- err }()
defer close(events) defer close(events)
_, err = api.Unixfs().Add(req.Context, req.Files, opts...) _, err = api.Unixfs().Add(req.Context, toadd, opts...)
}() }()
for event := range events { for event := range events {
......
...@@ -94,6 +94,7 @@ func (api *UnixfsAPI) Add(ctx context.Context, files files.Node, opts ...options ...@@ -94,6 +94,7 @@ func (api *UnixfsAPI) Add(ctx context.Context, files files.Node, opts ...options
fileAdder.RawLeaves = settings.RawLeaves fileAdder.RawLeaves = settings.RawLeaves
fileAdder.NoCopy = settings.NoCopy fileAdder.NoCopy = settings.NoCopy
fileAdder.Name = settings.StdinName fileAdder.Name = settings.StdinName
fileAdder.BaseName = settings.BaseName
fileAdder.CidBuilder = prefix fileAdder.CidBuilder = prefix
fileAdder.TopHidden = settings.TopHidden fileAdder.TopHidden = settings.TopHidden
......
...@@ -75,6 +75,7 @@ type Adder struct { ...@@ -75,6 +75,7 @@ type Adder struct {
Silent bool Silent bool
Wrap bool Wrap bool
Name string Name string
BaseName string
NoCopy bool NoCopy bool
Chunker string Chunker string
root ipld.Node root ipld.Node
...@@ -230,6 +231,9 @@ func (adder *Adder) outputDirs(path string, fsn mfs.FSNode) error { ...@@ -230,6 +231,9 @@ func (adder *Adder) outputDirs(path string, fsn mfs.FSNode) error {
func (adder *Adder) addNode(node ipld.Node, path string) error { func (adder *Adder) addNode(node ipld.Node, path string) error {
// patch it into the root // patch it into the root
if adder.BaseName != "" {
path = gopath.Join(adder.BaseName, path)
}
if path == "" { if path == "" {
path = node.Cid().String() path = node.Cid().String()
} }
...@@ -351,7 +355,7 @@ func (adder *Adder) AddAllAndPin(file files.Node) (ipld.Node, error) { ...@@ -351,7 +355,7 @@ func (adder *Adder) AddAllAndPin(file files.Node) (ipld.Node, error) {
return nil, err return nil, err
} }
if err := outputDagnode(adder.Out, "", nd); err != nil { if err := outputDagnode(adder.Out, adder.BaseName, nd); err != nil {
return nil, err return nil, err
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论