]> Cypherpunks repositories - gostls13.git/commitdiff
goinstall: add -clean flag
authorKyle Lemons <kyle@kylelemons.net>
Wed, 5 Jan 2011 19:34:59 +0000 (14:34 -0500)
committerRuss Cox <rsc@golang.org>
Wed, 5 Jan 2011 19:34:59 +0000 (14:34 -0500)
R=adg, rsc
CC=golang-dev
https://golang.org/cl/3821042

src/cmd/goinstall/main.go
src/cmd/goinstall/make.go

index 9301f27b5a52c3b8c47e0e5c40e8da19933f70bf..1736ffc03071f623b857758c161083bc9b71d620 100644 (file)
@@ -41,6 +41,7 @@ var (
        reportToDashboard = flag.Bool("dashboard", true, "report public packages at "+dashboardURL)
        logPkgs           = flag.Bool("log", true, "log installed packages to $GOROOT/goinstall.log for use by -a")
        update            = flag.Bool("u", false, "update already-downloaded packages")
+       clean             = flag.Bool("clean", false, "clean the package directory before installing")
        verbose           = flag.Bool("v", false, "verbose")
 )
 
index 4e001b49bd5dcd6e8fd7a006c8727282c6fe840a..58ba5be0a6cf34f53362a12dd8cc0edc16b05d50 100644 (file)
@@ -17,18 +17,27 @@ import (
 // For non-local packages or packages without Makefiles,
 // domake generates a standard Makefile and passes it
 // to make on standard input.
-func domake(dir, pkg string, local bool) os.Error {
+func domake(dir, pkg string, local bool) (err os.Error) {
+       needMakefile := true
        if local {
                _, err := os.Stat(dir + "/Makefile")
                if err == nil {
-                       return run(dir, nil, "gomake", "install")
+                       needMakefile = false
                }
        }
-       makefile, err := makeMakefile(dir, pkg)
-       if err != nil {
-               return err
+       cmd := []string{"gomake"}
+       var makefile []byte
+       if needMakefile {
+               if makefile, err = makeMakefile(dir, pkg); err != nil {
+                       return err
+               }
+               cmd = append(cmd, "-f-")
+       }
+       if *clean {
+               cmd = append(cmd, "clean")
        }
-       return run(dir, makefile, "gomake", "-f-", "install")
+       cmd = append(cmd, "install")
+       return run(dir, makefile, cmd...)
 }
 
 // makeMakefile computes the standard Makefile for the directory dir