70 lines
1.8 KiB
Go
70 lines
1.8 KiB
Go
package core
|
||
|
||
import (
|
||
"flag"
|
||
"fmt"
|
||
"os"
|
||
"runtime"
|
||
|
||
"gopkg.in/yaml.v2"
|
||
"myschools.me/suguo/gofound/global"
|
||
)
|
||
|
||
// Parser 解析器
|
||
func Parser() *global.Config {
|
||
|
||
var addr = flag.String("addr", "127.0.0.1:5678", "设置监听地址和端口")
|
||
//兼容windows
|
||
dir := fmt.Sprintf(".%sdata", string(os.PathSeparator))
|
||
|
||
var dataDir = flag.String("data", dir, "设置数据存储目录")
|
||
|
||
var debug = flag.Bool("debug", true, "设置是否开启调试模式")
|
||
|
||
var dictionaryPath = flag.String("dictionary", "./data/dictionary.txt", "设置词典路径")
|
||
|
||
var enableAdmin = flag.Bool("enableAdmin", true, "设置是否开启后台管理")
|
||
|
||
var gomaxprocs = flag.Int("gomaxprocs", runtime.NumCPU()*2, "设置GOMAXPROCS")
|
||
|
||
var auth = flag.String("auth", "", "开启认证,例如: admin:123456")
|
||
|
||
var enableGzip = flag.Bool("enableGzip", true, "是否开启gzip压缩")
|
||
var timeout = flag.Int64("timeout", 10*60, "数据库超时关闭时间(秒)")
|
||
var bufferNum = flag.Int("bufferNum", 1000, "分片缓冲数量")
|
||
|
||
var configPath = flag.String("config", "", "配置文件路径,配置此项其他参数忽略")
|
||
|
||
flag.Parse()
|
||
|
||
config := &global.Config{}
|
||
|
||
if *configPath != "" {
|
||
//解析配置文件
|
||
//file, err := ioutil.ReadFile(*configPath)
|
||
file, err := os.ReadFile(*configPath) //详情:https://github.com/golang/go/issues/42026
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
err = yaml.Unmarshal(file, config)
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
return config
|
||
}
|
||
config = &global.Config{
|
||
Addr: *addr,
|
||
Data: *dataDir,
|
||
Debug: *debug,
|
||
Dictionary: *dictionaryPath,
|
||
EnableAdmin: *enableAdmin,
|
||
Gomaxprocs: *gomaxprocs,
|
||
Auth: *auth,
|
||
EnableGzip: *enableGzip,
|
||
Timeout: *timeout,
|
||
BufferNum: *bufferNum,
|
||
}
|
||
|
||
return config
|
||
}
|