WIP almost working ipfs add
License: MIT Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
Łukasz Magiera committed
Mar 4, 2019 at 15:21 UTC
b8bc26a700037366b22b857fe05c54f0068312bd
3 files changed
+24
-3
core/commands/add.go
+18
-2
@@ -185,6 +185,22 @@ You can now check what blocks have been created by:
185
186
events := make(chan interface{}, adderOutChanSize)
187
188
+ var toadd files.Node = req.Files
189
+ addName := ""
190
+ if !wrap {
191
+ it := req.Files.Entries()
192
+ if !it.Next() {
193
+ err := it.Err()
194
+ if err == nil {
195
+ return fmt.Errorf("expected a file argument")
196
+ }
197
+ return err
198
+ }
199
+
200
+ addName = it.Name()
201
+ toadd = it.Node()
202
+ }
203
+
204
opts := []options.UnixfsAddOption{
205
options.Unixfs.Hash(hashFunCode),
206
@@ -198,13 +214,13 @@ You can now check what blocks have been created by:
214
options.Unixfs.FsCache(fscache),
215
options.Unixfs.Nocopy(nocopy),
216
201
- options.Unixfs.Wrap(wrap),
217
options.Unixfs.Hidden(hidden),
218
options.Unixfs.StdinName(pathName),
219
220
options.Unixfs.Progress(progress),
221
options.Unixfs.Silent(silent),
222
options.Unixfs.Events(events),
223
+ options.Unixfs.BaseName(addName),
224
}
225
226
if cidVerSet {
@@ -224,7 +240,7 @@ You can now check what blocks have been created by:
240
var err error
241
defer func() { errCh <- err }()
242
defer close(events)
227
- _, err = api.Unixfs().Add(req.Context, req.Files, opts...)
243
+ _, err = api.Unixfs().Add(req.Context, toadd, opts...)
244
}()
245
246
for event := range events {
core/coreapi/unixfs.go
+1
@@ -94,6 +94,7 @@ func (api *UnixfsAPI) Add(ctx context.Context, files files.Node, opts ...options
94
fileAdder.RawLeaves = settings.RawLeaves
95
fileAdder.NoCopy = settings.NoCopy
96
fileAdder.Name = settings.StdinName
97
+ fileAdder.BaseName = settings.BaseName
98
fileAdder.CidBuilder = prefix
99
fileAdder.TopHidden = settings.TopHidden
100
core/coreunix/add.go
+5
-1
@@ -75,6 +75,7 @@ type Adder struct {
75
Silent bool
76
Wrap bool
77
Name string
78
+ BaseName string
79
NoCopy bool
80
Chunker string
81
root ipld.Node
@@ -230,6 +231,9 @@ func (adder *Adder) outputDirs(path string, fsn mfs.FSNode) error {
231
232
func (adder *Adder) addNode(node ipld.Node, path string) error {
233
// patch it into the root
234
+ if adder.BaseName != "" {
235
+ path = gopath.Join(adder.BaseName, path)
236
+ }
237
if path == "" {
238
path = node.Cid().String()
239
}
@@ -351,7 +355,7 @@ func (adder *Adder) AddAllAndPin(file files.Node) (ipld.Node, error) {
355
return nil, err
356
}
357
354
- if err := outputDagnode(adder.Out, "", nd); err != nil {
358
+ if err := outputDagnode(adder.Out, adder.BaseName, nd); err != nil {
359
return nil, err
360
}
361
}