mirror of
https://github.com/tuna/tunasync.git
synced 2025-04-20 11:42:43 +00:00
feature(cmd): add default config files for tunasynctl
This commit is contained in:
parent
56459f2ce0
commit
2ea22ec1ae
@ -19,7 +19,7 @@ func startManager(c *cli.Context) {
|
|||||||
|
|
||||||
cfg, err := manager.LoadConfig(c.String("config"), c)
|
cfg, err := manager.LoadConfig(c.String("config"), c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("Error loading config: %s", err.Error())
|
logger.Errorf("Error loading config: %s", err.Error())
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
if !cfg.Debug {
|
if !cfg.Debug {
|
||||||
@ -28,7 +28,7 @@ func startManager(c *cli.Context) {
|
|||||||
|
|
||||||
m := manager.GetTUNASyncManager(cfg)
|
m := manager.GetTUNASyncManager(cfg)
|
||||||
if m == nil {
|
if m == nil {
|
||||||
logger.Error("Error intializing TUNA sync worker.")
|
logger.Errorf("Error intializing TUNA sync worker.")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,13 +44,13 @@ func startWorker(c *cli.Context) {
|
|||||||
|
|
||||||
cfg, err := worker.LoadConfig(c.String("config"))
|
cfg, err := worker.LoadConfig(c.String("config"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("Error loading config: %s", err.Error())
|
logger.Errorf("Error loading config: %s", err.Error())
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
w := worker.GetTUNASyncWorker(cfg)
|
w := worker.GetTUNASyncWorker(cfg)
|
||||||
if w == nil {
|
if w == nil {
|
||||||
logger.Error("Error intializing TUNA sync worker.")
|
logger.Errorf("Error intializing TUNA sync worker.")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/BurntSushi/toml"
|
||||||
"github.com/codegangsta/cli"
|
"github.com/codegangsta/cli"
|
||||||
"gopkg.in/op/go-logging.v1"
|
"gopkg.in/op/go-logging.v1"
|
||||||
|
|
||||||
@ -18,6 +19,9 @@ const (
|
|||||||
listJobsPath = "/jobs"
|
listJobsPath = "/jobs"
|
||||||
listWorkersPath = "/workers"
|
listWorkersPath = "/workers"
|
||||||
cmdPath = "/cmd"
|
cmdPath = "/cmd"
|
||||||
|
|
||||||
|
systemCfgFile = "/etc/tunasync/ctl.conf"
|
||||||
|
userCfgFile = "$HOME/.config/tunasync/ctl.conf"
|
||||||
)
|
)
|
||||||
|
|
||||||
var logger = logging.MustGetLogger("tunasynctl-cmd")
|
var logger = logging.MustGetLogger("tunasynctl-cmd")
|
||||||
@ -35,29 +39,65 @@ func initializeWrapper(handler func(*cli.Context)) func(*cli.Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type config struct {
|
||||||
|
ManagerAddr string `toml:"manager_addr"`
|
||||||
|
ManagerPort int `toml:"manager_port"`
|
||||||
|
CACert string `toml:"ca_cert"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func loadConfig(cfgFile string, c *cli.Context) (*config, error) {
|
||||||
|
cfg := new(config)
|
||||||
|
cfg.ManagerAddr = "localhost"
|
||||||
|
cfg.ManagerPort = 14242
|
||||||
|
|
||||||
|
if cfgFile != "" {
|
||||||
|
if _, err := toml.DecodeFile(cfgFile, cfg); err != nil {
|
||||||
|
logger.Errorf(err.Error())
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if c.String("manager") != "" {
|
||||||
|
cfg.ManagerAddr = c.String("manager")
|
||||||
|
}
|
||||||
|
if c.Int("port") > 0 {
|
||||||
|
cfg.ManagerPort = c.Int("port")
|
||||||
|
}
|
||||||
|
|
||||||
|
if c.String("ca-cert") != "" {
|
||||||
|
cfg.CACert = c.String("ca-cert")
|
||||||
|
}
|
||||||
|
return cfg, nil
|
||||||
|
}
|
||||||
|
|
||||||
func initialize(c *cli.Context) error {
|
func initialize(c *cli.Context) error {
|
||||||
// init logger
|
// init logger
|
||||||
tunasync.InitLogger(c.Bool("verbose"), c.Bool("verbose"), false)
|
tunasync.InitLogger(c.Bool("verbose"), c.Bool("verbose"), false)
|
||||||
|
var cfgFile string
|
||||||
|
|
||||||
// parse manager server address
|
// choose config file and load config
|
||||||
baseURL = c.String("manager")
|
if c.String("config") != "" {
|
||||||
if baseURL == "" {
|
cfgFile = c.String("config")
|
||||||
baseURL = "localhost"
|
} else if _, err := os.Stat(os.ExpandEnv(userCfgFile)); err == nil {
|
||||||
|
cfgFile = os.ExpandEnv(userCfgFile)
|
||||||
|
} else if _, err := os.Stat(systemCfgFile); err == nil {
|
||||||
|
cfgFile = systemCfgFile
|
||||||
}
|
}
|
||||||
managerPort := c.String("port")
|
cfg, err := loadConfig(cfgFile, c)
|
||||||
if managerPort != "" {
|
|
||||||
baseURL += ":" + managerPort
|
if err != nil {
|
||||||
}
|
logger.Errorf("Load configuration for tunasynctl error: %s", err.Error())
|
||||||
if c.Bool("no-ssl") {
|
return err
|
||||||
baseURL = "http://" + baseURL
|
|
||||||
} else {
|
|
||||||
baseURL = "https://" + baseURL
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// parse base url of the manager server
|
||||||
|
baseURL = fmt.Sprintf("https://%s:%d",
|
||||||
|
cfg.ManagerAddr, cfg.ManagerPort)
|
||||||
|
|
||||||
logger.Infof("Use manager address: %s", baseURL)
|
logger.Infof("Use manager address: %s", baseURL)
|
||||||
|
|
||||||
// create HTTP client
|
// create HTTP client
|
||||||
var err error
|
client, err = tunasync.CreateHTTPClient(cfg.CACert)
|
||||||
client, err = tunasync.CreateHTTPClient(c.String("ca-cert"))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = fmt.Errorf("Error initializing HTTP client: %s", err.Error())
|
err = fmt.Errorf("Error initializing HTTP client: %s", err.Error())
|
||||||
logger.Error(err.Error())
|
logger.Error(err.Error())
|
||||||
@ -169,6 +209,11 @@ func main() {
|
|||||||
app.Version = "0.1"
|
app.Version = "0.1"
|
||||||
|
|
||||||
commonFlags := []cli.Flag{
|
commonFlags := []cli.Flag{
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "config, c",
|
||||||
|
Usage: "Read configuration from `FILE` rather than" +
|
||||||
|
" ~/.config/tunasync/ctl.conf and /etc/tunasync/ctl.conf",
|
||||||
|
},
|
||||||
cli.StringFlag{
|
cli.StringFlag{
|
||||||
Name: "manager, m",
|
Name: "manager, m",
|
||||||
Usage: "The manager server address",
|
Usage: "The manager server address",
|
||||||
@ -178,14 +223,10 @@ func main() {
|
|||||||
Usage: "The manager server port",
|
Usage: "The manager server port",
|
||||||
},
|
},
|
||||||
cli.StringFlag{
|
cli.StringFlag{
|
||||||
Name: "ca-cert, c",
|
Name: "ca-cert",
|
||||||
Usage: "Trust CA cert `CERT`",
|
Usage: "Trust root CA cert file `CERT`",
|
||||||
},
|
},
|
||||||
|
|
||||||
cli.BoolFlag{
|
|
||||||
Name: "no-ssl",
|
|
||||||
Usage: "Use http rather than https",
|
|
||||||
},
|
|
||||||
cli.BoolFlag{
|
cli.BoolFlag{
|
||||||
Name: "verbose, v",
|
Name: "verbose, v",
|
||||||
Usage: "Enable verbosely logging",
|
Usage: "Enable verbosely logging",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user