Command line flag support 添加更多命令行选项支持
ZeaKyX opened this issue · 1 comments
Description
Support more flag than -c
, and maybe overriding config file? : )
添加配置文件里的选项到命令行参数中,比如可以运行speedtest -p 80
指定网页端口号为80
默认优先级高于配置文件(?)
Why it should be implemented
- Benefit who don‘t want to edit config file. 懒得写配置文件Orz
- More easy way to set up some background service. 方便搭建后台
e.g
Maybe using pflag:
main.go
package main
import (
_ "time/tzdata"
"github.com/spf13/pflag"
"github.com/spf13/viper"
"github.com/librespeed/speedtest/config"
"github.com/librespeed/speedtest/database"
"github.com/librespeed/speedtest/results"
"github.com/librespeed/speedtest/web"
_ "github.com/breml/rootcerts"
log "github.com/sirupsen/logrus"
)
var (
optConfig = pflag.StringP("configfilepath", "c", "", "config file to be used, defaults to settings.toml in the same directory")
)
func init() {
pflag.StringP("listen_port", "p", "", "Listening Port")
pflag.StringP("proxyprotocol_port", "", "", "")
pflag.StringP("download_chunks", "d", "", "")
pflag.StringP("distance_unit", "", "", "")
pflag.StringP("enable_cors", "e", "", "")
pflag.StringP("statistics_password", "s", "", "")
pflag.StringP("redact_ip_addresses", "r", "", "")
pflag.StringP("database_type", "", "", "")
pflag.StringP("database_hostname", "", "", "")
pflag.StringP("database_name", "", "", "")
pflag.StringP("database_username", "", "", "")
viper.BindPFlags(pflag.CommandLine)
}
func main() {
pflag.Parse()
conf := config.Load(*optConfig)
viper.Unmarshal(&conf)
web.SetServerLocation(&conf)
results.Initialize(&conf)
database.SetDBInfo(&conf)
log.Fatal(web.ListenAndServe(&conf))
}
PR welcome :)