Files
kor-elf-shield/main.go

76 lines
1.7 KiB
Go

package main
import (
"fmt"
"os"
"runtime"
"strings"
"time"
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/cmd"
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/i18n"
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/setting"
"golang.org/x/sys/unix"
)
// these flags will be set by the build flags
var (
Version = "development" // program version for this build
MakeVersion = "" // "make" program version if built with make
ConfigPath = "/etc/kor-elf-shield/kor-elf-shield.toml"
)
func init() {
// Shell umask(0177)
unix.Umask(0o177)
setting.AppVer = Version
setting.AppBuiltWith = formatBuiltWith()
setting.AppStartTime = time.Now().UTC()
}
func main() {
var err error
configPath := findConfigPath(os.Args[1:])
err = setting.InitSetting(configPath)
if err != nil {
fmt.Printf("\033[31m%s\033[0m\n", err.Error())
os.Exit(1)
}
err = i18n.InitLang(setting.Config.FallbackLanguage)
if err != nil {
fmt.Printf("\033[31m%s\033[0m\n", err.Error())
os.Exit(1)
}
err = i18n.Lang.ChangeLang(setting.Config.Language)
if err != nil {
fmt.Printf("\033[31m%s\033[0m\n", err.Error())
os.Exit(1)
}
app := cmd.NewMainApp(cmd.AppVersion{Version: Version, Extra: formatBuiltWith()}, ConfigPath)
_ = cmd.RunMainApp(app, os.Args...) // all errors should have been handled by the RunMainApp
}
func formatBuiltWith() string {
version := runtime.Version()
if len(MakeVersion) > 0 {
version = MakeVersion + ", " + runtime.Version()
}
return " built with " + version
}
func findConfigPath(args []string) string {
for _, arg := range args {
if strings.HasPrefix(arg, "--config=") {
return strings.TrimPrefix(arg, "--config=")
}
}
return ConfigPath
}