76 lines
1.7 KiB
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
|
|
}
|