PrintBanner 打印程序横幅
()
| 7 | |
| 8 | // PrintBanner 打印程序横幅 |
| 9 | func PrintBanner() { |
| 10 | fmt.Println() |
| 11 | |
| 12 | // 获取版本信息 |
| 13 | versionInfo := getVersionInfo() |
| 14 | |
| 15 | // 使用颜色代码 |
| 16 | white := "\033[37m" |
| 17 | cyan := "\033[36m" // 青色用于网站信息 |
| 18 | reset := "\033[0m" |
| 19 | |
| 20 | // 计算版本信息长度,确保居中对齐 |
| 21 | versionText := fmt.Sprintf("Reality协议目标网站检测工具 %s", versionInfo) |
| 22 | websiteText := "V2RaySSR 综合网" |
| 23 | |
| 24 | // 横幅宽度(与表格保持一致) |
| 25 | width := 95 |
| 26 | |
| 27 | // 计算字符显示宽度(中文字符占2个位置) |
| 28 | versionDisplayWidth := getDisplayWidth(versionText) |
| 29 | websiteDisplayWidth := getDisplayWidth(websiteText) |
| 30 | |
| 31 | // 计算居中位置 |
| 32 | versionPadding := (width - 2 - versionDisplayWidth) / 2 |
| 33 | websitePadding := (width - 2 - websiteDisplayWidth) / 2 |
| 34 | |
| 35 | // 确保padding不为负数 |
| 36 | if versionPadding < 0 { versionPadding = 0 } |
| 37 | if websitePadding < 0 { websitePadding = 0 } |
| 38 | |
| 39 | // 计算右侧剩余空间 |
| 40 | versionRightSpace := width - 2 - versionPadding - versionDisplayWidth |
| 41 | websiteRightSpace := width - 2 - websitePadding - websiteDisplayWidth |
| 42 | |
| 43 | if versionRightSpace < 0 { versionRightSpace = 0 } |
| 44 | if websiteRightSpace < 0 { websiteRightSpace = 0 } |
| 45 | |
| 46 | fmt.Printf("%s╔%s╗%s\n", white, strings.Repeat("═", width-2), reset) |
| 47 | fmt.Printf("%s║%s%s%s║%s\n", white, strings.Repeat(" ", versionPadding), versionText, strings.Repeat(" ", versionRightSpace), reset) |
| 48 | fmt.Printf("%s║%s║%s\n", white, strings.Repeat(" ", width-2), reset) |
| 49 | fmt.Printf("%s║%s%s%s%s%s║%s\n", white, strings.Repeat(" ", websitePadding), cyan, websiteText, reset, strings.Repeat(" ", websiteRightSpace), reset) |
| 50 | fmt.Printf("%s╚%s╝%s\n", white, strings.Repeat("═", width-2), reset) |
| 51 | fmt.Println("") |
| 52 | } |
no test coverage detected