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