Small refactor, move config file path detection out of main()
This commit is contained in:
19
main.go
19
main.go
@@ -5,7 +5,6 @@ import (
|
|||||||
"math"
|
"math"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"os/user"
|
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
@@ -40,22 +39,7 @@ func main() {
|
|||||||
err error
|
err error
|
||||||
)
|
)
|
||||||
|
|
||||||
u, err := user.Current()
|
cnf, err = readConf()
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalf("Unable to get user info for current user: %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Для рута и для других пользователей конфиги находятся в разных местах.
|
|
||||||
if u.Uid != "0" || runtime.GOOS == "darwin" {
|
|
||||||
if os.Getenv("HOME") == "" {
|
|
||||||
log.Fatalln("Unable to get HOME environment variable value")
|
|
||||||
}
|
|
||||||
|
|
||||||
cnf, err = readConf(os.Getenv("HOME") + "/.reniced.yaml")
|
|
||||||
} else {
|
|
||||||
cnf, err = readConf("/etc/reniced.yaml")
|
|
||||||
}
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("unable to parse config: %s", err)
|
log.Fatalf("unable to parse config: %s", err)
|
||||||
@@ -200,6 +184,7 @@ func sigHandler() {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Закрываем пул воркеров и освобождаем ресурсы.
|
||||||
pool.StopAndWait()
|
pool.StopAndWait()
|
||||||
|
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
|
|||||||
34
util.go
34
util.go
@@ -4,14 +4,44 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
"os/user"
|
||||||
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
// readConf парсит даденный конфиг в глобальную структуру, с которой работает программа.
|
// readConf вычиляет, от какого пользователя запущен процесс и в зависимости от результата, скармливает readConfFile тот
|
||||||
func readConf(path string) (Config, error) {
|
// или иной путь, по которому предположительно лежит конфиг.
|
||||||
|
func readConf() (Config, error) {
|
||||||
|
var (
|
||||||
|
cnf Config
|
||||||
|
err error
|
||||||
|
)
|
||||||
|
|
||||||
|
u, err := user.Current()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Unable to get user info for current user: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Для рута и для других пользователей конфиги находятся в разных местах.
|
||||||
|
if u.Uid != "0" || runtime.GOOS == "darwin" {
|
||||||
|
if os.Getenv("HOME") == "" {
|
||||||
|
log.Fatalln("Unable to get HOME environment variable value")
|
||||||
|
}
|
||||||
|
|
||||||
|
cnf, err = readConfFile(os.Getenv("HOME") + "/.reniced.yaml")
|
||||||
|
} else {
|
||||||
|
cnf, err = readConfFile("/etc/reniced.yaml")
|
||||||
|
}
|
||||||
|
|
||||||
|
return cnf, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// readConfFile парсит даденный конфиг в глобальную структуру, с которой работает программа.
|
||||||
|
func readConfFile(path string) (Config, error) {
|
||||||
var cfg Config
|
var cfg Config
|
||||||
|
|
||||||
fileInfo, err := os.Stat(path)
|
fileInfo, err := os.Stat(path)
|
||||||
|
|||||||
Reference in New Issue
Block a user