mirror of
https://github.com/tuna/tunasync.git
synced 2025-04-20 11:42:43 +00:00
feature(cmd): add tunasync command line tool
This commit is contained in:
parent
924fda6dd8
commit
bda7e50d3c
152
cmd/tunasync/tunasync.go
Normal file
152
cmd/tunasync/tunasync.go
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/codegangsta/cli"
|
||||||
|
"gopkg.in/op/go-logging.v1"
|
||||||
|
|
||||||
|
tunasync "github.com/tuna/tunasync/internal"
|
||||||
|
"github.com/tuna/tunasync/manager"
|
||||||
|
"github.com/tuna/tunasync/worker"
|
||||||
|
)
|
||||||
|
|
||||||
|
var logger = logging.MustGetLogger("tunasync-cmd")
|
||||||
|
|
||||||
|
func startManager(c *cli.Context) {
|
||||||
|
tunasync.InitLogger(c.Bool("verbose"), c.Bool("debug"), c.Bool("with-systemd"))
|
||||||
|
|
||||||
|
cfg, err := manager.LoadConfig(c.String("config"), c)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("Error loading config: %s", err.Error())
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
m := manager.GetTUNASyncManager(cfg)
|
||||||
|
if m == nil {
|
||||||
|
logger.Error("Error intializing TUNA sync worker.")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Info("Run tunasync manager server.")
|
||||||
|
m.Run()
|
||||||
|
}
|
||||||
|
|
||||||
|
func startWorker(c *cli.Context) {
|
||||||
|
tunasync.InitLogger(c.Bool("verbose"), c.Bool("debug"), c.Bool("with-systemd"))
|
||||||
|
|
||||||
|
cfg, err := worker.LoadConfig(c.String("config"))
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("Error loading config: %s", err.Error())
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
w := worker.GetTUNASyncWorker(cfg)
|
||||||
|
if w == nil {
|
||||||
|
logger.Error("Error intializing TUNA sync worker.")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Info("Run tunasync worker.")
|
||||||
|
w.Run()
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
app := cli.NewApp()
|
||||||
|
app.EnableBashCompletion = true
|
||||||
|
app.Version = "0.1"
|
||||||
|
app.Commands = []cli.Command{
|
||||||
|
{
|
||||||
|
Name: "manager",
|
||||||
|
Aliases: []string{"m"},
|
||||||
|
Usage: "start the tunasync manager",
|
||||||
|
Action: startManager,
|
||||||
|
Flags: []cli.Flag{
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "config, c",
|
||||||
|
Usage: "Load manager configurations from `FILE`",
|
||||||
|
},
|
||||||
|
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "addr",
|
||||||
|
Usage: "The manager will listen on `ADDR`",
|
||||||
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "port",
|
||||||
|
Usage: "The manager will bind to `PORT`",
|
||||||
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "cert",
|
||||||
|
Usage: "Use SSL certificate from `FILE`",
|
||||||
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "key",
|
||||||
|
Usage: "Use SSL key from `FILE`",
|
||||||
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "status-file",
|
||||||
|
Usage: "Write status file to `FILE`",
|
||||||
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "db-file",
|
||||||
|
Usage: "Use `FILE` as the database file",
|
||||||
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "db-type",
|
||||||
|
Usage: "Use database type `TYPE`",
|
||||||
|
},
|
||||||
|
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "verbose, v",
|
||||||
|
Usage: "Enable verbose logging",
|
||||||
|
},
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "debug",
|
||||||
|
Usage: "Run manager in debug mode",
|
||||||
|
},
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "with-systemd",
|
||||||
|
Usage: "Enable systemd-compatible logging",
|
||||||
|
},
|
||||||
|
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "pidfile",
|
||||||
|
Value: "/run/tunasync/tunasync.manager.pid",
|
||||||
|
Usage: "The pid file of the manager process",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "worker",
|
||||||
|
Aliases: []string{"w"},
|
||||||
|
Usage: "start the tunasync worker",
|
||||||
|
Action: startWorker,
|
||||||
|
Flags: []cli.Flag{
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "config, c",
|
||||||
|
Usage: "Load worker configurations from `FILE`",
|
||||||
|
},
|
||||||
|
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "verbose, v",
|
||||||
|
Usage: "Enable verbose logging",
|
||||||
|
},
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "debug",
|
||||||
|
Usage: "Run manager in debug mode",
|
||||||
|
},
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "with-systemd",
|
||||||
|
Usage: "Enable systemd-compatible logging",
|
||||||
|
},
|
||||||
|
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "pidfile",
|
||||||
|
Value: "/run/tunasync/tunasync.worker.pid",
|
||||||
|
Usage: "The pid file of the worker process",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
app.Run(os.Args)
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user