summaryrefslogtreecommitdiffstats
path: root/cmd-sdks.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd-sdks.go')
-rw-r--r--cmd-sdks.go136
1 files changed, 136 insertions, 0 deletions
diff --git a/cmd-sdks.go b/cmd-sdks.go
new file mode 100644
index 0000000..8568b3a
--- /dev/null
+++ b/cmd-sdks.go
@@ -0,0 +1,136 @@
+package main
+
+import (
+ "fmt"
+ "strconv"
+
+ "github.com/iotbzh/xds-agent/lib/apiv1"
+ "github.com/urfave/cli"
+)
+
+func initCmdSdks(cmdDef *[]cli.Command) {
+ *cmdDef = append(*cmdDef, cli.Command{
+ Name: "sdks",
+ Aliases: []string{"sdk"},
+ HideHelp: true,
+ Usage: "SDKs commands group",
+ Subcommands: []cli.Command{
+ {
+ Name: "add",
+ Aliases: []string{"a"},
+ Usage: "Add a new SDK",
+ Action: sdksAdd,
+ },
+ {
+ Name: "get",
+ Usage: "Get a property of a SDK",
+ Action: sdksGet,
+ Flags: []cli.Flag{
+ cli.StringFlag{
+ Name: "id",
+ Usage: "sdk id",
+ },
+ },
+ },
+ {
+ Name: "list",
+ Aliases: []string{"ls"},
+ Usage: "List installed SDKs",
+ Action: sdksList,
+ Flags: []cli.Flag{
+ cli.BoolFlag{
+ Name: "verbose, v",
+ Usage: "display verbose output",
+ },
+ },
+ },
+ {
+ Name: "remove",
+ Aliases: []string{"rm"},
+ Usage: "Remove an existing SDK",
+ Action: sdksRemove,
+ Flags: []cli.Flag{
+ cli.StringFlag{
+ Name: "id",
+ Usage: "sdk id",
+ },
+ },
+ },
+ },
+ })
+}
+
+func sdksList(ctx *cli.Context) error {
+ // Get SDKs list
+ sdks := []apiv1.SDK{}
+ if err := sdksListGet(&sdks); err != nil {
+ return cli.NewExitError(err.Error(), 1)
+ }
+ _displaySdks(sdks, ctx.Bool("verbose"))
+ return nil
+}
+
+func sdksGet(ctx *cli.Context) error {
+ id := GetID(ctx)
+ if id == "" {
+ return cli.NewExitError("id parameter or option must be set", 1)
+ }
+ sdks := apiv1.SDK{}
+ url := "server/" + strconv.Itoa(XdsServerIndexGet()) + "/sdks/" + id
+ if err := HTTPCli.Get(url, &sdks); err != nil {
+ return cli.NewExitError(err.Error(), 1)
+ }
+ _displaySdks([]apiv1.SDK{sdks}, true)
+ return nil
+}
+
+func _displaySdks(sdks []apiv1.SDK, verbose bool) {
+ // Display result
+ first := true
+ writer := NewTableWriter()
+ for _, s := range sdks {
+ if verbose {
+ if !first {
+ fmt.Fprintln(writer)
+ }
+ fmt.Fprintln(writer, "ID\t"+s.ID)
+ fmt.Fprintln(writer, "Name\t"+s.Name)
+ fmt.Fprintln(writer, "Profile\t"+s.Profile)
+ fmt.Fprintln(writer, "Arch\t"+s.Arch)
+ fmt.Fprintln(writer, "Version\t"+s.Version)
+ fmt.Fprintln(writer, "Path\t"+s.Path)
+
+ } else {
+ if first {
+ fmt.Fprintf(writer, "List of installed SDKs: \n")
+ fmt.Fprintf(writer, " ID\tNAME\n")
+ }
+ fmt.Fprintf(writer, " %s\t%s\n", s.ID, s.Name)
+ }
+ first = false
+ }
+ writer.Flush()
+}
+
+func sdksListGet(sdks *[]apiv1.SDK) error {
+ url := "server/" + strconv.Itoa(XdsServerIndexGet()) + "/sdks"
+ if err := HTTPCli.Get(url, &sdks); err != nil {
+ return err
+ }
+ Log.Debugf("Result of %s: %v", url, sdks)
+
+ return nil
+}
+
+func sdksAdd(ctx *cli.Context) error {
+ return fmt.Errorf("not supported yet")
+}
+
+func sdksRemove(ctx *cli.Context) error {
+ id := GetID(ctx)
+ if id == "" {
+ return cli.NewExitError("id parameter or option must be set", 1)
+ }
+
+ return fmt.Errorf("not supported yet")
+}