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)
}