package cmd import ( "flag" "fmt" "os" "s-ui/config" ) func ParseCmd() { var showVersion bool flag.BoolVar(&showVersion, "v", false, "show version") adminCmd := flag.NewFlagSet("admin", flag.ExitOnError) settingCmd := flag.NewFlagSet("setting", flag.ExitOnError) var username string var password string var port int var path string var subPort int var subPath string var reset bool var show bool settingCmd.BoolVar(&reset, "reset", false, "reset all settings") settingCmd.BoolVar(&show, "show", false, "show current settings") settingCmd.IntVar(&port, "port", 0, "set panel port") settingCmd.StringVar(&path, "path", "", "set panel path") settingCmd.IntVar(&subPort, "subPort", 0, "set sub port") settingCmd.StringVar(&subPath, "subPath", "", "set sub path") adminCmd.BoolVar(&show, "show", false, "show first admin credentials") adminCmd.BoolVar(&reset, "reset", false, "reset first admin credentials") adminCmd.StringVar(&username, "username", "", "set login username") adminCmd.StringVar(&password, "password", "", "set login password") oldUsage := flag.Usage flag.Usage = func() { oldUsage() fmt.Println() fmt.Println("Commands:") fmt.Println(" admin set/reset/show first admin credentials") fmt.Println(" migrate migrate form older version") fmt.Println(" setting set/reset/show settings") fmt.Println() adminCmd.Usage() fmt.Println() settingCmd.Usage() } flag.Parse() if showVersion { fmt.Println(config.GetVersion()) return } switch os.Args[1] { case "admin": err := adminCmd.Parse(os.Args[2:]) if err != nil { fmt.Println(err) return } switch { case show: showAdmin() case reset: resetAdmin() default: updateAdmin(username, password) showAdmin() } case "migrate": migrateDb() case "setting": err := settingCmd.Parse(os.Args[2:]) if err != nil { fmt.Println(err) return } switch { case show: showSetting() case reset: resetSetting() default: updateSetting(port, path, subPort, subPath) showSetting() } default: fmt.Println("Invalid subcommands") flag.Usage() } }