mirror of
https://github.com/beego/bee.git
synced 2024-11-22 10:10:53 +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.
|
// 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
|
||||||
}
|
}
|
||||||
|
4
bee.json
4
bee.json
@ -1,4 +1,8 @@
|
|||||||
{
|
{
|
||||||
|
"version": 0,
|
||||||
|
"gopm": {
|
||||||
|
"enable": false
|
||||||
|
},
|
||||||
"go_install": false,
|
"go_install": false,
|
||||||
"watch_ext": [],
|
"watch_ext": [],
|
||||||
"dir_structure": {
|
"dir_structure": {
|
||||||
|
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
|
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
|
|
||||||
}
|
|
||||||
|
2
util.go
2
util.go
@ -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)
|
||||||
}
|
}
|
||||||
|
9
watch.go
9
watch.go
@ -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()
|
||||||
|
Loading…
Reference in New Issue
Block a user