diff options
Diffstat (limited to 'cmd/tube')
| -rw-r--r-- | cmd/tube/main.go | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/cmd/tube/main.go b/cmd/tube/main.go new file mode 100644 index 0000000..cc3bfd2 --- /dev/null +++ b/cmd/tube/main.go @@ -0,0 +1,65 @@ +package main + +import ( + "fmt" + "os" + + log "github.com/sirupsen/logrus" + flag "github.com/spf13/pflag" + + "git.mills.io/prologic/tube" + "git.mills.io/prologic/tube/app" +) + +var ( + debug bool + version bool + config string +) + +func init() { + flag.Usage = func() { + fmt.Fprintf(os.Stderr, "Usage: %s [options] [file]\n", os.Args[0]) + flag.PrintDefaults() + } + + flag.BoolVarP(&version, "version", "v", false, "display version information") + flag.BoolVarP(&debug, "debug", "d", false, "enable debug logging") + flag.StringVarP(&config, "config", "c", "config.json", "path to configuration file") +} + +func main() { + flag.Parse() + + if debug { + log.SetLevel(log.DebugLevel) + } else { + log.SetLevel(log.InfoLevel) + } + + if version { + fmt.Printf("tube version %s", tube.FullVersion()) + os.Exit(0) + } + + cfg := app.DefaultConfig() + log.Infof("Reading configuration from %s", config) + err := cfg.ReadFile(config) + if err != nil { + if flag.Lookup("config").Changed { + log.Fatal(err) + } + log.Infof("Reading %s failed. Starting with builtin defaults.", config) + } + // I'd like to add something like this here: log.Debug("Active config: %s", cfg.toJson()) + a, err := app.NewApp(cfg) + if err != nil { + log.Fatal(err) + } + addr := fmt.Sprintf("%s:%d", cfg.Server.Host, cfg.Server.Port) + log.Printf("Local server: http://%s", addr) + err = a.Run() + if err != nil { + log.Fatal(err) + } +} |
