Feature: add more command-line options (#656)

add command-line options to override `external-controller`, `secret` and `external-ui` (#531)
This commit is contained in:
Richard Yu
2020-04-27 22:23:09 +08:00
committed by GitHub
parent 51b6b8521b
commit 41a9488cfa
2 changed files with 54 additions and 6 deletions

33
main.go
View File

@ -18,18 +18,30 @@ import (
)
var (
version bool
testConfig bool
homeDir string
configFile string
flagset map[string]bool
version bool
testConfig bool
homeDir string
configFile string
externalUI string
externalController string
secret string
)
func init() {
flag.StringVar(&homeDir, "d", "", "set configuration directory")
flag.StringVar(&configFile, "f", "", "specify configuration file")
flag.StringVar(&externalUI, "ext-ui", "", "override external ui directory")
flag.StringVar(&externalController, "ext-ctl", "", "override external controller address")
flag.StringVar(&secret, "secret", "", "override secret for RESTful API")
flag.BoolVar(&version, "v", false, "show current version of clash")
flag.BoolVar(&testConfig, "t", false, "test configuration and exit")
flag.Parse()
flagset = map[string]bool{}
flag.Visit(func(f *flag.Flag) {
flagset[f.Name] = true
})
}
func main() {
@ -71,7 +83,18 @@ func main() {
return
}
if err := hub.Parse(); err != nil {
var options []hub.Option
if flagset["ext-ui"] {
options = append(options, hub.WithExternalUI(externalUI))
}
if flagset["ext-ctl"] {
options = append(options, hub.WithExternalController(externalController))
}
if flagset["secret"] {
options = append(options, hub.WithSecret(secret))
}
if err := hub.Parse(options...); err != nil {
log.Fatalln("Parse config error: %s", err.Error())
}