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:24:00 UTC

[45/50] incubator-mynewt-newt git commit: "clean all" command.

"clean all" 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/d9b22a67
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/tree/d9b22a67
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/diff/d9b22a67

Branch: refs/heads/develop
Commit: d9b22a67f6eca6458e05d9a0ed648e08a7583e6f
Parents: 59fef97
Author: ccollins at iori.nightmare.heaven <cc...@iori.nightmare-heaven.no-ip.biz>
Authored: Wed Mar 9 09:32:05 2016 -0800
Committer: ccollins at iori.nightmare.heaven <cc...@iori.nightmare-heaven.no-ip.biz>
Committed: Wed Mar 9 10:00:09 2016 -0800

----------------------------------------------------------------------
 newt/builder/build.go     | 14 ++++++-------
 newt/builder/buildutil.go | 32 +++++++++++++++++-------------
 newt/builder/cmds.go      | 45 ++++++++++++++++++++++++++++++------------
 newt/builder/download.go  |  8 ++++----
 newt/target/cmds.go       | 27 ++-----------------------
 newt/target/target.go     | 30 ++++++++++++++++++++++++++++
 6 files changed, 93 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/d9b22a67/newt/builder/build.go
----------------------------------------------------------------------
diff --git a/newt/builder/build.go b/newt/builder/build.go
index 6f6ea75..d6ca89d 100644
--- a/newt/builder/build.go
+++ b/newt/builder/build.go
@@ -122,7 +122,7 @@ func (b *Builder) loadDeps() error {
 	}
 
 	util.StatusMessage(util.VERBOSITY_VERBOSE, "Building with the following "+
-		"feature set: ["+b.featureString()+"]\n")
+		"feature set: ["+b.FeatureString()+"]\n")
 
 	return nil
 }
@@ -193,7 +193,7 @@ func (b *Builder) buildPackage(bpkg *BuildPackage) error {
 	}
 
 	c, err := toolchain.NewCompiler(b.compilerPkg.BasePath(),
-		b.pkgBinDir(bpkg.Name()), b.target.BuildProfile)
+		b.PkgBinDir(bpkg.Name()), b.target.BuildProfile)
 	if err != nil {
 		return err
 	}
@@ -228,7 +228,7 @@ func (b *Builder) buildPackage(bpkg *BuildPackage) error {
 	if err := os.Chdir(bpkg.BasePath() + "/"); err != nil {
 		return util.NewNewtError(err.Error())
 	}
-	archiveFile := b.archivePath(bpkg.Name())
+	archiveFile := b.ArchivePath(bpkg.Name())
 	if err = c.CompileArchive(archiveFile); err != nil {
 		return err
 	}
@@ -238,14 +238,14 @@ func (b *Builder) buildPackage(bpkg *BuildPackage) error {
 
 func (b *Builder) link(elfName string) error {
 	c, err := toolchain.NewCompiler(b.compilerPkg.BasePath(),
-		b.pkgBinDir(elfName), b.target.BuildProfile)
+		b.PkgBinDir(elfName), b.target.BuildProfile)
 	if err != nil {
 		return err
 	}
 
 	pkgNames := []string{}
 	for _, bpkg := range b.Packages {
-		archivePath := b.archivePath(bpkg.Name())
+		archivePath := b.ArchivePath(bpkg.Name())
 		if util.NodeExist(archivePath) {
 			pkgNames = append(pkgNames, archivePath)
 		}
@@ -445,7 +445,7 @@ func (b *Builder) Test(p *pkg.LocalPackage) error {
 		}
 	}
 
-	testFilename := b.testExePath(p.Name())
+	testFilename := b.TestExePath(p.Name())
 	err = b.link(testFilename)
 	if err != nil {
 		return err
@@ -473,7 +473,7 @@ func (b *Builder) Test(p *pkg.LocalPackage) error {
 }
 
 func (b *Builder) Clean() error {
-	path := b.binDir()
+	path := b.BinDir()
 	util.StatusMessage(util.VERBOSITY_VERBOSE, "Cleaning directory %s\n", path)
 	err := os.RemoveAll(path)
 	return err

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/d9b22a67/newt/builder/buildutil.go
----------------------------------------------------------------------
diff --git a/newt/builder/buildutil.go b/newt/builder/buildutil.go
index 2654477..202149c 100644
--- a/newt/builder/buildutil.go
+++ b/newt/builder/buildutil.go
@@ -28,44 +28,48 @@ import (
 	"mynewt.apache.org/newt/util"
 )
 
-func (b *Builder) binDir() string {
-	return project.GetProject().Path() + "/bin/" + b.target.ShortName()
+func BinRoot() string {
+	return project.GetProject().Path() + "/bin"
 }
 
-func (b *Builder) pkgBinDir(pkgName string) string {
-	return b.binDir() + "/" + pkgName
+func (b *Builder) BinDir() string {
+	return BinRoot() + "/" + b.target.ShortName()
+}
+
+func (b *Builder) PkgBinDir(pkgName string) string {
+	return b.BinDir() + "/" + pkgName
 }
 
 // Generates the path+filename of the specified package's .a file.
-func (b *Builder) archivePath(pkgName string) string {
-	return b.pkgBinDir(pkgName) + "/" + filepath.Base(pkgName) + ".a"
+func (b *Builder) ArchivePath(pkgName string) string {
+	return b.PkgBinDir(pkgName) + "/" + filepath.Base(pkgName) + ".a"
 }
 
 func (b *Builder) AppElfPath() string {
 	pkgName := b.target.App().Name()
-	return b.pkgBinDir(pkgName) + "/" + filepath.Base(pkgName) + ".elf"
+	return b.PkgBinDir(pkgName) + "/" + filepath.Base(pkgName) + ".elf"
 }
 
 func (b *Builder) AppImgPath() string {
 	pkgName := b.target.App().Name()
-	return b.pkgBinDir(pkgName) + "/" + filepath.Base(pkgName) + ".img"
+	return b.PkgBinDir(pkgName) + "/" + filepath.Base(pkgName) + ".img"
 }
 
 func (b *Builder) AppPath() string {
 	pkgName := b.target.App().Name()
-	return b.pkgBinDir(pkgName) + "/"
+	return b.PkgBinDir(pkgName) + "/"
 }
 
-func (b *Builder) appBinBasePath() string {
+func (b *Builder) AppBinBasePath() string {
 	pkgName := b.target.App().Name()
-	return b.pkgBinDir(pkgName) + "/" + filepath.Base(pkgName)
+	return b.PkgBinDir(pkgName) + "/" + filepath.Base(pkgName)
 }
 
-func (b *Builder) testExePath(pkgName string) string {
-	return b.pkgBinDir(pkgName) + "/test_" + filepath.Base(pkgName)
+func (b *Builder) TestExePath(pkgName string) string {
+	return b.PkgBinDir(pkgName) + "/test_" + filepath.Base(pkgName)
 }
 
-func (b *Builder) featureString() string {
+func (b *Builder) FeatureString() string {
 	var buffer bytes.Buffer
 
 	first := true

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/d9b22a67/newt/builder/cmds.go
----------------------------------------------------------------------
diff --git a/newt/builder/cmds.go b/newt/builder/cmds.go
index b236bbf..abcbd47 100644
--- a/newt/builder/cmds.go
+++ b/newt/builder/cmds.go
@@ -21,6 +21,7 @@ package builder
 
 import (
 	"fmt"
+    "os"
 
 	"github.com/spf13/cobra"
 	"mynewt.apache.org/newt/newt/cli"
@@ -60,19 +61,37 @@ func cleanRunCmd(cmd *cobra.Command, args []string) {
 		cli.NewtUsage(cmd, util.NewNewtError("Must specify target"))
 	}
 
-	t := target.ResolveTarget(args[0])
-	if t == nil {
-		cli.NewtUsage(cmd, util.NewNewtError("invalid target name"+args[0]))
-	}
-
-	b, err := NewBuilder(t)
-	if err != nil {
-		cli.NewtUsage(cmd, err)
-	}
-	err = b.Clean()
-	if err != nil {
-		cli.NewtUsage(cmd, err)
-	}
+    cleanAll := false
+    targets := []*target.Target{}
+    for _, arg := range args {
+        if arg == target.TARGET_KEYWORD_ALL {
+            cleanAll = true
+        } else {
+            t := target.ResolveTarget(arg)
+            if t == nil {
+                cli.NewtUsage(cmd, util.NewNewtError("invalid target name"+arg))
+            }
+            targets = append(targets, t)
+        }
+    }
+
+    if cleanAll {
+        err := os.RemoveAll(BinRoot())
+        if err != nil {
+            cli.NewtUsage(cmd, err)
+        }
+    } else {
+        for _,t := range targets {
+            b, err := NewBuilder(t)
+            if err != nil {
+                cli.NewtUsage(cmd, err)
+            }
+            err = b.Clean()
+            if err != nil {
+                cli.NewtUsage(cmd, err)
+            }
+        }
+    }
 }
 
 func testRunCmd(cmd *cobra.Command, args []string) {

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/d9b22a67/newt/builder/download.go
----------------------------------------------------------------------
diff --git a/newt/builder/download.go b/newt/builder/download.go
index cab02c8..0cb0258 100644
--- a/newt/builder/download.go
+++ b/newt/builder/download.go
@@ -50,8 +50,8 @@ func (b *Builder) Download() error {
 
 	bspPath := b.Bsp.BasePath()
 	downloadScript := filepath.Join(bspPath, b.Bsp.DownloadScript)
-	binBaseName := b.appBinBasePath()
-	featureString := b.featureString()
+	binBaseName := b.AppBinBasePath()
+	featureString := b.FeatureString()
 
 	downloadCmd := fmt.Sprintf("%s %s %s %s",
 		downloadScript, bspPath, binBaseName, featureString)
@@ -77,8 +77,8 @@ func (b *Builder) Debug() error {
 
 	bspPath := b.Bsp.BasePath()
 	debugScript := filepath.Join(bspPath, b.Bsp.DebugScript)
-	binBaseName := b.appBinBasePath()
-	featureString := b.featureString()
+	binBaseName := b.AppBinBasePath()
+	featureString := b.FeatureString()
 
 	os.Chdir(project.GetProject().Path())
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/d9b22a67/newt/target/cmds.go
----------------------------------------------------------------------
diff --git a/newt/target/cmds.go b/newt/target/cmds.go
index 1dabd1e..e3aae87 100644
--- a/newt/target/cmds.go
+++ b/newt/target/cmds.go
@@ -42,29 +42,6 @@ func resolveExistingTargetArg(arg string) (*Target, error) {
 	return t, nil
 }
 
-func resolveNewTargetArg(arg string) (string, error) {
-	repoName, pkgName, err := cli.ParsePackageString(arg)
-	if err != nil {
-		return "", err
-	}
-
-	if repoName != "" {
-		return "", util.NewNewtError("Target name cannot contain repo; " +
-			"must be local")
-	}
-
-	// "Naked" target names go in the "targets/" directory.
-	if !strings.Contains(pkgName, "/") {
-		pkgName = "targets/" + pkgName
-	}
-
-	if GetTargets()[pkgName] != nil {
-		return "", util.NewNewtError("Target already exists: " + pkgName)
-	}
-
-	return pkgName, nil
-}
-
 func targetShowCmd(cmd *cobra.Command, args []string) {
 	proj := project.GetProject()
 	err := proj.LoadPackageList()
@@ -192,7 +169,7 @@ func targetCreateCmd(cmd *cobra.Command, args []string) {
 		cli.NewtUsage(cmd, util.NewNewtError("Missing target name"))
 	}
 
-	pkgName, err := resolveNewTargetArg(args[0])
+	pkgName, err := ResolveNewTargetName(args[0])
 	if err != nil {
 		cli.NewtUsage(cmd, err)
 	}
@@ -271,7 +248,7 @@ func targetCopyCmd(cmd *cobra.Command, args []string) {
 		cli.NewtUsage(cmd, err)
 	}
 
-	dstName, err := resolveNewTargetArg(args[1])
+	dstName, err := ResolveNewTargetName(args[1])
 	if err != nil {
 		cli.NewtUsage(cmd, err)
 	}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/d9b22a67/newt/target/target.go
----------------------------------------------------------------------
diff --git a/newt/target/target.go b/newt/target/target.go
index 4b64e57..32098f3 100644
--- a/newt/target/target.go
+++ b/newt/target/target.go
@@ -26,6 +26,7 @@ import (
 	"sort"
 	"strings"
 
+	"mynewt.apache.org/newt/newt/cli"
 	"mynewt.apache.org/newt/newt/pkg"
 	"mynewt.apache.org/newt/newt/project"
 	"mynewt.apache.org/newt/util"
@@ -34,6 +35,7 @@ import (
 
 const TARGET_FILENAME string = "target.yml"
 const TARGET_DEFAULT_DIR string = "targets"
+const TARGET_KEYWORD_ALL string = "all"
 
 var globalTargetMap map[string]*Target
 
@@ -281,3 +283,31 @@ func ResolveTargetNames(names ...string) ([]*Target, error) {
 
 	return targets, nil
 }
+
+func ResolveNewTargetName(name string) (string, error) {
+	repoName, pkgName, err := cli.ParsePackageString(name)
+	if err != nil {
+		return "", err
+	}
+
+	if repoName != "" {
+		return "", util.NewNewtError("Target name cannot contain repo; " +
+			"must be local")
+	}
+
+    if pkgName == TARGET_KEYWORD_ALL {
+        return "", util.NewNewtError("Target name " + TARGET_KEYWORD_ALL +
+            " is reserved")
+    }
+
+	// "Naked" target names translate to "targets/<name>".
+	if !strings.Contains(pkgName, "/") {
+		pkgName = TARGET_DEFAULT_DIR + "/" + pkgName
+	}
+
+	if GetTargets()[pkgName] != nil {
+		return "", util.NewNewtError("Target already exists: " + pkgName)
+	}
+
+    return pkgName, nil
+}