From 39709405249244b1e97d290000bf6657dc7706ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=85=8E=E9=A5=BC=E6=9E=9C=E5=AD=90=E5=8D=B7=E9=B2=A8?= =?UTF-8?q?=E9=B1=BC=E8=BE=A3=E6=A4=92?= Date: Fri, 7 Feb 2025 10:08:33 +0800 Subject: [PATCH] feat: Improve configuration file modification with flexible key handling - Added `modify_or_add_config()` function to handle existing and new configuration keys - Enhanced file modification logic to support adding missing keys - Refactored `generate_new_config()` to use new configuration modification method - Maintained existing telemetry ID generation and file permission setting - Improved script flexibility for configuration file updates --- scripts/run/cursor_mac_id_modifier.sh | 41 ++++++++++++++++++++------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/scripts/run/cursor_mac_id_modifier.sh b/scripts/run/cursor_mac_id_modifier.sh index 0613e2b..3d5b296 100644 --- a/scripts/run/cursor_mac_id_modifier.sh +++ b/scripts/run/cursor_mac_id_modifier.sh @@ -162,15 +162,26 @@ generate_uuid() { uuidgen | tr '[:upper:]' '[:lower:]' } +# 修改现有文件 +modify_or_add_config() { + local key="$1" + local value="$2" + local file="$3" + + # 检查key是否存在 + if grep -q "\"$key\":" "$file"; then + # key存在,执行替换 + sed -i '' -e "s/\"$key\":[[:space:]]*\"[^\"]*\"/\"$key\": \"$value\"/" "$file" + else + # key不存在,添加新的key-value对 + # 在最后一个}前添加新行 + sed -i '' -e "s/}$/,\n \"$key\": \"$value\"\n}/" "$file" + fi +} + # 生成新的配置 generate_new_config() { - # 检查配置文件是否存在 - if [ ! -f "$STORAGE_FILE" ]; then - log_error "未找到配置文件: $STORAGE_FILE" - log_warn "请先安装并运行一次 Cursor 后再使用此脚本" - exit 1 - fi - + # 修改系统 ID log_info "正在修改系统 ID..." @@ -194,11 +205,19 @@ generate_new_config() { local device_id=$(generate_uuid | tr '[:upper:]' '[:lower:]') local sqm_id="{$(generate_uuid | tr '[:lower:]' '[:upper:]')}" + log_info "正在修改配置文件..." + # 检查配置文件是否存在 + if [ ! -f "$STORAGE_FILE" ]; then + log_error "未找到配置文件: $STORAGE_FILE" + log_warn "请先安装并运行一次 Cursor 后再使用此脚本" + exit 1 + fi + # 修改现有文件 - sed -i '' -e "s/\"telemetry\.machineId\":[[:space:]]*\"[^\"]*\"/\"telemetry.machineId\": \"$machine_id\"/" "$STORAGE_FILE" - sed -i '' -e "s/\"telemetry\.macMachineId\":[[:space:]]*\"[^\"]*\"/\"telemetry.macMachineId\": \"$mac_machine_id\"/" "$STORAGE_FILE" - sed -i '' -e "s/\"telemetry\.devDeviceId\":[[:space:]]*\"[^\"]*\"/\"telemetry.devDeviceId\": \"$device_id\"/" "$STORAGE_FILE" - sed -i '' -e "s/\"telemetry\.sqmId\":[[:space:]]*\"[^\"]*\"/\"telemetry.sqmId\": \"$sqm_id\"/" "$STORAGE_FILE" + modify_or_add_config "telemetry.machineId" "$machine_id" "$STORAGE_FILE" + modify_or_add_config "telemetry.macMachineId" "$mac_machine_id" "$STORAGE_FILE" + modify_or_add_config "telemetry.devDeviceId" "$device_id" "$STORAGE_FILE" + modify_or_add_config "telemetry.sqmId" "$sqm_id" "$STORAGE_FILE" # 设置文件权限和所有者 chmod 444 "$STORAGE_FILE" # 改为只读权限