@cryptotaxi247 / kubo / commits / 17c6907e1

core/command2: Fixed ls output for XML marshalling

Matt Bell committed Oct 30, 2014 at 18:50 UTC 17c6907e1f6adca30ba482c3beecbba84f750c5a
1 file changed +25 -13
core/commands2/ls.go
+25 -13
@@ -11,22 +11,34 @@ type Link struct {
11 Size uint64
12 }
13
14 +type Object struct {
15 + Hash string
16 + Links []Link
17 +}
18 +
19 +type LsOutput struct {
20 + Objects []Object
21 +}
22 +
23 var ls = &cmds.Command{
24 Help: "TODO",
25 Run: func(res cmds.Response, req cmds.Request) {
26 node := req.Context().Node
18 - output := make(map[string][]Link, len(req.Arguments()))
27 + output := make([]Object, len(req.Arguments()))
28
20 - for _, path := range req.Arguments() {
29 + for i, path := range req.Arguments() {
30 dagnode, err := node.Resolver.ResolvePath(path)
31 if err != nil {
32 res.SetError(err, cmds.ErrNormal)
33 return
34 }
35
27 - output[path] = make([]Link, len(dagnode.Links))
28 - for i, link := range dagnode.Links {
29 - output[path][i] = Link{
36 + output[i] = Object{
37 + Hash: path,
38 + Links: make([]Link, len(dagnode.Links)),
39 + }
40 + for j, link := range dagnode.Links {
41 + output[i].Links[j] = Link{
42 Name: link.Name,
43 Hash: link.Hash.B58String(),
44 Size: link.Size,
@@ -34,27 +46,27 @@ var ls = &cmds.Command{
46 }
47 }
48
37 - res.SetValue(output)
49 + res.SetValue(&LsOutput{output})
50 },
51 Format: func(res cmds.Response) (string, error) {
52 s := ""
41 - output := res.Value().(*map[string][]Link)
53 + output := res.Value().(*LsOutput).Objects
54
43 - for path, links := range *output {
44 - if len(*output) > 1 {
45 - s += fmt.Sprintf("%s:\n", path)
55 + for _, object := range output {
56 + if len(output) > 1 {
57 + s += fmt.Sprintf("%s:\n", object.Hash)
58 }
59
48 - for _, link := range links {
60 + for _, link := range object.Links {
61 s += fmt.Sprintf("-> %s %s (%v bytes)\n", link.Name, link.Hash, link.Size)
62 }
63
52 - if len(*output) > 1 {
64 + if len(output) > 1 {
65 s += "\n"
66 }
67 }
68
69 return s, nil
70 },
59 - Type: &map[string][]Link{},
71 + Type: &LsOutput{},
72 }