提交 6b0ff2bd 作者: Stephen Whitmore

Output dirs on ipfs add -rn

License: MIT
Signed-off-by: 's avatarStephen Whitmore <noffle@ipfs.io>
上级 06e71033
...@@ -163,16 +163,16 @@ MerkleDAG. ...@@ -163,16 +163,16 @@ MerkleDAG.
} }
} }
if hash {
return nil
}
// copy intermediary nodes from editor to our actual dagservice // copy intermediary nodes from editor to our actual dagservice
_, err := fileAdder.Finalize() _, err := fileAdder.Finalize(hash)
if err != nil { if err != nil {
return err return err
} }
if hash {
return nil
}
return fileAdder.PinRoot() return fileAdder.PinRoot()
} }
......
...@@ -173,21 +173,23 @@ func (adder *Adder) PinRoot() error { ...@@ -173,21 +173,23 @@ func (adder *Adder) PinRoot() error {
return adder.node.Pinning.Flush() return adder.node.Pinning.Flush()
} }
func (adder *Adder) Finalize() (*dag.Node, error) { func (adder *Adder) Finalize(write bool) (*dag.Node, error) {
root := adder.mr.GetValue()
// cant just call adder.RootNode() here as we need the name for printing // cant just call adder.RootNode() here as we need the name for printing
root, err := adder.mr.GetValue().GetNode() rootNode, err := root.GetNode()
if err != nil { if err != nil {
return nil, err return nil, err
} }
var name string var name string
if !adder.Wrap { if !adder.Wrap {
name = root.Links[0].Name name = rootNode.Links[0].Name
child, err := root.Links[0].GetNode(adder.ctx, adder.node.DAG)
root, err = adder.mr.GetValue().(*mfs.Directory).Child(name)
if err != nil { if err != nil {
return nil, err return nil, err
} }
root = child
} }
err = adder.outputDirs(name, root) err = adder.outputDirs(name, root)
...@@ -195,26 +197,39 @@ func (adder *Adder) Finalize() (*dag.Node, error) { ...@@ -195,26 +197,39 @@ func (adder *Adder) Finalize() (*dag.Node, error) {
return nil, err return nil, err
} }
err = adder.mr.Close() if write {
err = adder.mr.Close()
if err != nil {
return nil, err
}
}
rootNode, err = root.GetNode()
if err != nil { if err != nil {
return nil, err return nil, err
} }
return rootNode, nil
return root, nil
} }
func (adder *Adder) outputDirs(path string, nd *dag.Node) error { func (adder *Adder) outputDirs(path string, fs mfs.FSNode) error {
if !bytes.Equal(nd.Data, folderData) { nd, err := fs.GetNode()
if err != nil {
return err
}
if !bytes.Equal(nd.Data, folderData) || fs.Type() != mfs.TDir {
return nil return nil
} }
for _, l := range nd.Links { dir := fs.(*mfs.Directory)
child, err := l.GetNode(adder.ctx, adder.node.DAG)
for _, name := range dir.ListNames() {
child, err := dir.Child(name)
if err != nil { if err != nil {
return err return err
} }
err = adder.outputDirs(gopath.Join(path, l.Name), child) err = adder.outputDirs(gopath.Join(path, name), child)
if err != nil { if err != nil {
return err return err
} }
...@@ -270,7 +285,7 @@ func AddR(n *core.IpfsNode, root string) (key string, err error) { ...@@ -270,7 +285,7 @@ func AddR(n *core.IpfsNode, root string) (key string, err error) {
return "", err return "", err
} }
nd, err := fileAdder.Finalize() nd, err := fileAdder.Finalize(true)
if err != nil { if err != nil {
return "", err return "", err
} }
...@@ -302,7 +317,7 @@ func AddWrapped(n *core.IpfsNode, r io.Reader, filename string) (string, *dag.No ...@@ -302,7 +317,7 @@ func AddWrapped(n *core.IpfsNode, r io.Reader, filename string) (string, *dag.No
return "", nil, err return "", nil, err
} }
dagnode, err := fileAdder.Finalize() dagnode, err := fileAdder.Finalize(true)
if err != nil { if err != nil {
return "", nil, err return "", nil, err
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论