Denmaseno 9 years ago
parent
commit
94c93dea8a
5 changed files with 80 additions and 1 deletions
  1. 1 0
      configure.sh
  2. 0 0
      gobuild.yaml
  3. 2 1
      make.sh
  4. 4 0
      src/code.senomas.com/gobuild/main.go
  5. 73 0
      src/code.senomas.com/gox/main.go

+ 1 - 0
configure.sh

@@ -1,2 +1,3 @@
 #!/bin/bash
 export GOPATH=~/workspace/gobuild
+echo GOPATH=$GOPATH

+ 0 - 0
gobuild.yaml


+ 2 - 1
make.sh

@@ -1,4 +1,5 @@
 #!/bin/bash
 GOPATH=/Users/seno/workspace/gobuild
-go install -v code.senomas.com/gobuild
+go install -v code.senomas.com/gobuild code.senomas.com/gox
 cp bin/gobuild /usr/local/bin/
+cp bin/gox /usr/local/bin/

+ 4 - 0
src/code.senomas.com/gobuild/main.go

@@ -65,7 +65,11 @@ func main() {
 
 	buildTask(cfg, "src-pre-build", buildSrc, nil)
 
+	buildTask(cfg, "build", buildExec, []string{"go", "build", "-v"})
+
 	buildTask(cfg, "install", buildExec, []string{"go", "install", "-v"})
+
+	buildTask(cfg, "test", buildExec, []string{"go", "test", "-v"})
 }
 
 func buildTask(cfg map[interface{}]interface{}, name string, fn fexec, prefix []string) {

+ 73 - 0
src/code.senomas.com/gox/main.go

@@ -0,0 +1,73 @@
+package main
+
+import (
+	"fmt"
+	"os"
+	"os/exec"
+	"path/filepath"
+	"strings"
+)
+
+func main() {
+	var env []string
+	var err error
+
+	f, err := os.OpenFile("/Users/seno/Temp/gox.log", os.O_APPEND|os.O_WRONLY, 0600)
+	if err != nil {
+		panic(err)
+	}
+
+	defer f.Close()
+
+	for _, s := range os.Args {
+		if _, err = f.WriteString(s); err != nil {
+			panic(err)
+		}
+		if _, err = f.WriteString(" "); err != nil {
+			panic(err)
+		}
+	}
+	if _, err = f.WriteString("\n"); err != nil {
+		panic(err)
+	}
+
+	var path = baseDir()
+
+	for _, v := range os.Environ() {
+		if !strings.HasPrefix(v, "GOPATH=") {
+			env = append(env, v)
+		}
+	}
+	env = append(env, fmt.Sprintf("GOPATH=%s", path))
+
+	cmd := exec.Command("go", os.Args[1:]...)
+	cmd.Env = env
+	cmd.Stdin = os.Stdin
+	cmd.Stdout = os.Stdout
+	cmd.Stderr = os.Stderr
+	if err = cmd.Run(); err != nil {
+		os.Exit(1)
+	}
+	fmt.Println()
+}
+
+func baseDir() string {
+	var err error
+	var path string
+	if path, err = filepath.Abs("."); err != nil {
+		panic(err)
+	}
+	return baseDirRec(path)
+}
+
+func baseDirRec(path string) string {
+	var err error
+	if _, err = os.Stat(path + "/gobuild.yaml"); os.IsNotExist(err) {
+		path = filepath.Dir(path)
+		if "." == path {
+			panic("No gobuild.yaml found!")
+		}
+		return baseDirRec(path)
+	}
+	return path
+}