Update .gitreview file
[src/xds/xds-cli.git] / cmd-projects.go
index 6e7241a..fd46d9a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 "IoT.bzh"
+ * Copyright (C) 2017-2018 "IoT.bzh"
  * Author Sebastien Douheret <sebastien@iot.bzh>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,7 +22,7 @@ import (
        "fmt"
        "strings"
 
-       "github.com/iotbzh/xds-agent/lib/xaapiv1"
+       "gerrit.automotivelinux.org/gerrit/src/xds/xds-agent.git/lib/xaapiv1"
        "github.com/urfave/cli"
 )
 
@@ -51,15 +51,19 @@ func initCmdProjects(cmdDef *[]cli.Command) {
                                                Name:  "server-path, sp",
                                                Usage: "project server path (only used with pathmap type)",
                                        },
+                                       cli.BoolFlag{
+                                               Name:  "short, s",
+                                               Usage: "short output, only print create project id (useful from scripting)",
+                                       },
                                        cli.StringFlag{
                                                Name:  "type, t",
-                                               Usage: "project type (pathmap|pm, cloudsync|sc)",
+                                               Usage: "project type (pathmap|pm, cloudsync|cs)",
                                        },
                                },
                        },
                        {
                                Name:   "get",
-                               Usage:  "Get a property of a project",
+                               Usage:  "Get properties of a project",
                                Action: projectsGet,
                                Flags: []cli.Flag{
                                        cli.StringFlag{
@@ -92,6 +96,10 @@ func initCmdProjects(cmdDef *[]cli.Command) {
                                                Usage:  "project id",
                                                EnvVar: "XDS_PROJECT_ID",
                                        },
+                                       cli.BoolFlag{
+                                               Name:  "force, f",
+                                               Usage: "remove confirmation prompt before removal",
+                                       },
                                },
                        },
                        {
@@ -122,7 +130,7 @@ func projectsList(ctx *cli.Context) error {
 }
 
 func projectsGet(ctx *cli.Context) error {
-       id := GetID(ctx)
+       id := GetID(ctx, "XDS_PROJECT_ID")
        if id == "" {
                return cli.NewExitError("id parameter or option must be set", 1)
        }
@@ -172,12 +180,12 @@ func _displayProjects(prjs []xaapiv1.ProjectConfig, verbose bool) {
 func projectsAdd(ctx *cli.Context) error {
 
        // Decode project type
-       var ptype xaapiv1.ProjectType
+       var pType xaapiv1.ProjectType
        switch strings.ToLower(ctx.String("type")) {
        case "pathmap", "pm":
-               ptype = xaapiv1.TypePathMap
+               pType = xaapiv1.TypePathMap
        case "cloudsync", "cs":
-               ptype = xaapiv1.TypeCloudSync
+               pType = xaapiv1.TypeCloudSync
        default:
                return cli.NewExitError("Unknown project type", 1)
        }
@@ -185,7 +193,7 @@ func projectsAdd(ctx *cli.Context) error {
        prj := xaapiv1.ProjectConfig{
                ServerID:   XdsServerIDGet(),
                Label:      ctx.String("label"),
-               Type:       ptype,
+               Type:       pType,
                ClientPath: ctx.String("path"),
                ServerPath: ctx.String("server-path"),
        }
@@ -197,18 +205,28 @@ func projectsAdd(ctx *cli.Context) error {
                return cli.NewExitError(err, 1)
        }
 
-       fmt.Printf("New project '%s' (id %v) successfully created.\n", newPrj.Label, newPrj.ID)
+       if ctx.Bool("short") {
+               fmt.Println(newPrj.ID)
+       } else {
+               fmt.Printf("New project '%s' (id %v) successfully created.\n", newPrj.Label, newPrj.ID)
+       }
 
        return nil
 }
 
 func projectsRemove(ctx *cli.Context) error {
        var res xaapiv1.ProjectConfig
-       id := GetID(ctx)
+       id := GetID(ctx, "XDS_PROJECT_ID")
        if id == "" {
                return cli.NewExitError("id parameter or option must be set", 1)
        }
 
+       if !ctx.Bool("force") {
+               if !Confirm("Do you permanently remove project id '" + id + "' [yes/No] ? ") {
+                       return nil
+               }
+       }
+
        if err := HTTPCli.Delete("/projects/"+id, &res); err != nil {
                return cli.NewExitError(err, 1)
        }
@@ -218,7 +236,7 @@ func projectsRemove(ctx *cli.Context) error {
 }
 
 func projectsSync(ctx *cli.Context) error {
-       id := GetID(ctx)
+       id := GetID(ctx, "XDS_PROJECT_ID")
        if id == "" {
                return cli.NewExitError("id parameter or option must be set", 1)
        }