Skip to content
This repository was archived by the owner on Apr 14, 2025. It is now read-only.

Commit e82a95c

Browse files
committed
chore: 🔨 update comments
1 parent f15b628 commit e82a95c

File tree

1 file changed

+76
-33
lines changed

1 file changed

+76
-33
lines changed

cursor-reset.js

Lines changed: 76 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@
55
*
66
* 这是一个 Cursor 编辑器试用重置工具
77
* 该脚本通过重置 Cursor 配置文件中的设备 ID 来生成新的随机设备 ID,从而重置试用期。
8+
* 支持 Windows、macOS 和 Linux 系统。
9+
*
10+
* 主要功能:
11+
* - 自动检测并关闭运行中的 Cursor 进程
12+
* - 备份现有配置文件
13+
* - 生成新的随机设备 ID
14+
* - 统计重置历史记录
815
*
916
* 仓库地址: https://github.com/isboyjc/cursor-reset
1017
* 作者: @isboyjc
@@ -20,12 +27,10 @@ const readline = require('readline');
2027

2128
/**
2229
* 等待用户按键
23-
* Windows 系统专用功能
24-
* 注意:process.platform 返回 'win32' 是 Node.js 的历史遗留问题
25-
* 在 64 位 Windows 系统上也是返回 'win32'
26-
* 这与系统实际位数无关,只是用来标识这是 Windows 系统
30+
* 在 Windows 系统下运行时,程序结束前等待用户按键
31+
* 这样可以防止在双击运行时窗口立即关闭
2732
*
28-
* @returns {Promise<void>}
33+
* @returns {Promise<void>} 返回一个 Promise,在用户按键后解决
2934
*/
3035
function waitForKeypress() {
3136
// 在 Windows 系统下(无论 32 位还是 64 位)且不是在终端中运行时等待
@@ -59,8 +64,10 @@ function waitForKeypress() {
5964

6065
/**
6166
* 用户确认提示
62-
* @param {string} question 提示问题
63-
* @returns {Promise<boolean>} 用户选择结果
67+
* 显示一个 yes/no 提示,等待用户输入
68+
*
69+
* @param {string} question 要显示给用户的问题
70+
* @returns {Promise<boolean>} 如果用户输入 'y' 或 'Y' 返回 true,否则返回 false
6471
*/
6572
async function confirm(question) {
6673
const rl = readline.createInterface({
@@ -77,8 +84,10 @@ async function confirm(question) {
7784
}
7885

7986
/**
80-
* 获取 Windows 下的 Cursor 进程名
81-
* @returns {Promise<string|null>} 返回进程名,如果没找到返回 null
87+
* 获取 Windows 系统下运行的 Cursor 进程名
88+
* 使用 wmic 命令获取详细的进程信息,并过滤出 Cursor 相关进程
89+
*
90+
* @returns {Promise<string|null>} 返回找到的第一个 Cursor 进程名,如果没找到则返回 null
8291
*/
8392
async function getWindowsCursorProcessName() {
8493
try {
@@ -119,6 +128,11 @@ async function getWindowsCursorProcessName() {
119128

120129
/**
121130
* 检查 Cursor 是否正在运行
131+
* 根据不同操作系统使用不同的命令检查进程
132+
* - Windows: 使用 wmic 命令
133+
* - macOS: 使用 pgrep 命令
134+
* - Linux: 使用 pgrep 命令
135+
*
122136
* @returns {boolean} 如果 Cursor 正在运行返回 true,否则返回 false
123137
*/
124138
function isCursorRunning() {
@@ -166,8 +180,13 @@ function isCursorRunning() {
166180
}
167181

168182
/**
169-
* 关闭 Cursor 进程
170-
* @returns {Promise<boolean>} 是否成功关闭
183+
* 强制关闭 Cursor 进程
184+
* 根据不同操作系统使用相应的命令关闭进程:
185+
* - Windows: taskkill 命令
186+
* - macOS: pkill 命令
187+
* - Linux: pkill 命令
188+
*
189+
* @returns {Promise<boolean>} 成功关闭返回 true,失败返回 false
171190
*/
172191
async function killCursorProcess() {
173192
try {
@@ -214,8 +233,11 @@ async function killCursorProcess() {
214233

215234
/**
216235
* 格式化时间戳
217-
* @param {Date} date - 日期对象
218-
* @returns {string} 格式化后的时间字符串 (yyyyMMddHHmmssSSS)
236+
* 将日期对象转换为格式化的时间字符串
237+
* 格式:yyyyMMddHHmmssSSS
238+
*
239+
* @param {Date} date 要格式化的日期对象
240+
* @returns {string} 格式化后的时间字符串
219241
*/
220242
function formatTimestamp(date) {
221243
const pad = (num, len = 2) => String(num).padStart(len, '0');
@@ -232,9 +254,12 @@ function formatTimestamp(date) {
232254
}
233255

234256
/**
235-
* 备份指定文件的时间戳备份
236-
* @param {string} filePath - 需要备份的文件路径
237-
* @returns {Promise<string>} 备份文件的路径
257+
* 备份配置文件
258+
* 创建配置文件的时间戳备份,文件名格式为:原文件名.时间戳.bak
259+
*
260+
* @param {string} filePath 需要备份的文件路径
261+
* @returns {Promise<string>} 备份文件的完整路径
262+
* @throws {Error} 备份失败时抛出错误
238263
*/
239264
async function backupFile(filePath) {
240265
try {
@@ -249,7 +274,10 @@ async function backupFile(filePath) {
249274

250275
/**
251276
* 检查 Cursor 是否已安装
252-
* @returns {Promise<boolean>} 如果 Cursor 已安装返回 true,否则返回 false
277+
* 根据不同操作系统检查 Cursor 的默认安装位置
278+
*
279+
* @returns {Promise<boolean>} Cursor 已安装返回 true,否则返回 false
280+
* @throws {Error} 不支持的操作系统时抛出错误
253281
*/
254282
async function isCursorInstalled() {
255283
const platform = process.platform;
@@ -290,9 +318,14 @@ async function isCursorInstalled() {
290318
}
291319

292320
/**
293-
* 根据操作系统类型确定存储文件的位置
294-
* @returns {string} 返回对应操作系统下 Cursor 存储文件的完整路径
295-
* @throws {Error} 当操作系统不受支持时抛出异常
321+
* 获取 Cursor 存储文件路径
322+
* 根据不同操作系统返回配置文件的标准位置:
323+
* - Windows: %APPDATA%/Cursor/User/globalStorage/storage.json
324+
* - macOS: ~/Library/Application Support/Cursor/User/globalStorage/storage.json
325+
* - Linux: ~/.config/Cursor/User/globalStorage/storage.json
326+
*
327+
* @returns {string} 配置文件的完整路径
328+
* @throws {Error} 不支持的操作系统时抛出错误
296329
*/
297330
function getStorageFile() {
298331
const platform = process.platform;
@@ -311,8 +344,13 @@ function getStorageFile() {
311344
}
312345

313346
/**
314-
* 生成随机设备ID
315-
* @returns {object} 包含新生成的设备ID的对象
347+
* 生成新的随机设备标识
348+
* 生成三种不同的设备 ID:
349+
* - machineId: 32 字节的随机十六进制字符串
350+
* - macMachineId: 32 字节的随机十六进制字符串
351+
* - devDeviceId: UUID v4 格式的随机字符串
352+
*
353+
* @returns {object} 包含新生成的三个设备 ID 的对象
316354
*/
317355
function generateDeviceIds() {
318356
return {
@@ -323,9 +361,12 @@ function generateDeviceIds() {
323361
}
324362

325363
/**
326-
* 获取配置文件的所有备份
327-
* @param {string} configPath - 配置文件路径
328-
* @returns {Promise<Array<{name: string, time: Date}>>} 备份文件信息列表,按时间倒序排列
364+
* 获取配置文件的所有备份记录
365+
* 搜索指定目录下所有以 .bak 结尾的备份文件
366+
* 解析文件名中的时间戳并按时间倒序排列
367+
*
368+
* @param {string} configPath 配置文件路径
369+
* @returns {Promise<Array<{name: string, time: Date}>>} 备份文件信息数组
329370
*/
330371
async function getBackupFiles(configPath) {
331372
try {
@@ -372,14 +413,14 @@ async function getBackupFiles(configPath) {
372413

373414
/**
374415
* 重置 Cursor 的设备标识
375-
* 该函数会执行以下操作
376-
* 1. 检查 Cursor 是否在运行
377-
* 2. 获取存储文件路径
378-
* 3. 创建必要的目录结构
379-
* 4. 备份现有的存储文件
380-
* 5. 生成新的随机设备标识
381-
* 6. 更新存储文件
382-
* 7. 打印新生成的设备标识信息
416+
* 执行完整的重置流程
417+
* 1. 检查 Cursor 安装状态
418+
* 2. 检查并关闭运行中的 Cursor
419+
* 3. 准备配置目录
420+
* 4. 备份现有配置
421+
* 5. 生成新的设备 ID
422+
* 6. 保存新配置
423+
* 7. 显示重置统计信息
383424
*/
384425
async function resetCursorId() {
385426
try {
@@ -464,6 +505,8 @@ async function resetCursorId() {
464505

465506
/**
466507
* 主程序入口
508+
* 执行重置流程并处理异常
509+
* 确保在程序结束前等待用户确认(Windows)
467510
*/
468511
async function main() {
469512
let exitCode = 0;

0 commit comments

Comments
 (0)