Execute 执行命令
()
| 63 | |
| 64 | // Execute 执行命令 |
| 65 | func (r *RootCmd) Execute() { |
| 66 | defer r.cleanup() |
| 67 | |
| 68 | if len(os.Args) < 2 { |
| 69 | ui.PrintUsage() |
| 70 | os.Exit(1) |
| 71 | } |
| 72 | |
| 73 | switch os.Args[1] { |
| 74 | case "check": |
| 75 | if len(os.Args) < 3 { |
| 76 | ui.PrintErrorWithDetails( |
| 77 | "错误:缺少域名参数", |
| 78 | "用法: reality-checker check <domain>", |
| 79 | "示例: reality-checker check apple.com", |
| 80 | ) |
| 81 | os.Exit(1) |
| 82 | } |
| 83 | r.executeCheck(os.Args[2]) |
| 84 | case "batch": |
| 85 | if len(os.Args) < 3 { |
| 86 | ui.PrintErrorWithDetails( |
| 87 | "错误:缺少域名参数", |
| 88 | "用法: reality-checker batch <domain1> <domain2> <domain3> ...", |
| 89 | "示例: reality-checker batch apple.com google.com microsoft.com", |
| 90 | ) |
| 91 | os.Exit(1) |
| 92 | } |
| 93 | // 将所有参数(除了命令名)合并为空格分隔的字符串 |
| 94 | domainsStr := strings.Join(os.Args[2:], " ") |
| 95 | r.executeBatch(domainsStr) |
| 96 | case "csv": |
| 97 | if len(os.Args) < 3 { |
| 98 | ui.PrintErrorWithDetails( |
| 99 | "错误:缺少CSV文件参数", |
| 100 | "用法: reality-checker csv <csv_file>", |
| 101 | "示例: reality-checker csv domains.csv", |
| 102 | ) |
| 103 | os.Exit(1) |
| 104 | } |
| 105 | r.executeCSV(os.Args[2]) |
| 106 | case "version", "-v", "--version": |
| 107 | r.showVersion() |
| 108 | default: |
| 109 | ui.PrintErrorWithDetails( |
| 110 | fmt.Sprintf("错误:未知命令 '%s'", os.Args[1]), |
| 111 | "可用命令: check, batch, csv, version", |
| 112 | ) |
| 113 | os.Exit(1) |
| 114 | } |
| 115 | } |
| 116 | |
| 117 | // showVersion 显示版本信息 |
| 118 | func (r *RootCmd) showVersion() { |
no test coverage detected