10666: Added version number to go sdk and go tools & services
[arvados.git] / services / ws / main.go
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 package main
6
7 import (
8         "flag"
9         "fmt"
10         "os"
11
12         "git.curoverse.com/arvados.git/sdk/go/config"
13         "git.curoverse.com/arvados.git/sdk/go/ctxlog"
14         arvadosVersion "git.curoverse.com/arvados.git/sdk/go/version"
15 )
16
17 var logger = ctxlog.FromContext
18
19 func main() {
20         log := logger(nil)
21
22         configPath := flag.String("config", "/etc/arvados/ws/ws.yml", "`path` to config file")
23         dumpConfig := flag.Bool("dump-config", false, "show current configuration and exit")
24         getVersion := flag.Bool("version", false, "Print version information and exit.")
25         cfg := defaultConfig()
26         flag.Parse()
27
28         // Print version information if requested
29         if *getVersion {
30                 fmt.Printf("Version: %s\n", arvadosVersion.GetVersion())
31                 os.Exit(0)
32         }
33
34         err := config.LoadFile(&cfg, *configPath)
35         if err != nil {
36                 log.Fatal(err)
37         }
38
39         ctxlog.SetLevel(cfg.LogLevel)
40         ctxlog.SetFormat(cfg.LogFormat)
41
42         if *dumpConfig {
43                 txt, err := config.Dump(&cfg)
44                 if err != nil {
45                         log.Fatal(err)
46                 }
47                 fmt.Print(string(txt))
48                 return
49         }
50
51         log.Printf("arvados-ws %q started", arvadosVersion.GetVersion())
52
53         log.Info("started")
54         srv := &server{wsConfig: &cfg}
55         log.Fatal(srv.Run())
56 }