@@ -4,40 +4,66 @@ import (
44 "flag"
55 "fmt"
66 "os"
7- "strings "
7+ "path "
88
99 "github.com/miaokobot/miaospeed/utils"
1010)
1111
12- func InitConfig () * utils.GlobalConfig {
13- gcfg := & utils .GCFG
12+ var cmdName string = "miaospeed"
1413
15- flag .StringVar (& gcfg .Token , "token" , "" , "specify the token used to sign request" )
16- flag .StringVar (& gcfg .Binder , "bind" , "" , "bind a socket, can be format like 0.0.0.0:8080 or /tmp/unix_socket" )
17- flag .Uint64Var (& gcfg .SpeedLimit , "speedlimit" , 0 , "speed ratelimit (in Bytes per Second), default with no limits" )
18- flag .UintVar (& gcfg .PauseSecond , "pausesecond" , 0 , "pause such period after each speed job (seconds)" )
19- flag .BoolVar (& gcfg .MiaoKoSignedTLS , "mtls" , false , "enable miaoko certs for tls verification" )
20- flag .BoolVar (& gcfg .NoSpeedFlag , "nospeed" , false , "decline all speedtest requests" )
14+ type SubCliType string
2115
22- verboseMode := flag .Bool ("verbose" , false , "whether to print out systems log" )
23- versionOnly := flag .Bool ("version" , false , "display version and exit" )
24- whiteList := flag .String ("whitelist" , "" , "bot id whitelist, can be format like 1111,2222,3333" )
16+ const (
17+ SCTServer SubCliType = "server"
18+ SCTScriptTest SubCliType = "script"
19+ )
2520
26- flag .Parse ()
21+ func RunCli () {
22+ subCmd := SubCliType ("" )
23+ if len (os .Args ) >= 2 {
24+ subCmd = SubCliType (os .Args [1 ])
25+ }
2726
28- if * verboseMode {
29- utils .VerboseLevel = utils .LTLog
27+ cmdName = path .Base (os .Args [0 ])
28+ switch subCmd {
29+ case SCTServer :
30+ RunCliServer ()
31+ case SCTScriptTest :
32+ RunCliScriptTest ()
33+ default :
34+ RunCliDefault ()
3035 }
36+ }
37+
38+ func RunCliDefault () {
39+ sflag := flag .NewFlagSet (cmdName , flag .ExitOnError )
40+
41+ versionOnly := sflag .Bool ("version" , false , "display version and exit" )
42+ sflag .Parse (os .Args [1 :])
3143
3244 if * versionOnly {
3345 fmt .Println (utils .VERSION )
3446 os .Exit (0 )
3547 }
3648
37- gcfg .WhiteList = make ([]string , 0 )
38- if * whiteList != "" {
39- gcfg .WhiteList = strings .Split (* whiteList , "," )
40- }
49+ sflag .Usage ()
4150
42- return gcfg
51+ fmt .Printf ("\n " )
52+ fmt .Printf ("Subcommands of %s:\n " , cmdName )
53+ fmt .Printf (" server\n " )
54+ fmt .Printf (" start the miaospeed backend as a server.\n " )
55+ fmt .Printf (" script\n " )
56+ fmt .Printf (" run a temporary script test to test the correctness of your script.\n " )
57+
58+ os .Exit (0 )
59+ }
60+
61+ func parseFlag (sflag * flag.FlagSet ) {
62+ verboseMode := sflag .Bool ("verbose" , false , "whether to print out systems log" )
63+
64+ sflag .Parse (os .Args [2 :])
65+
66+ if * verboseMode {
67+ utils .VerboseLevel = utils .LTLog
68+ }
4369}
0 commit comments