1
0
mirror of https://github.com/beego/bee.git synced 2024-11-22 05:00:54 +00:00

Added support for gopm

This commit is contained in:
Unknown 2013-11-03 22:16:15 -05:00
parent 865272a7f7
commit a4baa777cb
6 changed files with 111 additions and 68 deletions

View File

@ -54,7 +54,7 @@ func runBale(cmd *Command, args []string) {
// Pack and compress data. // Pack and compress data.
for _, p := range conf.Bale.Dirs { for _, p := range conf.Bale.Dirs {
if !IsExist(p) { if !isExist(p) {
ColorLog("[WARN] Skipped directory( %s )\n", p) ColorLog("[WARN] Skipped directory( %s )\n", p)
continue continue
} }

View File

@ -1,7 +1,11 @@
{ {
"version": 0,
"gopm": {
"enable": false
},
"go_install": false, "go_install": false,
"watch_ext": [], "watch_ext": [],
"dir_structure":{ "dir_structure": {
"controllers": "", "controllers": "",
"models": "", "models": "",
"others": [] "others": []

96
conf.go Normal file
View File

@ -0,0 +1,96 @@
// Copyright 2013 bee authors
//
// Licensed under the Apache License, Version 2.0 (the "License"): you may
// not use this file except in compliance with the License. You may obtain
// a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations
// under the License.
package main
import (
"encoding/json"
"os"
)
const CONF_VER = 0
var defaultConf = `{
"version": 0,
"gopm": {
"enable": false,
},
"go_install": false,
"watch_ext": [],
"dir_structure":{
"controllers": "",
"models": "",
"others": []
}
}
`
var conf struct {
Version int
// gopm support
Gopm struct {
Enable bool
}
// Indicates whether execute "go install" before "go build".
GoInstall bool `json:"go_install"`
WatchExt []string `json:"watch_ext"`
DirStruct struct {
Controllers string
Models string
Others []string // Other directories.
} `json:"dir_structure"`
Bale struct {
Import string
Dirs []string
IngExt []string `json:"ignore_ext"`
}
}
// loadConfig loads customized configuration.
func loadConfig() error {
f, err := os.Open("bee.json")
if err != nil {
// Use default.
err = json.Unmarshal([]byte(defaultConf), &conf)
if err != nil {
return err
}
} else {
defer f.Close()
ColorLog("[INFO] Detected bee.json\n")
d := json.NewDecoder(f)
err = d.Decode(&conf)
if err != nil {
return err
}
}
// Check format version.
if conf.Version != CONF_VER {
ColorLog("[WARN] Your bee.json is out-of-date, please update!\n")
ColorLog("[HINT] Compare bee.json under bee source code path and yours\n")
}
// Set variables.
if len(conf.DirStruct.Controllers) == 0 {
conf.DirStruct.Controllers = "controllers"
}
if len(conf.DirStruct.Models) == 0 {
conf.DirStruct.Models = "models"
}
// Append watch exts.
watchExts = append(watchExts, conf.WatchExt...)
return nil
}

64
run.go
View File

@ -15,7 +15,6 @@
package main package main
import ( import (
"encoding/json"
"os" "os"
path "path/filepath" path "path/filepath"
"runtime" "runtime"
@ -44,42 +43,11 @@ when the file has changed bee will auto go build and restart the app
`, `,
} }
var defaultJson = `
{
"go_install": false,
"dir_structure":{
"controllers": "",
"models": "",
"others": []
},
"main_files":{
"main.go": "",
"others": []
}
}
`
func init() { func init() {
cmdRun.Run = runApp cmdRun.Run = runApp
} }
var appname string var appname string
var conf struct {
// Indicates whether execute "go install" before "go build".
GoInstall bool `json:"go_install"`
WatchExt []string `json:"watch_ext"`
DirStruct struct {
Controllers string
Models string
Others []string // Other directories.
} `json:"dir_structure"`
Bale struct {
Import string
Dirs []string
IngExt []string `json:"ignore_ext"`
}
}
func runApp(cmd *Command, args []string) { func runApp(cmd *Command, args []string) {
exit := make(chan bool) exit := make(chan bool)
@ -96,6 +64,7 @@ func runApp(cmd *Command, args []string) {
if err != nil { if err != nil {
ColorLog("[ERRO] Fail to parse bee.json[ %s ]\n", err) ColorLog("[ERRO] Fail to parse bee.json[ %s ]\n", err)
} }
var paths []string var paths []string
paths = append(paths, paths = append(paths,
path.Join(crupath, conf.DirStruct.Controllers), path.Join(crupath, conf.DirStruct.Controllers),
@ -122,34 +91,3 @@ func runApp(cmd *Command, args []string) {
} }
} }
} }
// loadConfig loads customized configuration.
func loadConfig() error {
f, err := os.Open("bee.json")
if err != nil {
// Use default.
err = json.Unmarshal([]byte(defaultJson), &conf)
if err != nil {
return err
}
} else {
defer f.Close()
ColorLog("[INFO] Detected bee.json\n")
d := json.NewDecoder(f)
err = d.Decode(&conf)
if err != nil {
return err
}
}
// Set variables.
if len(conf.DirStruct.Controllers) == 0 {
conf.DirStruct.Controllers = "controllers"
}
if len(conf.DirStruct.Models) == 0 {
conf.DirStruct.Models = "models"
}
// Append watch exts.
watchExts = append(watchExts, conf.WatchExt...)
return nil
}

View File

@ -153,7 +153,7 @@ func getColorLevel(level string) string {
} }
// IsExist returns whether a file or directory exists. // IsExist returns whether a file or directory exists.
func IsExist(path string) bool { func isExist(path string) bool {
_, err := os.Stat(path) _, err := os.Stat(path)
return err == nil || os.IsExist(err) return err == nil || os.IsExist(err)
} }

View File

@ -111,18 +111,23 @@ func Autobuild() {
path, _ := os.Getwd() path, _ := os.Getwd()
os.Chdir(path) os.Chdir(path)
cmdName := "go"
if conf.Gopm.Enable {
cmdName = "gopm"
}
var err error var err error
// For applications use full import path like "github.com/.../.." // For applications use full import path like "github.com/.../.."
// are able to use "go install" to reduce build time. // are able to use "go install" to reduce build time.
if conf.GoInstall { if conf.GoInstall {
icmd := exec.Command("go", "install") icmd := exec.Command(cmdName, "install")
icmd.Stdout = os.Stdout icmd.Stdout = os.Stdout
icmd.Stderr = os.Stderr icmd.Stderr = os.Stderr
err = icmd.Run() err = icmd.Run()
} }
if err == nil { if err == nil {
bcmd := exec.Command("go", "build") bcmd := exec.Command(cmdName, "build")
bcmd.Stdout = os.Stdout bcmd.Stdout = os.Stdout
bcmd.Stderr = os.Stderr bcmd.Stderr = os.Stderr
err = bcmd.Run() err = bcmd.Run()