10666: Replaced 'version' package with 'version' var
[arvados.git] / services / ws / main.go
index 0f978231b9658068bd8351a582c4328d3383e1e0..df462eafc2859e6d8aa071dbe851737cf3be2037 100644 (file)
@@ -1,30 +1,43 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
 package main
 
 import (
        "flag"
        "fmt"
-       "log"
-       "net/http"
-       "time"
+       "os"
 
        "git.curoverse.com/arvados.git/sdk/go/config"
+       "git.curoverse.com/arvados.git/sdk/go/ctxlog"
 )
 
-var debugLogf = func(string, ...interface{}) {}
+var logger = ctxlog.FromContext
+var version = "dev"
 
 func main() {
+       log := logger(nil)
+
        configPath := flag.String("config", "/etc/arvados/ws/ws.yml", "`path` to config file")
        dumpConfig := flag.Bool("dump-config", false, "show current configuration and exit")
-       cfg := DefaultConfig()
+       getVersion := flag.Bool("version", false, "Print version information and exit.")
+       cfg := defaultConfig()
        flag.Parse()
 
+       // Print version information if requested
+       if *getVersion {
+               fmt.Printf("Version: %s\n", version)
+               os.Exit(0)
+       }
+
        err := config.LoadFile(&cfg, *configPath)
        if err != nil {
                log.Fatal(err)
        }
-       if cfg.Debug {
-               debugLogf = log.Printf
-       }
+
+       ctxlog.SetLevel(cfg.LogLevel)
+       ctxlog.SetFormat(cfg.LogFormat)
 
        if *dumpConfig {
                txt, err := config.Dump(&cfg)
@@ -35,18 +48,9 @@ func main() {
                return
        }
 
-       srv := &http.Server{
-               Addr:           cfg.Listen,
-               ReadTimeout:    time.Minute,
-               WriteTimeout:   time.Minute,
-               MaxHeaderBytes: 1 << 20,
-               Handler: &router{
-                       Config: &cfg,
-                       eventSource: &pgEventSource{
-                               PgConfig:  cfg.Postgres,
-                               QueueSize: cfg.ServerEventQueue,
-                       },
-               },
-       }
-       log.Fatal(srv.ListenAndServe())
+       log.Printf("arvados-ws %q started", version)
+
+       log.Info("started")
+       srv := &server{wsConfig: &cfg}
+       log.Fatal(srv.Run())
 }