@cryptotaxi247 / kubo / commits / 759437e05

ls: introduce specific output types (removes IsDir from object plumbing commands)

Henry committed Mar 10, 2015 at 13:56 UTC 759437e0549da0d4e07d28e8cad9413e3746a896
2 files changed +34 -25
core/commands/ls.go
+20 -24
@@ -13,19 +13,19 @@ import (
13 unixfspb "github.com/jbenet/go-ipfs/unixfs/pb"
14 )
15
16 -type Link struct {
16 +type LsLink struct {
17 Name, Hash string
18 Size uint64
19 - IsDir bool
19 + Type unixfspb.Data_DataType
20 }
21
22 -type Object struct {
22 +type LsObject struct {
23 Hash string
24 - Links []Link
24 + Links []LsLink
25 }
26
27 type LsOutput struct {
28 - Objects []Object
28 + Objects []LsObject
29 }
30
31 var LsCmd = &cmds.Command{
@@ -61,11 +61,11 @@ it contains, with the following format:
61 dagnodes = append(dagnodes, dagnode)
62 }
63
64 - output := make([]Object, len(req.Arguments()))
64 + output := make([]LsObject, len(req.Arguments()))
65 for i, dagnode := range dagnodes {
66 - output[i] = Object{
66 + output[i] = LsObject{
67 Hash: paths[i],
68 - Links: make([]Link, len(dagnode.Links)),
68 + Links: make([]LsLink, len(dagnode.Links)),
69 }
70 for j, link := range dagnode.Links {
71 link.Node, err = link.GetNode(node.DAG)
@@ -78,11 +78,11 @@ it contains, with the following format:
78 res.SetError(err, cmds.ErrNormal)
79 return
80 }
81 - output[i].Links[j] = Link{
82 - Name: link.Name,
83 - Hash: link.Hash.B58String(),
84 - Size: link.Size,
85 - IsDir: d.GetType() == unixfspb.Data_Directory,
81 + output[i].Links[j] = LsLink{
82 + Name: link.Name,
83 + Hash: link.Hash.B58String(),
84 + Size: link.Size,
85 + Type: d.GetType(),
86 }
87 }
88 }
@@ -98,7 +98,13 @@ it contains, with the following format:
98 if len(output) > 1 {
99 fmt.Fprintf(w, "%s:\n", object.Hash)
100 }
101 - marshalLinks(w, object.Links)
101 + fmt.Fprintln(w, "Hash\tSize\tName\t")
102 + for _, link := range object.Links {
103 + if link.Type == unixfspb.Data_Directory {
104 + link.Name += "/"
105 + }
106 + fmt.Fprintf(w, "%s\t%v\t%s\t\n", link.Hash, link.Size, link.Name)
107 + }
108 if len(output) > 1 {
109 fmt.Fprintln(w)
110 }
@@ -110,13 +116,3 @@ it contains, with the following format:
116 },
117 Type: LsOutput{},
118 }
113 -
114 -func marshalLinks(w io.Writer, links []Link) {
115 - fmt.Fprintln(w, "Hash\tSize\tName\t")
116 - for _, link := range links {
117 - if link.IsDir {
118 - link.Name += "/"
119 - }
120 - fmt.Fprintf(w, "%s\t%v\t%s\t\n", link.Hash, link.Size, link.Name)
121 - }
122 -}
core/commands/object.go
+14 -1
@@ -28,6 +28,16 @@ type Node struct {
28 Data string
29 }
30
31 +type Link struct {
32 + Name, Hash string
33 + Size uint64
34 +}
35 +
36 +type Object struct {
37 + Hash string
38 + Links []Link
39 +}
40 +
41 var ObjectCmd = &cmds.Command{
42 Helptext: cmds.HelpText{
43 Tagline: "Interact with ipfs objects",
@@ -123,7 +133,10 @@ multihash.
133 object := res.Output().(*Object)
134 var buf bytes.Buffer
135 w := tabwriter.NewWriter(&buf, 1, 2, 1, ' ', 0)
126 - marshalLinks(w, object.Links)
136 + fmt.Fprintln(w, "Hash\tSize\tName\t")
137 + for _, link := range object.Links {
138 + fmt.Fprintf(w, "%s\t%v\t%s\t\n", link.Hash, link.Size, link.Name)
139 + }
140 w.Flush()
141 return &buf, nil
142 },