package main import ( "fmt" "os" "git.mills.io/prologic/tube/app" log "github.com/sirupsen/logrus" flag "github.com/spf13/pflag" ) 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", 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) } }