package main
import (
"encoding/json"
"fmt"
"io"
"io/ioutil"
"log"
"os"
"path/filepath"
_ "strconv"
"time"
"github.com/google/uuid" // 需要使用 go get -u github.com/google/uuid 来安装这个包
)
// 存储文件的路径(这里硬编码为 Windows 路径,你可能需要根据你的环境进行调整)
var storageFile = `C:\Users\Administrator\AppData\Roaming\Cursor\User\globalStorage\storage.json`
// 生成随机 ID
func generateRandomID() string {
id, err := uuid.NewRandom()
if err != nil {
log.Fatalf("Failed to generate UUID: %v", err)
}
return id.String()
}
// 获取新的 ID(从命令行参数或自动生成)
func getNewID(args []string) string {
if len(args) > 1 {
return args[1]
}
return generateRandomID()
}
// 创建备份
func backupFile(filePath string) {
if _, err := os.Stat(filePath); err == nil {
backupPath := filePath + ".backup_" + time.Now().Format("20060102_150405")
err = copyFile(filePath, backupPath)
if err != nil {
log.Printf("Failed to create backup: %v", err)
} else {
fmt.Printf("Created backup file: %s\n", backupPath)
}
} else {
fmt.Println("File not found, skipping backup.")
}
}
// 复制文件
func copyFile(src, dst string) error {
inFile, err := os.Open(src)
if err != nil {
return err
}
defer inFile.Close()
outFile, err := os.Create(dst)
if err != nil {
return err
}
defer outFile.Close()
_, err = io.Copy(outFile, inFile)
if err != nil {
return err
}
err = outFile.Sync()
if err != nil {
return err
}
return nil
}
// 更新或创建 JSON 文件
func updateMachineID(filePath, newID string) {
// 确保目录存在
err := os.MkdirAll(filepath.Dir(filePath), os.ModePerm)
if err != nil {
log.Fatalf("Failed to create directories: %v", err)
}
// 读取 JSON 数据
var data map[string]interface{}
if _, err := os.Stat(filePath); err == nil {
fileContent, err := ioutil.ReadFile(filePath)
if err != nil {
log.Fatalf("Failed to read file: %v", err)
}
err = json.Unmarshal(fileContent, &data)
if err != nil {
data = make(map[string]interface{})
}
} else {
data = make(map[string]interface{})
}
// 更新或添加 machineId
data["telemetry.machineId"] = newID
// 写回更新后的 JSON 文件
fileContent, err := json.MarshalIndent(data, "", " ")
if err != nil {
log.Fatalf("Failed to marshal JSON: %v", err)
}
err = ioutil.WriteFile(filePath, fileContent, 0644)
if err != nil {
log.Fatalf("Failed to write file: %v", err)
}
fmt.Printf("Successfully updated machineId to: %s\n", newID)
}
func main() {
// 获取命令行参数
args := os.Args
// 获取新的 ID
newID := getNewID(args)
// 创建备份
backupFile(storageFile)
// 更新 JSON 文件
updateMachineID(storageFile, newID)
}
Corsor 生成 随机ID Golang
最新推荐文章于 2025-03-23 19:39:43 发布