/
main.go
67 lines (56 loc) · 1.71 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package main
import (
"github.com/Jamesits/serial/internal/cmd/list"
"github.com/Jamesits/serial/internal/cmd/open"
"github.com/Jamesits/serial/internal/cmd/root"
"github.com/Jamesits/serial/internal/cmd/version"
"github.com/Jamesits/serial/pkg/logging"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"os"
)
func main() {
defer quitHook()
logging.InitGlobalLogger(quitHook)
log.Traceln("init cobra")
cobra.OnInitialize(initCobraConfig)
root.CommandDefinition.SilenceErrors = true
log.Traceln("init subcommands")
root.CommandDefinition.AddCommand(version.CommandDefinition)
root.CommandDefinition.AddCommand(list.CommandDefinition)
root.CommandDefinition.AddCommand(open.CommandDefinition)
log.Traceln("cobra entry")
if err := root.CommandDefinition.Execute(); err != nil {
//log.WithError(err).Errorln("error")
os.Exit(1)
}
}
// quitHook runs when the whole program is quitting
func quitHook() {
log.Traceln("quitHook() start")
}
func initCobraConfig() {
if root.UserConfigFilePath != "" {
// Use config file from the flag.
log.Traceln("read user-supplied config file")
viper.SetConfigFile(root.UserConfigFilePath)
} else {
log.Traceln("read default config file")
// Find home directory.
home, err := os.UserHomeDir()
cobra.CheckErr(err)
// Search config in home directory with name ".cobra" (without extension).
viper.AddConfigPath(home)
viper.SetConfigType("toml")
viper.SetConfigName(".serial")
}
log.Traceln("init viper")
viper.AutomaticEnv()
log.Traceln("viper read config")
if err := viper.ReadInConfig(); err == nil {
log.Traceln("using config file:", viper.ConfigFileUsed())
} else {
log.Traceln("config file parsing failed")
}
}