@cryptotaxi247 / kubo / commits / 3601a93d1

fix pin command output

Jeromy committed Jan 16, 2015 at 08:13 UTC 3601a93d173ca3952a6f873b7190fee354f3d25f
1 file changed +58 -5
core/commands/pin.go
+58 -5
@@ -1,7 +1,9 @@
1 package commands
2
3 import (
4 + "bytes"
5 "fmt"
6 + "io"
7
8 cmds "github.com/jbenet/go-ipfs/commands"
9 "github.com/jbenet/go-ipfs/core"
@@ -21,6 +23,10 @@ var PinCmd = &cmds.Command{
23 },
24 }
25
26 +type PinOutput struct {
27 + Pinned []u.Key
28 +}
29 +
30 var addPinCmd = &cmds.Command{
31 Helptext: cmds.HelpText{
32 Tagline: "Pins objects to local storage",
@@ -36,6 +42,7 @@ on disk.
42 Options: []cmds.Option{
43 cmds.BoolOption("recursive", "r", "Recursively pin the object linked to by the specified object(s)"),
44 },
45 + Type: PinOutput{},
46 Run: func(req cmds.Request) (interface{}, error) {
47 n, err := req.Context().GetNode()
48 if err != nil {
@@ -51,13 +58,36 @@ on disk.
58 recursive = false
59 }
60
54 - _, err = pin(n, req.Arguments(), recursive)
61 + nodes, err := pin(n, req.Arguments(), recursive)
62 if err != nil {
63 return nil, err
64 }
65
66 + var added []u.Key
67 + for _, node := range nodes {
68 + k, err := node.Key()
69 + if err != nil {
70 + return nil, err
71 + }
72 + added = append(added, k)
73 + }
74 +
75 // TODO: create some output to show what got pinned
60 - return nil, nil
76 + return &PinOutput{added}, nil
77 + },
78 + Marshalers: cmds.MarshalerMap{
79 + cmds.Text: func(res cmds.Response) (io.Reader, error) {
80 + added, ok := res.Output().(*PinOutput)
81 + if !ok {
82 + return nil, u.ErrCast()
83 + }
84 +
85 + buf := new(bytes.Buffer)
86 + for _, k := range added.Pinned {
87 + fmt.Fprintf(buf, "Pinned %s\n", k)
88 + }
89 + return buf, nil
90 + },
91 },
92 }
93
@@ -76,6 +106,7 @@ collected if needed.
106 Options: []cmds.Option{
107 cmds.BoolOption("recursive", "r", "Recursively unpin the object linked to by the specified object(s)"),
108 },
109 + Type: PinOutput{},
110 Run: func(req cmds.Request) (interface{}, error) {
111 n, err := req.Context().GetNode()
112 if err != nil {
@@ -91,13 +122,35 @@ collected if needed.
122 recursive = false // default
123 }
124
94 - _, err = unpin(n, req.Arguments(), recursive)
125 + nodes, err := unpin(n, req.Arguments(), recursive)
126 if err != nil {
127 return nil, err
128 }
129
99 - // TODO: create some output to show what got unpinned
100 - return nil, nil
130 + var removed []u.Key
131 + for _, node := range nodes {
132 + k, err := node.Key()
133 + if err != nil {
134 + return nil, err
135 + }
136 + removed = append(removed, k)
137 + }
138 +
139 + return &PinOutput{removed}, nil
140 + },
141 + Marshalers: cmds.MarshalerMap{
142 + cmds.Text: func(res cmds.Response) (io.Reader, error) {
143 + added, ok := res.Output().(*PinOutput)
144 + if !ok {
145 + return nil, u.ErrCast()
146 + }
147 +
148 + buf := new(bytes.Buffer)
149 + for _, k := range added.Pinned {
150 + fmt.Fprintf(buf, "Unpinned %s\n", k)
151 + }
152 + return buf, nil
153 + },
154 },
155 }
156