support save config

master
shengxiang 9 years ago
parent 0b1c5e6b7a
commit c75a3c6561

@ -227,9 +227,10 @@ func init() {
}
var (
GOSUV_HOME = os.ExpandEnv("$HOME/.gosuv")
GOSUV_CONFIG = filepath.Join(GOSUV_HOME, "gosuv.json")
GOSUV_VERSION = "0.0.1"
GOSUV_HOME = os.ExpandEnv("$HOME/.gosuv")
GOSUV_CONFIG = filepath.Join(GOSUV_HOME, "gosuv.json")
GOSUV_PROGRAM_CONFIG = filepath.Join(GOSUV_HOME, "programs.json")
GOSUV_VERSION = "0.0.1"
)
func main() {

@ -1,8 +1,10 @@
package main
import (
"encoding/json"
"errors"
"io"
"io/ioutil"
"os"
"os/exec"
"path/filepath"
@ -103,7 +105,7 @@ type ProgramInfo struct {
var programTable *ProgramTable
func init() {
func InitServer() {
programTable = &ProgramTable{
table: make(map[string]*Program, 10),
ch: make(chan string),
@ -120,6 +122,23 @@ var (
ErrProgramDuplicate = errors.New("program duplicate")
)
func (pt *ProgramTable) saveConfig() error {
if _, err := os.Stat(GOSUV_PROGRAM_CONFIG); err == nil {
// load config
}
table := make(map[string]*ProgramInfo)
for name, p := range pt.table {
table[name] = p.Info
}
cfgFd, err := os.Create(GOSUV_PROGRAM_CONFIG)
if err != nil {
return err
}
defer cfgFd.Close()
data, _ := json.MarshalIndent(table, "", " ")
return ioutil.WriteFile(GOSUV_PROGRAM_CONFIG, data, 0644)
}
func (pt *ProgramTable) AddProgram(p *Program) error {
pt.mu.Lock()
defer pt.mu.Unlock()
@ -128,6 +147,7 @@ func (pt *ProgramTable) AddProgram(p *Program) error {
return ErrProgramDuplicate
}
pt.table[name] = p
pt.saveConfig()
return nil
}

@ -91,6 +91,7 @@ func shutdownHandler(w http.ResponseWriter, r *http.Request) {
}
func ServeAddr(host string, port int) error {
InitServer()
r := mux.NewRouter()
r.HandleFunc("/api/version", versionHandler)
r.Methods("POST").Path("/api/shutdown").HandlerFunc(shutdownHandler)

Loading…
Cancel
Save