@cryptotaxi247 / kubo / commits / 9aab19ea3

object-patch: Support linking to non-dagpb objects

License: MIT Signed-off-by: Łukasz Magiera <magik6k@gmail.com>

Łukasz Magiera committed Dec 6, 2017 at 20:59 UTC 9aab19ea357b9741dbab0c94de2057f0b7b4cc82
3 files changed +11 -9
core/commands/object/patch.go
+1 -7
@@ -325,13 +325,7 @@ to a file containing 'bar', and returns the hash of the new object.
325 return
326 }
327
328 - chpb, ok := childnd.(*dag.ProtoNode)
329 - if !ok {
330 - res.SetError(dag.ErrNotProtobuf, cmdkit.ErrNormal)
331 - return
332 - }
333 -
334 - err = e.InsertNodeAtPath(req.Context(), npath, chpb, createfunc)
328 + err = e.InsertNodeAtPath(req.Context(), npath, childnd, createfunc)
329 if err != nil {
330 res.SetError(err, cmdkit.ErrNormal)
331 return
merkledag/utils/utils.go
+3 -2
@@ -212,8 +212,9 @@ func copyDag(nd *dag.ProtoNode, from, to dag.DAGService) error {
212 }
213
214 childpb, ok := child.(*dag.ProtoNode)
215 - if !ok {
216 - return dag.ErrNotProtobuf
215 + if !ok { // leaf node
216 + _, err := to.Add(nd)
217 + return err
218 }
219
220 err = copyDag(childpb, from, to)
test/sharness/t0051-object.sh
+7
@@ -216,6 +216,13 @@ test_object_cmd() {
216 ipfs object stat /ipfs/$N3/foo/baz > /dev/null
217 '
218
219 + test_expect_success "'ipfs object patch add-link' allow linking IPLD objects" '
220 + EMPTY_DIR=$(ipfs object new unixfs-dir) &&
221 + OBJ=$(echo "123" | ipfs dag put) &&
222 + N1=$(ipfs object patch $EMPTY_DIR add-link foo $OBJ) &&
223 + ipfs object stat $N1 > /dev/null
224 + '
225 +
226 test_expect_success "object patch creation looks right" '
227 echo "QmPc73aWK9dgFBXe86P4PvQizHo9e5Qt7n7DAMXWuigFuG" > hash_exp &&
228 echo $N3 > hash_actual &&