101 lines
2.0 KiB
Go
101 lines
2.0 KiB
Go
package config
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"sigs.k8s.io/yaml"
|
|
)
|
|
|
|
type Service struct {
|
|
Address string `json:"address" yaml:"address"`
|
|
Port int64 `json:"port" yaml:"port"`
|
|
}
|
|
|
|
type Database struct {
|
|
Basepath string `json:"basepath" yaml:"basepath"`
|
|
}
|
|
|
|
type Storage struct {
|
|
Basepath string `json:"basepath" yaml:"basepath"`
|
|
}
|
|
|
|
type Config struct {
|
|
Service Service `json:"service" yaml:"service"`
|
|
Database Database `json:"database" yaml:"database"`
|
|
Storage Storage `json:"storage" yaml:"storage"`
|
|
AsDaemon bool `json:"asDaemon" yaml:"asDaemon"`
|
|
Logpath string `json:"logpath" yaml:"logpath"`
|
|
Runpath string `json:"runpath" yaml:"runpath"`
|
|
Version string `json:"version" yaml:"version"`
|
|
}
|
|
|
|
func NewConfig() *Config {
|
|
logfile := fmt.Sprintf("%s.log", srvname)
|
|
logpath := filepath.Join(logdir, logfile)
|
|
|
|
runfile := fmt.Sprintf("%s.run", srvname)
|
|
runpath := filepath.Join(rundir, runfile)
|
|
|
|
return &Config{
|
|
Service: Service{
|
|
Address: "0.0.0.0",
|
|
Port: 1025,
|
|
},
|
|
Database: Database{
|
|
Basepath: datadir,
|
|
},
|
|
Storage: Storage{
|
|
Basepath: datadir,
|
|
},
|
|
AsDaemon: false,
|
|
Logpath: logpath,
|
|
Runpath: runpath,
|
|
Version: version,
|
|
}
|
|
}
|
|
|
|
func (conf *Config) String() string {
|
|
confbytes, _ := yaml.Marshal(conf)
|
|
return string(confbytes)
|
|
}
|
|
|
|
func (conf *Config) ReadConfigfile() error {
|
|
conffile := fmt.Sprintf("%sd.yaml", srvname)
|
|
confpath := filepath.Join(confdir, conffile)
|
|
|
|
confdata, err := ioutil.ReadFile(confpath)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = yaml.Unmarshal(confdata, conf)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return err
|
|
}
|
|
|
|
func (conf *Config) ReadOptions() error {
|
|
var err error
|
|
exename := filepath.Base(os.Args[0])
|
|
|
|
flag.Int64Var(&conf.Service.Port, "port", conf.Service.Port, "listen port")
|
|
flag.BoolVar(&conf.AsDaemon, "daemon", conf.AsDaemon, "run as daemon")
|
|
|
|
help := func() {
|
|
fmt.Println("")
|
|
fmt.Printf("Usage: %s [option]\n", exename)
|
|
fmt.Println("")
|
|
fmt.Println("Options:")
|
|
flag.PrintDefaults()
|
|
fmt.Println("")
|
|
}
|
|
flag.Usage = help
|
|
flag.Parse()
|
|
|
|
return err
|
|
}
|