mirror of
https://github.com/beego/bee.git
synced 2024-12-22 15:10:49 +00:00
Added support for gopm
This commit is contained in:
parent
865272a7f7
commit
a4baa777cb
2
bale.go
2
bale.go
@ -54,7 +54,7 @@ func runBale(cmd *Command, args []string) {
|
||||
|
||||
// Pack and compress data.
|
||||
for _, p := range conf.Bale.Dirs {
|
||||
if !IsExist(p) {
|
||||
if !isExist(p) {
|
||||
ColorLog("[WARN] Skipped directory( %s )\n", p)
|
||||
continue
|
||||
}
|
||||
|
6
bee.json
6
bee.json
@ -1,7 +1,11 @@
|
||||
{
|
||||
"version": 0,
|
||||
"gopm": {
|
||||
"enable": false
|
||||
},
|
||||
"go_install": false,
|
||||
"watch_ext": [],
|
||||
"dir_structure":{
|
||||
"dir_structure": {
|
||||
"controllers": "",
|
||||
"models": "",
|
||||
"others": []
|
||||
|
96
conf.go
Normal file
96
conf.go
Normal 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
64
run.go
@ -15,7 +15,6 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
path "path/filepath"
|
||||
"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() {
|
||||
cmdRun.Run = runApp
|
||||
}
|
||||
|
||||
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) {
|
||||
exit := make(chan bool)
|
||||
@ -96,6 +64,7 @@ func runApp(cmd *Command, args []string) {
|
||||
if err != nil {
|
||||
ColorLog("[ERRO] Fail to parse bee.json[ %s ]\n", err)
|
||||
}
|
||||
|
||||
var paths []string
|
||||
paths = append(paths,
|
||||
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
|
||||
}
|
||||
|
2
util.go
2
util.go
@ -153,7 +153,7 @@ func getColorLevel(level string) string {
|
||||
}
|
||||
|
||||
// IsExist returns whether a file or directory exists.
|
||||
func IsExist(path string) bool {
|
||||
func isExist(path string) bool {
|
||||
_, err := os.Stat(path)
|
||||
return err == nil || os.IsExist(err)
|
||||
}
|
||||
|
9
watch.go
9
watch.go
@ -111,18 +111,23 @@ func Autobuild() {
|
||||
path, _ := os.Getwd()
|
||||
os.Chdir(path)
|
||||
|
||||
cmdName := "go"
|
||||
if conf.Gopm.Enable {
|
||||
cmdName = "gopm"
|
||||
}
|
||||
|
||||
var err error
|
||||
// For applications use full import path like "github.com/.../.."
|
||||
// are able to use "go install" to reduce build time.
|
||||
if conf.GoInstall {
|
||||
icmd := exec.Command("go", "install")
|
||||
icmd := exec.Command(cmdName, "install")
|
||||
icmd.Stdout = os.Stdout
|
||||
icmd.Stderr = os.Stderr
|
||||
err = icmd.Run()
|
||||
}
|
||||
|
||||
if err == nil {
|
||||
bcmd := exec.Command("go", "build")
|
||||
bcmd := exec.Command(cmdName, "build")
|
||||
bcmd.Stdout = os.Stdout
|
||||
bcmd.Stderr = os.Stderr
|
||||
err = bcmd.Run()
|
||||
|
Loading…
Reference in New Issue
Block a user