initial import

This commit is contained in:
Олег Бородин
2023-10-20 13:43:23 +02:00
commit b1daca98b5
32 changed files with 11403 additions and 0 deletions

105
internal/config/config.go Normal file
View File

@@ -0,0 +1,105 @@
package config
import (
"flag"
"fmt"
"os"
"path/filepath"
"github.com/go-yaml/yaml"
)
const (
defaultPort int = 9501
defaultHostname = "localhost"
)
var (
defaultBuild = "NODATE"
)
type ServiceConfig struct {
PortNum int `json:"port" yaml:"port"`
}
type Config struct {
Service ServiceConfig `json:"service" yaml:"service"`
Hostname string `json:"hostname" yaml:"hostname"`
Debug bool `json:"debug" yaml:"debug"`
Build string `json:"build" yaml:"build"`
LogPath string `json:"logfile" yaml:"logfile"`
RunPath string `json:"runfile" yaml:"runfile"`
DataPath string `json:"datadir" yaml:"datadir"`
Daemon bool `json:"daemon" yaml:"daemon"`
}
func NewConfig() *Config {
conf := &Config{
Service: ServiceConfig{
PortNum: defaultPort,
},
Debug: false,
Hostname: defaultHostname,
Build: defaultBuild,
DataPath: datadirPath,
}
exeName := filepath.Base(os.Args[0])
conf.LogPath = filepath.Join(logdirPath, fmt.Sprintf("%s.log", exeName))
conf.RunPath = filepath.Join(rundirPath, fmt.Sprintf("%s.pid", exeName))
return conf
}
func (conf *Config) ReadFile() error {
var err error
exeName := filepath.Base(os.Args[0])
configPath := filepath.Join(confdirPath, fmt.Sprintf("%s.yaml", exeName))
confBytes, err := os.ReadFile(configPath)
if err != nil {
return err
}
err = yaml.Unmarshal(confBytes, conf)
if err != nil {
return err
}
return err
}
func (conf *Config) ReadEnv() error {
var err error
return err
}
func (conf *Config) ReadOpts() error {
var err error
exeName := filepath.Base(os.Args[0])
flag.IntVar(&conf.Service.PortNum, "port", conf.Service.PortNum, "listen port")
flag.BoolVar(&conf.Daemon, "daemon", conf.Daemon, "run as daemon")
flag.BoolVar(&conf.Debug, "debug", conf.Debug, "on debug mode")
help := func() {
fmt.Println("")
fmt.Printf("Usage: %s [option]\n", exeName)
fmt.Println("")
fmt.Println("Options:")
flag.PrintDefaults()
fmt.Println("")
}
flag.Usage = help
flag.Parse()
return err
}
func (conf *Config) Yaml() (string, error) {
var err error
var res string
yamlBytes, err := yaml.Marshal(conf)
if err != nil {
return res, err
}
res = string(yamlBytes)
return res, err
}