mirror of
https://github.com/yuaotian/go-cursor-help.git
synced 2025-06-08 04:22:06 +08:00
feat: Remove obsolete binaries and update module dependencies
- Deleted outdated binary files for Windows, Linux, and macOS platforms to streamline the project. - Updated `go.mod` to change the module path to `cursor-id-modifier` and adjusted dependency versions for `github.com/fatih/color` and `golang.org/x/sys`. - Modified `install.sh` to reflect new binary naming conventions and download URLs. - Cleaned up whitespace in `main.go` for improved code readability. This commit focuses on cleaning up the project structure and ensuring dependencies are up-to-date.
This commit is contained in:
parent
394e144a2e
commit
2e27634c8d
1
.vscode/settings.json
vendored
1
.vscode/settings.json
vendored
@ -9,6 +9,7 @@
|
|||||||
"ldflags",
|
"ldflags",
|
||||||
"LOCALAPPDATA",
|
"LOCALAPPDATA",
|
||||||
"pkill",
|
"pkill",
|
||||||
|
"runas",
|
||||||
"setlocal",
|
"setlocal",
|
||||||
"taskkill",
|
"taskkill",
|
||||||
"trimpath"
|
"trimpath"
|
||||||
|
11
app.manifest
11
app.manifest
@ -1,11 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
||||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
|
||||||
<assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="app" type="win32"/>
|
|
||||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
|
||||||
<security>
|
|
||||||
<requestedPrivileges>
|
|
||||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
|
|
||||||
</requestedPrivileges>
|
|
||||||
</security>
|
|
||||||
</trustInfo>
|
|
||||||
</assembly>
|
|
Binary file not shown.
Binary file not shown.
12
go.mod
12
go.mod
@ -1,11 +1,13 @@
|
|||||||
module github.com/yuaotian/go-cursor-help
|
module cursor-id-modifier
|
||||||
|
|
||||||
go 1.22.0
|
go 1.21
|
||||||
|
|
||||||
require github.com/fatih/color v1.18.0
|
require (
|
||||||
|
github.com/fatih/color v1.15.0
|
||||||
|
golang.org/x/sys v0.13.0
|
||||||
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
github.com/mattn/go-isatty v0.0.17 // indirect
|
||||||
golang.org/x/sys v0.28.0
|
|
||||||
)
|
)
|
||||||
|
15
go.sum
15
go.sum
@ -1,13 +1,10 @@
|
|||||||
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
|
github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs=
|
||||||
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
|
github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
|
||||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||||
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||||
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
|
||||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
|
||||||
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
|
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
|
||||||
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
|
|
||||||
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
|
||||||
|
@ -16,15 +16,14 @@ detect_platform() {
|
|||||||
case "$OS" in
|
case "$OS" in
|
||||||
linux*)
|
linux*)
|
||||||
case "$ARCH" in
|
case "$ARCH" in
|
||||||
x86_64) BINARY_NAME="cursor-id-modifier" ;;
|
x86_64) BINARY_NAME="cursor_id_modifier_v2.0.0_linux_amd64" ;;
|
||||||
aarch64) BINARY_NAME="cursor-id-modifier-arm64" ;;
|
|
||||||
*) error "Unsupported Linux architecture/不支持的Linux架构: $ARCH" ;;
|
*) error "Unsupported Linux architecture/不支持的Linux架构: $ARCH" ;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
darwin*)
|
darwin*)
|
||||||
case "$ARCH" in
|
case "$ARCH" in
|
||||||
x86_64) BINARY_NAME="cursor-id-modifier-amd64" ;;
|
x86_64) BINARY_NAME="cursor_id_modifier_v2.0.0_mac_intel" ;;
|
||||||
arm64) BINARY_NAME="cursor-id-modifier-arm64" ;;
|
arm64) BINARY_NAME="cursor_id_modifier_v2.0.0_mac_m1" ;;
|
||||||
*) error "Unsupported macOS architecture/不支持的macOS架构: $ARCH" ;;
|
*) error "Unsupported macOS architecture/不支持的macOS架构: $ARCH" ;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
@ -47,7 +46,7 @@ INSTALL_DIR="/usr/local/bin"
|
|||||||
# Download binary / 下载二进制文件
|
# Download binary / 下载二进制文件
|
||||||
echo "Downloading cursor-id-modifier for/正在下载 $OS ($ARCH)..."
|
echo "Downloading cursor-id-modifier for/正在下载 $OS ($ARCH)..."
|
||||||
TEMP_DIR=$(mktemp -d)
|
TEMP_DIR=$(mktemp -d)
|
||||||
DOWNLOAD_URL="https://github.com/yuaotian/go-cursor-help/releases/latest/download/$BINARY_NAME"
|
DOWNLOAD_URL="https://github.com/yuaotian/go-cursor-help/raw/main/bin/$BINARY_NAME"
|
||||||
|
|
||||||
if ! curl -fsSL "$DOWNLOAD_URL" -o "$TEMP_DIR/$BINARY_NAME"; then
|
if ! curl -fsSL "$DOWNLOAD_URL" -o "$TEMP_DIR/$BINARY_NAME"; then
|
||||||
error "Failed to download binary/下载二进制文件失败"
|
error "Failed to download binary/下载二进制文件失败"
|
||||||
|
113
main.go
113
main.go
@ -15,7 +15,6 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
@ -28,23 +27,23 @@ type Language string
|
|||||||
const (
|
const (
|
||||||
CN Language = "cn"
|
CN Language = "cn"
|
||||||
EN Language = "en"
|
EN Language = "en"
|
||||||
|
|
||||||
// Version constant
|
// Version constant
|
||||||
Version = "1.0.1"
|
Version = "1.0.1"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TextResource 存储多语言文本 / TextResource stores multilingual text
|
// TextResource 存储多语言文本 / TextResource stores multilingual text
|
||||||
type TextResource struct {
|
type TextResource struct {
|
||||||
SuccessMessage string
|
SuccessMessage string
|
||||||
RestartMessage string
|
RestartMessage string
|
||||||
ReadingConfig string
|
ReadingConfig string
|
||||||
GeneratingIds string
|
GeneratingIds string
|
||||||
PressEnterToExit string
|
PressEnterToExit string
|
||||||
ErrorPrefix string
|
ErrorPrefix string
|
||||||
PrivilegeError string
|
PrivilegeError string
|
||||||
RunAsAdmin string
|
RunAsAdmin string
|
||||||
RunWithSudo string
|
RunWithSudo string
|
||||||
SudoExample string
|
SudoExample string
|
||||||
}
|
}
|
||||||
|
|
||||||
// StorageConfig 优化的存储配置结构 / StorageConfig optimized storage configuration struct
|
// StorageConfig 优化的存储配置结构 / StorageConfig optimized storage configuration struct
|
||||||
@ -76,28 +75,28 @@ var (
|
|||||||
|
|
||||||
texts = map[Language]TextResource{
|
texts = map[Language]TextResource{
|
||||||
CN: {
|
CN: {
|
||||||
SuccessMessage: "[√] 配置文件已成功更新!",
|
SuccessMessage: "[√] 配置文件已成功更新!",
|
||||||
RestartMessage: "[!] 请手动重启 Cursor 以使更新生效",
|
RestartMessage: "[!] 请手动重启 Cursor 以使更新生效",
|
||||||
ReadingConfig: "正在读取配置文件...",
|
ReadingConfig: "正在读取配置文件...",
|
||||||
GeneratingIds: "正在生成新的标识符...",
|
GeneratingIds: "正在生成新的标识符...",
|
||||||
PressEnterToExit: "按回车键退出程序...",
|
PressEnterToExit: "按回车键退出程序...",
|
||||||
ErrorPrefix: "程序发生严重错误: %v",
|
ErrorPrefix: "程序发生严重错误: %v",
|
||||||
PrivilegeError: "\n[!] 错误:需要管理员权限",
|
PrivilegeError: "\n[!] 错误:需要管理员权限",
|
||||||
RunAsAdmin: "请右键点击程序,选择「以管理员身份运行」",
|
RunAsAdmin: "请右键点击程序,选择「以管理员身份运行」",
|
||||||
RunWithSudo: "请使用 sudo 命令运行此程序",
|
RunWithSudo: "请使用 sudo 命令运行此程序",
|
||||||
SudoExample: "示例: sudo %s",
|
SudoExample: "示例: sudo %s",
|
||||||
},
|
},
|
||||||
EN: {
|
EN: {
|
||||||
SuccessMessage: "[√] Configuration file updated successfully!",
|
SuccessMessage: "[√] Configuration file updated successfully!",
|
||||||
RestartMessage: "[!] Please restart Cursor manually for changes to take effect",
|
RestartMessage: "[!] Please restart Cursor manually for changes to take effect",
|
||||||
ReadingConfig: "Reading configuration file...",
|
ReadingConfig: "Reading configuration file...",
|
||||||
GeneratingIds: "Generating new identifiers...",
|
GeneratingIds: "Generating new identifiers...",
|
||||||
PressEnterToExit: "Press Enter to exit...",
|
PressEnterToExit: "Press Enter to exit...",
|
||||||
ErrorPrefix: "Program encountered a serious error: %v",
|
ErrorPrefix: "Program encountered a serious error: %v",
|
||||||
PrivilegeError: "\n[!] Error: Administrator privileges required",
|
PrivilegeError: "\n[!] Error: Administrator privileges required",
|
||||||
RunAsAdmin: "Please right-click and select 'Run as Administrator'",
|
RunAsAdmin: "Please right-click and select 'Run as Administrator'",
|
||||||
RunWithSudo: "Please run this program with sudo",
|
RunWithSudo: "Please run this program with sudo",
|
||||||
SudoExample: "Example: sudo %s",
|
SudoExample: "Example: sudo %s",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -224,9 +223,9 @@ func killCursorProcesses() error {
|
|||||||
// First try graceful shutdown
|
// First try graceful shutdown
|
||||||
exec.Command("taskkill", "/IM", "Cursor.exe").Run()
|
exec.Command("taskkill", "/IM", "Cursor.exe").Run()
|
||||||
exec.Command("taskkill", "/IM", "cursor.exe").Run()
|
exec.Command("taskkill", "/IM", "cursor.exe").Run()
|
||||||
|
|
||||||
time.Sleep(time.Second)
|
time.Sleep(time.Second)
|
||||||
|
|
||||||
// Force kill any remaining instances
|
// Force kill any remaining instances
|
||||||
exec.Command("taskkill", "/F", "/IM", "Cursor.exe").Run()
|
exec.Command("taskkill", "/F", "/IM", "Cursor.exe").Run()
|
||||||
exec.Command("taskkill", "/F", "/IM", "cursor.exe").Run()
|
exec.Command("taskkill", "/F", "/IM", "cursor.exe").Run()
|
||||||
@ -244,7 +243,7 @@ func checkCursorRunning() bool {
|
|||||||
} else {
|
} else {
|
||||||
cmd = exec.Command("pgrep", "-f", "Cursor")
|
cmd = exec.Command("pgrep", "-f", "Cursor")
|
||||||
}
|
}
|
||||||
|
|
||||||
output, _ := cmd.Output()
|
output, _ := cmd.Output()
|
||||||
return strings.Contains(string(output), "Cursor") || strings.Contains(string(output), "cursor")
|
return strings.Contains(string(output), "Cursor") || strings.Contains(string(output), "cursor")
|
||||||
}
|
}
|
||||||
@ -288,7 +287,7 @@ func printCyberpunkBanner() {
|
|||||||
cyan.Println(banner)
|
cyan.Println(banner)
|
||||||
yellow.Println("\t\t>> Cursor ID Modifier v1.0 <<")
|
yellow.Println("\t\t>> Cursor ID Modifier v1.0 <<")
|
||||||
magenta.Println("\t\t [ By Pancake Fruit Rolled Shark Chili ]")
|
magenta.Println("\t\t [ By Pancake Fruit Rolled Shark Chili ]")
|
||||||
|
|
||||||
langText := "当前语言/Language: "
|
langText := "当前语言/Language: "
|
||||||
if currentLanguage == CN {
|
if currentLanguage == CN {
|
||||||
langText += "简体中文"
|
langText += "简体中文"
|
||||||
@ -302,7 +301,7 @@ func showSuccess() {
|
|||||||
text := texts[currentLanguage]
|
text := texts[currentLanguage]
|
||||||
successColor := color.New(color.FgGreen, color.Bold)
|
successColor := color.New(color.FgGreen, color.Bold)
|
||||||
warningColor := color.New(color.FgYellow, color.Bold)
|
warningColor := color.New(color.FgYellow, color.Bold)
|
||||||
|
|
||||||
successColor.Printf("\n%s\n", text.SuccessMessage)
|
successColor.Printf("\n%s\n", text.SuccessMessage)
|
||||||
warningColor.Printf("%s\n", text.RestartMessage)
|
warningColor.Printf("%s\n", text.RestartMessage)
|
||||||
}
|
}
|
||||||
@ -311,7 +310,7 @@ func showPrivilegeError() {
|
|||||||
text := texts[currentLanguage]
|
text := texts[currentLanguage]
|
||||||
red := color.New(color.FgRed, color.Bold)
|
red := color.New(color.FgRed, color.Bold)
|
||||||
yellow := color.New(color.FgYellow)
|
yellow := color.New(color.FgYellow)
|
||||||
|
|
||||||
red.Println(text.PrivilegeError)
|
red.Println(text.PrivilegeError)
|
||||||
if runtime.GOOS == "windows" {
|
if runtime.GOOS == "windows" {
|
||||||
yellow.Println(text.RunAsAdmin)
|
yellow.Println(text.RunAsAdmin)
|
||||||
@ -324,16 +323,16 @@ func showPrivilegeError() {
|
|||||||
func showIdComparison(oldConfig *StorageConfig, newConfig *StorageConfig) {
|
func showIdComparison(oldConfig *StorageConfig, newConfig *StorageConfig) {
|
||||||
cyan := color.New(color.FgCyan)
|
cyan := color.New(color.FgCyan)
|
||||||
yellow := color.New(color.FgYellow)
|
yellow := color.New(color.FgYellow)
|
||||||
|
|
||||||
fmt.Println("\n=== ID Modification Comparison / ID 修改对比 ===")
|
fmt.Println("\n=== ID Modification Comparison / ID 修改对比 ===")
|
||||||
|
|
||||||
if oldConfig != nil {
|
if oldConfig != nil {
|
||||||
cyan.Println("\n[Original IDs / 原始 ID]")
|
cyan.Println("\n[Original IDs / 原始 ID]")
|
||||||
yellow.Printf("Machine ID: %s\n", oldConfig.TelemetryMachineId)
|
yellow.Printf("Machine ID: %s\n", oldConfig.TelemetryMachineId)
|
||||||
yellow.Printf("Mac Machine ID: %s\n", oldConfig.TelemetryMacMachineId)
|
yellow.Printf("Mac Machine ID: %s\n", oldConfig.TelemetryMacMachineId)
|
||||||
yellow.Printf("Dev Device ID: %s\n", oldConfig.TelemetryDevDeviceId)
|
yellow.Printf("Dev Device ID: %s\n", oldConfig.TelemetryDevDeviceId)
|
||||||
}
|
}
|
||||||
|
|
||||||
cyan.Println("\n[Newly Generated IDs / 新生成 ID]")
|
cyan.Println("\n[Newly Generated IDs / 新生成 ID]")
|
||||||
yellow.Printf("Machine ID: %s\n", newConfig.TelemetryMachineId)
|
yellow.Printf("Machine ID: %s\n", newConfig.TelemetryMachineId)
|
||||||
yellow.Printf("Mac Machine ID: %s\n", newConfig.TelemetryMacMachineId)
|
yellow.Printf("Mac Machine ID: %s\n", newConfig.TelemetryMacMachineId)
|
||||||
@ -395,7 +394,7 @@ func loadAndUpdateConfig() (*StorageConfig, error) {
|
|||||||
|
|
||||||
text := texts[currentLanguage]
|
text := texts[currentLanguage]
|
||||||
showProgress(text.ReadingConfig)
|
showProgress(text.ReadingConfig)
|
||||||
|
|
||||||
_, err = os.ReadFile(configPath)
|
_, err = os.ReadFile(configPath)
|
||||||
if err != nil && !os.IsNotExist(err) {
|
if err != nil && !os.IsNotExist(err) {
|
||||||
return nil, &AppError{"read config file", configPath, err}
|
return nil, &AppError{"read config file", configPath, err}
|
||||||
@ -413,14 +412,14 @@ func checkAdminPrivileges() (bool, error) {
|
|||||||
cmd := exec.Command("net", "session")
|
cmd := exec.Command("net", "session")
|
||||||
err := cmd.Run()
|
err := cmd.Run()
|
||||||
return err == nil, nil
|
return err == nil, nil
|
||||||
|
|
||||||
case "darwin", "linux":
|
case "darwin", "linux":
|
||||||
currentUser, err := user.Current()
|
currentUser, err := user.Current()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("failed to get current user: %v", err)
|
return false, fmt.Errorf("failed to get current user: %v", err)
|
||||||
}
|
}
|
||||||
return currentUser.Uid == "0", nil
|
return currentUser.Uid == "0", nil
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false, fmt.Errorf("unsupported operating system: %s", runtime.GOOS)
|
return false, fmt.Errorf("unsupported operating system: %s", runtime.GOOS)
|
||||||
}
|
}
|
||||||
@ -432,16 +431,16 @@ func selfElevate() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
cwd, err := os.Getwd()
|
cwd, err := os.Getwd()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
// 将字符串转换为UTF-16指针
|
||||||
verbPtr, _ := syscall.UTF16PtrFromString(verb)
|
verbPtr, _ := windows.UTF16PtrFromString(verb)
|
||||||
exePtr, _ := syscall.UTF16PtrFromString(exe)
|
exePtr, _ := windows.UTF16PtrFromString(exe)
|
||||||
cwdPtr, _ := syscall.UTF16PtrFromString(cwd)
|
cwdPtr, _ := windows.UTF16PtrFromString(cwd)
|
||||||
argPtr, _ := syscall.UTF16PtrFromString("")
|
argPtr, _ := windows.UTF16PtrFromString("")
|
||||||
|
|
||||||
var showCmd int32 = 1 //SW_NORMAL
|
var showCmd int32 = 1 //SW_NORMAL
|
||||||
|
|
||||||
@ -460,7 +459,7 @@ func detectLanguage() Language {
|
|||||||
if lang == "" {
|
if lang == "" {
|
||||||
lang = os.Getenv("LANGUAGE")
|
lang = os.Getenv("LANGUAGE")
|
||||||
}
|
}
|
||||||
|
|
||||||
if strings.Contains(strings.ToLower(lang), "zh") {
|
if strings.Contains(strings.ToLower(lang), "zh") {
|
||||||
return CN
|
return CN
|
||||||
}
|
}
|
||||||
@ -494,7 +493,7 @@ func main() {
|
|||||||
|
|
||||||
os.Stdout.Sync()
|
os.Stdout.Sync()
|
||||||
currentLanguage = detectLanguage()
|
currentLanguage = detectLanguage()
|
||||||
|
|
||||||
isAdmin, err := checkAdminPrivileges()
|
isAdmin, err := checkAdminPrivileges()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
handleError("permission check failed", err)
|
handleError("permission check failed", err)
|
||||||
@ -524,7 +523,7 @@ func main() {
|
|||||||
waitExit()
|
waitExit()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
time.Sleep(2 * time.Second)
|
time.Sleep(2 * time.Second)
|
||||||
if checkCursorRunning() {
|
if checkCursorRunning() {
|
||||||
fmt.Println("\nWarning: Cursor is still running. Please close it manually. / 警告:Cursor 仍在运行,请手动关闭。")
|
fmt.Println("\nWarning: Cursor is still running. Please close it manually. / 警告:Cursor 仍在运行,请手动关闭。")
|
||||||
@ -535,21 +534,21 @@ func main() {
|
|||||||
|
|
||||||
clearScreen()
|
clearScreen()
|
||||||
printCyberpunkBanner()
|
printCyberpunkBanner()
|
||||||
|
|
||||||
oldConfig, err := readExistingConfig()
|
oldConfig, err := readExistingConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
oldConfig = nil
|
oldConfig = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
config, err := loadAndUpdateConfig()
|
config, err := loadAndUpdateConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
handleError("configuration update failed", err)
|
handleError("configuration update failed", err)
|
||||||
waitExit()
|
waitExit()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
showIdComparison(oldConfig, config)
|
showIdComparison(oldConfig, config)
|
||||||
|
|
||||||
if err := saveConfig(config); err != nil {
|
if err := saveConfig(config); err != nil {
|
||||||
handleError("failed to save configuration", err)
|
handleError("failed to save configuration", err)
|
||||||
waitExit()
|
waitExit()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user