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