From 661a1f7dc397e5fa5821eae2bf732a4d2605a74a Mon Sep 17 00:00:00 2001 From: shengxiang Date: Mon, 7 Sep 2015 22:45:33 +0800 Subject: [PATCH] update config file --- README.md | 9 +++++++++ config.go | 16 +++++++++++++--- gosuv.go | 4 +--- gosuvrc | 2 +- program.go | 15 +++++++++++++-- 5 files changed, 37 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 7ff1f80..e6c0c97 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,15 @@ Go version at least `1.4` # see more usage $ gosuv help +# Config +Config file load order `$HOME/.gosuvrc` `$PWD/gosuvrc` + +config example + + [server] + web-addr = 0.0.0.0:9090 + rpc-addr = 127.0.0.1:54637 + # Plugin Design All command plugin will store in `$HOME/.gosuv/cmdplugin`, gosuv will treat this plugin as a subcommand. diff --git a/config.go b/config.go index 8f0df95..e7a7a32 100644 --- a/config.go +++ b/config.go @@ -1,6 +1,11 @@ package main -import "gopkg.in/gcfg.v1" +import ( + "os" + + "github.com/qiniu/log" + "gopkg.in/gcfg.v1" +) type RCServer struct { WebAddr string `gcfg:"web-addr"` @@ -20,6 +25,11 @@ func loadRConfig() (err error) { // set default values rcfg.Server.RpcAddr = "127.0.0.1:54637" rcfg.Server.WebAddr = "127.0.0.1:54000" - err = gcfg.ReadFileInto(rcfg, "gosuvrc") - return + + for _, file := range []string{"$HOME/.gosuvrc", "./gosuvrc"} { + err = gcfg.ReadFileInto(rcfg, os.ExpandEnv(file)) + _ = err // ignore err + } + log.Debugf("rcfg: %#v", rcfg) + return nil } diff --git a/gosuv.go b/gosuv.go index 5ef784a..fc5e748 100644 --- a/gosuv.go +++ b/gosuv.go @@ -338,9 +338,7 @@ var ( func main() { MkdirIfNoExists(GOSUV_HOME) - if err := loadRConfig(); err != nil { - log.Fatal(err) - } + loadRConfig() initCli() app.HideHelp = false diff --git a/gosuvrc b/gosuvrc index 68cd4eb..68d00cc 100644 --- a/gosuvrc +++ b/gosuvrc @@ -1,3 +1,3 @@ [server] web-addr = 0.0.0.0:9090 -rpc-addr = 127.0.0.1:54637 \ No newline at end of file +rpc-addr = 127.0.0.1:54637 diff --git a/program.go b/program.go index c32a636..14c622c 100644 --- a/program.go +++ b/program.go @@ -8,6 +8,7 @@ import ( "os" "os/exec" "path/filepath" + "sort" "sync" "syscall" "time" @@ -258,9 +259,19 @@ func (pt *ProgramTable) Programs() []*Program { pt.mu.Lock() defer pt.mu.Unlock() ps := make([]*Program, 0, len(pt.table)) - for _, p := range pt.table { - ps = append(ps, p) + names := []string{} + for name, _ := range pt.table { + names = append(names, name) } + // log.Println(names) + sort.Strings(names) + // log.Println(names) + for _, name := range names { + ps = append(ps, pt.table[name]) + } + // for _, p := range pt.table { + // ps = append(ps, p) + // } return ps }