Command line flag support 添加更多命令行选项支持
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 :)