Denmaseno 9 年之前
父節點
當前提交
c87af714e5
共有 5 個文件被更改,包括 51 次插入46 次删除
  1. 5 20
      .gitignore
  2. 2 0
      configure.sh
  3. 4 0
      make.sh
  4. 6 0
      readme.md
  5. 34 26
      src/code.senomas.com/gobuild/main.go

+ 5 - 20
.gitignore

@@ -1,22 +1,7 @@
-# Logs and databases #
-######################
-*.log
-
-# OS generated files #
-######################
-.DS_Store
-.DS_Store?
-ehthumbs.db
-Icon?
-Thumbs.db
-.lock
-backup-config.zip
-
-# DIRS
+storage
+compile-cache
+dev
+.npm
+.node-gyp
 bin
-.idea/workspace.xml
-.metadata
-.recommenders
-.sync
-.settings
 pkg

+ 2 - 0
configure.sh

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

+ 4 - 0
make.sh

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

+ 6 - 0
readme.md

@@ -0,0 +1,6 @@
+# GOBUILD
+
+    gobuild [-u]
+
+    parameters
+      -u force updates 

+ 34 - 26
src/code.senomas.com/gobuild/main.go

@@ -9,23 +9,37 @@ import (
 	"path/filepath"
 	"reflect"
 	"regexp"
+	"strings"
 )
 
 type fexec func(name string, param []string)
 
 var env []string
 
+var params = make(map[string]string)
+
 func main() {
 	var err error
 	var data []byte
 
+	for _, v := range os.Args[1:] {
+		if v == "-u" {
+			params["update"] = "true"
+		}
+	}
+
 	var cd string
 	if cd, err = filepath.Abs("."); err != nil {
 		panic(err)
 	}
-	env = append(os.Environ(), fmt.Sprintf("GOPATH=%s", cd))
+	for _, v := range os.Environ() {
+		if !strings.HasPrefix(v, "GOPATH=") {
+			env = append(env, v)
+		}
+	}
+	env = append(env, fmt.Sprintf("GOPATH=%s", cd))
 
-	if data, err = ioutil.ReadFile("build.yaml"); err != nil {
+	if data, err = ioutil.ReadFile("gobuild.yaml"); err != nil {
 		fmt.Printf("Error reading config\n%+v\n\n", err)
 		os.Exit(1)
 	}
@@ -39,22 +53,28 @@ func main() {
 
 	// fmt.Printf("CONFIG\n%+v\n", cfg)
 
-	buildTask(cfg, "tool", goGet)
+	if params["update"] == "true" {
+		buildTask(cfg, "tool", buildExec, []string{"go", "get", "-u", "-v"})
 
-	buildTask(cfg, "lib", goGet)
+		buildTask(cfg, "lib", buildExec, []string{"go", "get", "-u", "-v"})
+	} else {
+		buildTask(cfg, "tool", buildExec, []string{"go", "get", "-v"})
 
-	buildTask(cfg, "src-pre-build", goSrcPreBuild)
+		buildTask(cfg, "lib", buildExec, []string{"go", "get", "-v"})
+	}
 
-	buildTask(cfg, "install", goInstall)
+	buildTask(cfg, "src-pre-build", buildSrc, nil)
+
+	buildTask(cfg, "install", buildExec, []string{"go", "install", "-v"})
 }
 
-func buildTask(cfg map[interface{}]interface{}, name string, fn fexec) {
+func buildTask(cfg map[interface{}]interface{}, name string, fn fexec, prefix []string) {
 	task, ok := cfg[name]
 	if ok {
 		mv := task.(map[interface{}]interface{})
 		for k, v := range mv {
 			if str, ok := k.(string); ok {
-				process(fn, str, v)
+				process(fn, prefix, str, v)
 			} else {
 				panic(fmt.Sprintf("Error param %+v\n", k))
 			}
@@ -76,19 +96,7 @@ func buildExec(name string, params []string) {
 	fmt.Println()
 }
 
-func goGet(name string, params []string) {
-	buildExec(name, concat([]string{"go", "get", "-v"}, params))
-}
-
-func goBuild(name string, params []string) {
-	buildExec(name, concat([]string{"go", "build", "-v"}, params))
-}
-
-func goInstall(name string, params []string) {
-	buildExec(name, concat([]string{"go", "install", "-v"}, params))
-}
-
-func goSrcPreBuild(name string, params []string) {
+func buildSrc(name string, params []string) {
 	var err error
 	if len(params) != 1 {
 		panic(fmt.Sprintf("Invalid params length %+v", params))
@@ -96,7 +104,7 @@ func goSrcPreBuild(name string, params []string) {
 	filter := filterSrc(regexp.MustCompile(name))
 	var prg string
 	var gc []string
-	for k, v := range RegSplit(params[0], "\\s+") {
+	for k, v := range regSplit(params[0], "\\s+") {
 		if k == 0 {
 			prg = v
 		} else if v == "{}" {
@@ -116,11 +124,11 @@ func goSrcPreBuild(name string, params []string) {
 	fmt.Println()
 }
 
-func process(fn fexec, k string, value interface{}) {
+func process(fn fexec, prefix []string, k string, value interface{}) {
 	var str string
 	var ok bool
 	if str, ok = value.(string); ok {
-		fn(k, []string{str})
+		fn(k, append(prefix, str))
 	} else {
 		tt := reflect.TypeOf(value).Kind().String()
 		if tt == "slice" {
@@ -133,7 +141,7 @@ func process(fn fexec, k string, value interface{}) {
 					panic(fmt.Sprintf("Error param %+v\n", value))
 				}
 			}
-			fn(k, ss)
+			fn(k, concat(prefix, ss))
 		} else {
 			fmt.Printf("Not supported %s\n%+v\n", tt, value)
 			os.Exit(1)
@@ -177,7 +185,7 @@ func filterSrcRec(files *[]string, path, name string, filter *regexp.Regexp) {
 	}
 }
 
-func RegSplit(text string, delimeter string) []string {
+func regSplit(text string, delimeter string) []string {
 	reg := regexp.MustCompile(delimeter)
 	indexes := reg.FindAllStringIndex(text, -1)
 	laststart := 0