@@ -433,7 +433,7 @@ resulting object hash.
433
433
Arguments : []cmds.Argument {
434
434
cmds .StringArg ("root" , true , false , "the hash of the node to modify" ),
435
435
cmds .StringArg ("command" , true , false , "the operation to perform" ),
436
- cmds .StringArg ("args" , true , true , "extra arguments" ),
436
+ cmds .StringArg ("args" , true , true , "extra arguments" ). EnableStdin () ,
437
437
},
438
438
Type : u .Key ("" ),
439
439
Run : func (req cmds.Request , res cmds.Response ) {
@@ -461,43 +461,33 @@ resulting object hash.
461
461
462
462
switch action {
463
463
case "add-link" :
464
- if len (req .Arguments ()) < 4 {
465
- res .SetError (fmt .Errorf ("not enough arguments for add-link" ), cmds .ErrClient )
466
- return
467
- }
468
-
469
- name := req .Arguments ()[2 ]
470
- childk := u .B58KeyDecode (req .Arguments ()[3 ])
471
-
472
- newkey , err := addLink (req .Context ().Context , nd .DAG , rnode , name , childk )
464
+ k , err := addLinkCaller (req , rnode )
473
465
if err != nil {
474
466
res .SetError (err , cmds .ErrNormal )
475
467
return
476
468
}
477
-
478
- res .SetOutput (newkey )
479
-
469
+ res .SetOutput (k )
480
470
case "rm-link" :
481
- if len (req .Arguments ()) < 3 {
482
- res .SetError (fmt .Errorf ("not enough arguments for rm-link" ), cmds .ErrClient )
471
+ k , err := rmLinkCaller (req , rnode )
472
+ if err != nil {
473
+ res .SetError (err , cmds .ErrNormal )
483
474
return
484
475
}
485
-
486
- name := req .Arguments ()[2 ]
487
-
488
- err := rnode .RemoveNodeLink (name )
476
+ res .SetOutput (k )
477
+ case "set-data" :
478
+ k , err := setDataCaller (req , rnode )
489
479
if err != nil {
490
480
res .SetError (err , cmds .ErrNormal )
491
481
return
492
482
}
493
-
494
- newkey , err := nd .DAG .Add (rnode )
483
+ res .SetOutput (k )
484
+ case "append-data" :
485
+ k , err := appendDataCaller (req , rnode )
495
486
if err != nil {
496
487
res .SetError (err , cmds .ErrNormal )
497
488
return
498
489
}
499
-
500
- res .SetOutput (newkey )
490
+ res .SetOutput (k )
501
491
default :
502
492
res .SetError (fmt .Errorf ("unrecognized subcommand" ), cmds .ErrNormal )
503
493
return
@@ -515,6 +505,92 @@ resulting object hash.
515
505
},
516
506
}
517
507
508
+ func appendDataCaller (req cmds.Request , root * dag.Node ) (u.Key , error ) {
509
+ if len (req .Arguments ()) < 3 {
510
+ return "" , fmt .Errorf ("not enough arguments for set-data" )
511
+ }
512
+
513
+ nd , err := req .Context ().GetNode ()
514
+ if err != nil {
515
+ return "" , err
516
+ }
517
+
518
+ root .Data = append (root .Data , []byte (req .Arguments ()[2 ])... )
519
+
520
+ newkey , err := nd .DAG .Add (root )
521
+ if err != nil {
522
+ return "" , err
523
+ }
524
+
525
+ return newkey , nil
526
+ }
527
+
528
+ func setDataCaller (req cmds.Request , root * dag.Node ) (u.Key , error ) {
529
+ if len (req .Arguments ()) < 3 {
530
+ return "" , fmt .Errorf ("not enough arguments for set-data" )
531
+ }
532
+
533
+ nd , err := req .Context ().GetNode ()
534
+ if err != nil {
535
+ return "" , err
536
+ }
537
+
538
+ root .Data = []byte (req .Arguments ()[2 ])
539
+
540
+ newkey , err := nd .DAG .Add (root )
541
+ if err != nil {
542
+ return "" , err
543
+ }
544
+
545
+ return newkey , nil
546
+ }
547
+
548
+ func rmLinkCaller (req cmds.Request , root * dag.Node ) (u.Key , error ) {
549
+ if len (req .Arguments ()) < 3 {
550
+ return "" , fmt .Errorf ("not enough arguments for rm-link" )
551
+ }
552
+
553
+ nd , err := req .Context ().GetNode ()
554
+ if err != nil {
555
+ return "" , err
556
+ }
557
+
558
+ name := req .Arguments ()[2 ]
559
+
560
+ err = root .RemoveNodeLink (name )
561
+ if err != nil {
562
+ return "" , err
563
+ }
564
+
565
+ newkey , err := nd .DAG .Add (root )
566
+ if err != nil {
567
+ return "" , err
568
+ }
569
+
570
+ return newkey , nil
571
+ }
572
+
573
+ func addLinkCaller (req cmds.Request , root * dag.Node ) (u.Key , error ) {
574
+ if len (req .Arguments ()) < 4 {
575
+ return "" , fmt .Errorf ("not enough arguments for add-link" )
576
+ }
577
+
578
+ nd , err := req .Context ().GetNode ()
579
+ if err != nil {
580
+ return "" , err
581
+ }
582
+
583
+ name := req .Arguments ()[2 ]
584
+ childk := u .B58KeyDecode (req .Arguments ()[3 ])
585
+
586
+ newkey , err := addLink (req .Context ().Context , nd .DAG , root , name , childk )
587
+ if err != nil {
588
+ return "" , err
589
+ }
590
+
591
+ return newkey , nil
592
+ }
593
+
518
594
func addLink (ctx context.Context , ds dag.DAGService , root * dag.Node , childname string , childk u.Key ) (u.Key , error ) {
519
595
ctx , cancel := context .WithTimeout (ctx , time .Second * 30 )
520
596
childnd , err := ds .Get (ctx , childk )
0 commit comments