@@ -17,68 +17,90 @@ package cmd
1717
1818import (
1919 "encoding/json"
20- "fmt"
2120
2221 "github.com/spf13/cobra"
2322 "onyxiactl/utils"
2423)
2524
25+ type Catalog struct {
26+ ID string `json:"id"`
27+ Description string `json:"description"`
28+ LastUpdateTime uint `json:"lastUpdateTime"`
29+ Location string `json:"location"`
30+ Maintainer string `json:"maintainer"`
31+ Name string `json:"name"`
32+ Status string `json:"status"`
33+ Type string `json:"type"`
34+ }
35+
36+ type Catalogs struct {
37+ Catalogs []Catalog `json:"catalogs"`
38+ }
39+
40+ func init () {
41+ rootCmd .AddCommand (catalogCmd )
42+ catalogCmd .AddCommand (catalogListCmd )
43+ catalogCmd .PersistentFlags ().StringP ("id" , "i" , "" , "Catalog’s ID." )
44+ }
45+
2646var catalogCmd = & cobra.Command {
2747 Use : "catalog" ,
28- Short : "List the available catalogs." ,
48+ Short : "Manage the catalogs." ,
49+ Long : `Manage the catalogs. By default the command lists the available catalogs.` ,
50+ Run : func (cmd * cobra.Command , args []string ) { catalogList (cmd ) },
51+ }
52+
53+ var catalogListCmd = & cobra.Command {
54+ Use : "list" ,
55+ Short : "List the available catalogs (default)." ,
2956 Long : `List the available catalogs.` ,
30- Run : func (cmd * cobra.Command , args []string ) {
31- catalog := & CatalogResponse {}
32- token , _ := cmd .Flags ().GetString ("token" )
33- onyxiaURL , _ := cmd .Flags ().GetString ("onyxiaURL" )
34-
35- JsonCatalog , e := utils .CallAPIGet (onyxiaURL + "/public/catalog" , token )
36- if e != nil {
37- panic (e )
38- }
39-
40- e = json .Unmarshal (JsonCatalog , & catalog )
41- if e != nil {
42- panic (e )
43- }
44-
45- for _ , value := range catalog .Catalogs {
46- j , _ := json .Marshal (value )
47- fmt .Println (string (j ))
48- }
49- },
57+ Run : func (cmd * cobra.Command , args []string ) { catalogList (cmd ) },
5058}
5159
52- func init () {
53- rootCmd .AddCommand (catalogCmd )
60+ func catalogList (cmd * cobra.Command ) error {
61+ token , _ := cmd .Flags ().GetString ("token" )
62+ onyxiaURL , _ := cmd .Flags ().GetString ("onyxiaURL" )
63+ id , _ := cmd .Flags ().GetString ("id" )
64+
65+ if len (id ) == 0 {
66+ return catalogListAll (onyxiaURL + "/public/catalog" , token )
67+ }
68+
69+ return catalogListId (onyxiaURL + "/public/catalog" , token , id )
5470}
5571
56- type CatalogResponse struct {
57- Catalogs []struct {
58- /* Catalog struct {
59- Packages []struct {
60- APIVersion string `json:"apiVersion"`
61- AppVersion string `json:"appVersion"`
62- Config struct{} `json:"config"`
63- Created string `json:"created"`
64- Description string `json:"description"`
65- Digest string `json:"digest"`
66- Home string `json:"home"`
67- Icon string `json:"icon"`
68- Name string `json:"name"`
69- Sources []string `json:"sources"`
70- Urls []string `json:"urls"`
71- Version string `json:"version"`
72- } `json:"packages"`
73- } `json:"catalog"`
74- */
75- ID string `json:"id"`
76- Description string `json:"description"`
77- // LastUpdateTime uint `json:"lastUpdateTime"`
78- Location string `json:"location"`
79- Maintainer string `json:"maintainer"`
80- Name string `json:"name"`
81- Status string `json:"status"`
82- Type string `json:"type"`
83- } `json:"catalogs"`
72+ func catalogListAll (url , token string ) error {
73+ catalog := & Catalogs {}
74+ JsonCatalog , e := utils .CallAPIGet (url , token )
75+ if e != nil {
76+ panic (e )
77+ }
78+
79+ e = json .Unmarshal (JsonCatalog , & catalog )
80+ if e != nil {
81+ panic (e )
82+ }
83+
84+ for _ , v := range catalog .Catalogs {
85+ utils .PrintStruct (v )
86+ }
87+
88+ return nil
89+ }
90+
91+ func catalogListId (url , token , id string ) error {
92+ catalog := & Catalog {}
93+ JsonCatalog , e := utils .CallAPIGet (url + "/" + id , token )
94+ if e != nil {
95+ panic (e )
96+ }
97+
98+ e = json .Unmarshal (JsonCatalog , & catalog )
99+ if e != nil {
100+ panic (e )
101+ }
102+
103+ utils .PrintStruct (catalog )
104+
105+ return nil
84106}
0 commit comments