func remove(c *cli.Context) { if l := len(c.Args()); l != 1 { common.OSErrf("error: expected 1 argument, got %d", l) return } cfgPath, err := common.TenetCfgPath(c) if err != nil { common.OSErrf("reading config file: %s", err.Error()) return } cfg, err := common.BuildConfig(cfgPath, common.CascadeNone) if err != nil { common.OSErrf("reading config file: %s", err.Error()) return } imageName := c.Args().First() if !cfg.HasTenet(imageName) { common.OSErrf(`error: tenet "%s" not found in %q`, imageName, c.GlobalString(common.TenetCfgFlg.Long)) return } if err := cfg.RemoveTenet(imageName, c.String("group")); err != nil { common.OSErrf(err.Error()) return } if err := common.WriteConfigFile(c, cfg); err != nil { common.OSErrf(err.Error()) return } }
func add(c *cli.Context) { if l := len(c.Args()); l != 1 { common.OSErrf("expected 1 argument, got %d", l) return } cfgPath, err := common.TenetCfgPath(c) if err != nil { common.OSErrf("reading config file: %s", err.Error()) return } cfg, err := common.BuildConfig(cfgPath, common.CascadeNone) if err != nil { common.OSErrf("reading config file: %s", err.Error()) return } imageName := c.Args().First() groupName := c.String("group") g, err := cfg.FindTenetGroup(groupName) if err == nil && common.HasTenet(g.Tenets, imageName) { common.OSErrf(`error: tenet "%s" already added`, imageName) return } // TODO(waigani) DEMOWARE. This will panic with wrong input. Matt didn't // your first PR bring in options? opts := map[string]interface{}{} if optStr := c.String("options"); optStr != "" { // TODO: DEMOWARE. Only set one option at a time to allow spaces in value //for _, part := range strings.Split(optStr, " ") { p := strings.Split(optStr, "=") opts[p[0]] = p[1] //} } var registry string driver := c.String("driver") if driver == "docker" { registry = c.String("registry") } cfg.AddTenet(common.TenetConfig{ Name: imageName, Driver: driver, Registry: registry, Options: opts, }, groupName) if err := common.WriteConfigFile(c, cfg); err != nil { common.OSErrf(err.Error()) return } // TODO(waigani) open an interactive shell, prompt to set options. }