Skip to content

Commit eaf2b2b

Browse files
committed
Listing folders
1 parent 8cd1844 commit eaf2b2b

File tree

2 files changed

+85
-3
lines changed

2 files changed

+85
-3
lines changed

command/folder/dto.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package folder
2+
3+
import (
4+
"time"
5+
6+
"github.com/arduino/arduino-cli/table"
7+
)
8+
9+
type PathNode struct {
10+
// ID of the folder that makes up this path node
11+
FolderId string `json:"folder_id"`
12+
// Name of the folder that makes up this path node
13+
FolderName string `json:"folder_name"`
14+
}
15+
16+
type Folder struct {
17+
ID string `json:"id"`
18+
Name string `json:"name"`
19+
CreatedAt time.Time `json:"created_at"`
20+
UpdatedAt time.Time `json:"updated_at"`
21+
Parent *PathNode `json:"parent,omitempty"`
22+
Path []PathNode `json:"path,omitempty"`
23+
}
24+
25+
type Folders struct {
26+
Folders []Folder `json:"folders"`
27+
}
28+
29+
func (r *Folders) Data() interface{} {
30+
return r
31+
}
32+
33+
func (r *Folders) String() string {
34+
if len(r.Folders) == 0 {
35+
return ""
36+
}
37+
t := table.New()
38+
t.SetHeader("Folder ID", "Name", "Created At", "Updated At", "Parent", "Path")
39+
40+
// Now print the table
41+
for _, fol := range r.Folders {
42+
parent := ""
43+
if fol.Parent != nil {
44+
parent = fol.Parent.FolderName
45+
}
46+
if fol.Path != nil {
47+
for _, p := range fol.Path {
48+
parent += "> " + p.FolderName
49+
}
50+
}
51+
path := ""
52+
line := []any{fol.ID, fol.Name, fol.CreatedAt.Format(time.RFC3339), fol.UpdatedAt.Format(time.RFC3339), parent, path}
53+
t.AddRow(line...)
54+
}
55+
56+
return t.Render()
57+
}

command/folder/list.go

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,40 @@ func ListFolders(ctx context.Context, cred *config.Credentials) error {
3131
return err
3232
}
3333

34-
folders, err := iotClient.FoldersList(ctx)
34+
fold, err := iotClient.FoldersList(ctx)
3535
if err != nil {
3636
return err
3737
}
3838

39-
if folders == nil {
39+
if fold == nil {
4040
feedback.Print("No folders found")
4141
} else {
42-
//feedback.PrintResult(folders)
42+
folders := &Folders{}
43+
for _, f := range fold {
44+
trFolder := Folder{
45+
ID: f.Id,
46+
Name: f.Name,
47+
CreatedAt: f.CreatedAt,
48+
UpdatedAt: f.UpdatedAt,
49+
}
50+
if f.Parent != nil {
51+
trFolder.Parent = &PathNode{
52+
FolderId: f.Parent.FolderId,
53+
FolderName: f.Parent.FolderName,
54+
}
55+
}
56+
if f.Path != nil {
57+
trFolder.Path = make([]PathNode, 0, len(f.Path))
58+
for _, p := range f.Path {
59+
trFolder.Path = append(trFolder.Path, PathNode{
60+
FolderId: p.FolderId,
61+
FolderName: p.FolderName,
62+
})
63+
}
64+
}
65+
folders.Folders = append(folders.Folders, trFolder)
66+
}
67+
feedback.PrintResult(folders)
4368
}
4469

4570
return nil

0 commit comments

Comments
 (0)