in newt/cli/target_cmds.go [409:483]
func targetAmendCmd(cmd *cobra.Command, args []string) {
if len(args) < 2 {
NewtUsage(cmd,
util.NewNewtError("Must specify at least two arguments "+
"(target-name & variable=value) to append"))
}
TryGetProject()
// Parse target name.
t, err := resolveExistingTargetArg(args[0])
if err != nil {
NewtUsage(cmd, err)
}
// Parse series of k=v pairs. If an argument doesn't contain a '='
// character, display the valid values for the variable and quit.
vars := [][]string{}
for i := 1; i < len(args); i++ {
kv := strings.SplitN(args[i], "=", 2)
// Check that the variable can have values appended.
valid := false
for _, v := range amendVars {
if kv[0] == v {
valid = true
break
}
}
if !valid {
NewtUsage(cmd,
util.NewNewtError("Cannot amend values for "+kv[0]))
}
if len(kv) == 1 {
// User entered a variable name without a '='
NewtUsage(cmd, nil)
}
kv[1] = strings.TrimSpace(kv[1])
if kv[1] == "" {
NewtUsage(cmd,
util.NewNewtError("Must provide a value to"+
" append for variable "+kv[0]))
}
// Trim trailing slash from value. This is necessary when tab
// completion is used to fill in the value.
kv[1] = strings.TrimSuffix(kv[1], "/")
vars = append(vars, kv)
}
for _, kv := range vars {
if kv[0] == "syscfg" {
err = amendSysCfg(kv[1], t)
if err != nil {
NewtUsage(cmd, err)
}
} else if kv[0] == "cflags" ||
kv[0] == "cxxflags" ||
kv[0] == "lflags" ||
kv[0] == "aflags" {
err = amendBuildFlags(kv, t)
if err != nil {
NewtUsage(cmd, err)
}
}
}
if err := t.Save(); err != nil {
NewtUsage(cmd, err)
}
for _, kv := range vars {
util.StatusMessage(util.VERBOSITY_DEFAULT,
"Amended %s for Target %s successfully\n",
kv[0], t.FullName())
}
}