summaryrefslogtreecommitdiff
path: root/cmd/tube/main.go
diff options
context:
space:
mode:
authorJames Mills <1290234+prologic@users.noreply.github.com>2023-01-21 11:25:30 +1000
committerJames Mills <1290234+prologic@users.noreply.github.com>2023-01-21 11:25:30 +1000
commit07d888c2c60d727dab49aa8dbc905cb3ccedd7aa (patch)
treeb82546830b36630eab15007a3da03342fca2dbf9 /cmd/tube/main.go
parentc727404d9156861dc40a657b3599da36ed0bae62 (diff)
Fix build and versioning (borrowed from yarn)
Diffstat (limited to 'cmd/tube/main.go')
-rw-r--r--cmd/tube/main.go65
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)
+ }
+}