You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ma...@apache.org on 2016/03/09 21:23:52 UTC

[37/50] incubator-mynewt-newt git commit: Don't allow repo name in target create command.

Don't allow repo name in target create command.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/commit/7a3d6913
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/tree/7a3d6913
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/diff/7a3d6913

Branch: refs/heads/develop
Commit: 7a3d6913815b62ce011b0bf0244b1838c82ea5c9
Parents: 5c7d6ff
Author: Christopher Collins <cc...@gmail.com>
Authored: Tue Mar 8 19:08:18 2016 -0800
Committer: Christopher Collins <cc...@gmail.com>
Committed: Tue Mar 8 19:39:09 2016 -0800

----------------------------------------------------------------------
 newt/cli/util.go         | 28 ++++++++++++++++++++++++++++
 newt/pkg/dependency.go   | 27 +++++++++++----------------
 newt/pkg/localpackage.go |  6 +++---
 newt/target/cmds.go      | 42 ++++++++++++++++++++++++------------------
 newt/target/vars.go      |  7 +++++--
 5 files changed, 71 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/7a3d6913/newt/cli/util.go
----------------------------------------------------------------------
diff --git a/newt/cli/util.go b/newt/cli/util.go
index 89ee6ae..ce2b671 100644
--- a/newt/cli/util.go
+++ b/newt/cli/util.go
@@ -117,3 +117,31 @@ func GetStringSliceFeatures(v *viper.Viper, features map[string]bool,
 
 	return result
 }
+
+// Parses a string of the following form:
+//     [@repo]<path/to/package>
+//
+// @return string               repo name ("" if no repo)
+//         string               package name
+//         error                if invalid package string
+func ParsePackageString(pkgStr string) (string, string, error) {
+	if strings.HasPrefix(pkgStr, "@") {
+		nameParts := strings.SplitN(pkgStr[1:], "/", 2)
+		if len(nameParts) == 1 {
+			return "", "", util.NewNewtError(fmt.Sprintf("Invalid package "+
+				"string; contains repo but no package name: %s", pkgStr))
+		} else {
+			return nameParts[0], nameParts[1], nil
+		}
+	} else {
+		return "", pkgStr, nil
+	}
+}
+
+func BuildPackageString(repoName string, pkgName string) string {
+	if repoName != "" {
+		return "@" + repoName + "/" + pkgName
+	} else {
+		return pkgName
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/7a3d6913/newt/pkg/dependency.go
----------------------------------------------------------------------
diff --git a/newt/pkg/dependency.go b/newt/pkg/dependency.go
index ee57655..bd586c0 100644
--- a/newt/pkg/dependency.go
+++ b/newt/pkg/dependency.go
@@ -20,12 +20,9 @@
 package pkg
 
 import (
-	"fmt"
-	"strings"
-
+	"mynewt.apache.org/newt/newt/cli"
 	"mynewt.apache.org/newt/newt/interfaces"
 	"mynewt.apache.org/newt/newt/repo"
-	"mynewt.apache.org/newt/util"
 )
 
 type Dependency struct {
@@ -34,8 +31,7 @@ type Dependency struct {
 }
 
 func (dep *Dependency) String() string {
-	str := fmt.Sprintf("@%s/%s", dep.Repo, dep.Name)
-	return str
+	return cli.BuildPackageString(dep.Repo, dep.Name)
 }
 
 func (dep *Dependency) SatisfiesDependency(pkg interfaces.PackageInterface) bool {
@@ -52,17 +48,16 @@ func (dep *Dependency) SatisfiesDependency(pkg interfaces.PackageInterface) bool
 
 func (dep *Dependency) setRepoAndName(parentRepo interfaces.RepoInterface, str string) error {
 	// First part is always repo/dependency name combination.
-	// If repo is present, string will always begin with a $ sign
+	// If repo is present, string will always begin with a @ sign
 	// representing the repo name, followed by 'n' slashes.
-	if strings.HasPrefix(str, "@") {
-		nameParts := strings.SplitN(str[1:], "/", 2)
-		if len(nameParts) == 1 {
-			return util.NewNewtError(fmt.Sprintf(
-				"Must specify both repo and package name, no package detected: %s",
-				str))
-		}
-		dep.Repo = nameParts[0]
-		dep.Name = nameParts[1]
+	repoName, pkgName, err := cli.ParsePackageString(str)
+	if err != nil {
+		return err
+	}
+
+	if repoName != "" {
+		dep.Repo = repoName
+		dep.Name = pkgName
 	} else {
 		if parentRepo != nil {
 			dep.Repo = parentRepo.Name()

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/7a3d6913/newt/pkg/localpackage.go
----------------------------------------------------------------------
diff --git a/newt/pkg/localpackage.go b/newt/pkg/localpackage.go
index 6a89563..f7ab295 100644
--- a/newt/pkg/localpackage.go
+++ b/newt/pkg/localpackage.go
@@ -28,11 +28,11 @@ import (
 	"path/filepath"
 	"strings"
 
-	"mynewt.apache.org/newt/viper"
-
+	"mynewt.apache.org/newt/newt/cli"
 	"mynewt.apache.org/newt/newt/interfaces"
 	"mynewt.apache.org/newt/newt/repo"
 	"mynewt.apache.org/newt/util"
+	"mynewt.apache.org/newt/viper"
 	"mynewt.apache.org/newt/yaml"
 )
 
@@ -84,7 +84,7 @@ func (pkg *LocalPackage) FullName() string {
 	if r.IsLocal() {
 		return pkg.Name()
 	} else {
-		return "@" + r.Name() + "/" + pkg.Name()
+		return cli.BuildPackageString(r.Name(), pkg.Name())
 	}
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/7a3d6913/newt/target/cmds.go
----------------------------------------------------------------------
diff --git a/newt/target/cmds.go b/newt/target/cmds.go
index 7480c0f..98f0df6 100644
--- a/newt/target/cmds.go
+++ b/newt/target/cmds.go
@@ -33,7 +33,7 @@ import (
 	"mynewt.apache.org/newt/util"
 )
 
-func parseTargetName(arg string) (*Target, error) {
+func resolveTargetArg(arg string) (*Target, error) {
 	t := ResolveTargetName(arg)
 	if t == nil {
 		return nil, util.NewNewtError("Unknown target: " + arg)
@@ -110,7 +110,7 @@ func targetSetCmd(cmd *cobra.Command, args []string) {
 	}
 
 	// Parse target name.
-	t, err := parseTargetName(args[0])
+	t, err := resolveTargetArg(args[0])
 	if err != nil {
 		cli.NewtUsage(cmd, err)
 	}
@@ -169,35 +169,41 @@ func targetCreateCmd(cmd *cobra.Command, args []string) {
 		cli.NewtUsage(cmd, util.NewNewtError("Missing target name"))
 	}
 
-	tName := args[0]
+	repoName, pkgName, err := cli.ParsePackageString(args[0])
+	if err != nil {
+		cli.NewtUsage(cmd, err)
+	}
 
-	// "Naked" target names go in the "targets/" directory.
-	if !strings.Contains(tName, "/") {
-		tName = "targets/" + tName
+	if repoName != "" {
+		cli.NewtUsage(cmd, util.NewNewtError("Target name cannot contain "+
+			"repo; must be local"))
 	}
 
-	// XXX: Deal with repo name at start of target string.
+	// "Naked" target names go in the "targets/" directory.
+	if !strings.Contains(pkgName, "/") {
+		pkgName = "targets/" + pkgName
+	}
 
-	util.StatusMessage(util.VERBOSITY_DEFAULT, "Creating target "+tName+"\n")
+	util.StatusMessage(util.VERBOSITY_DEFAULT, "Creating target "+
+		pkgName+"\n")
 
-	t := ResolveTargetName(tName)
-	if t != nil {
-		cli.NewtUsage(cmd, util.NewNewtError(
-			"Target already exists; cannot create target with same name."))
+	if GetTargets()[pkgName] != nil {
+		cli.NewtUsage(cmd, util.NewNewtError("Target already exists: "+
+			pkgName))
 	}
 
 	repo := project.GetProject().LocalRepo()
-	pack := pkg.NewLocalPackage(repo, repo.Path()+"/"+tName)
-	pack.SetName(tName)
+	pack := pkg.NewLocalPackage(repo, repo.Path()+"/"+pkgName)
+	pack.SetName(pkgName)
 	pack.SetType(pkg.PACKAGE_TYPE_TARGET)
 
-	t = NewTarget(pack)
-	err := t.Save()
+	t := NewTarget(pack)
+	err = t.Save()
 	if err != nil {
 		cli.NewtUsage(nil, err)
 	} else {
 		util.StatusMessage(util.VERBOSITY_DEFAULT,
-			"Target %s successfully created!\n", tName)
+			"Target %s successfully created!\n", pkgName)
 	}
 }
 
@@ -226,7 +232,7 @@ func targetDelOne(t *Target) error {
 	}
 
 	util.StatusMessage(util.VERBOSITY_DEFAULT,
-		"Target %s successfully removed\n", t.FullName())
+		"Target %s successfully deleted.\n", t.FullName())
 
 	return nil
 }

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/7a3d6913/newt/target/vars.go
----------------------------------------------------------------------
diff --git a/newt/target/vars.go b/newt/target/vars.go
index 71f4bed..5b29b41 100644
--- a/newt/target/vars.go
+++ b/newt/target/vars.go
@@ -24,6 +24,7 @@ import (
 	"path/filepath"
 	"strings"
 
+	"mynewt.apache.org/newt/newt/cli"
 	. "mynewt.apache.org/newt/newt/interfaces"
 	"mynewt.apache.org/newt/newt/pkg"
 	"mynewt.apache.org/newt/newt/project"
@@ -51,8 +52,10 @@ func varsFromChildDirs(key string, fullPath bool) ([]string, error) {
 						project.GetProject().Path()+"/")
 				}
 				if strings.HasPrefix(value, repo.REPOS_DIR+"/") {
-					value = "@" +
-						strings.TrimPrefix(value, repo.REPOS_DIR+"/")
+					parts := strings.SplitN(value, "/", 2)
+					if len(parts) > 1 {
+						value = cli.BuildPackageString(parts[0], parts[1])
+					}
 				}
 				valueSlice = append(valueSlice, value)
 			}