@dayinxisheng/novel-tools 0.2.2 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/README.md +88 -12
  3. package/dist/commands/check.d.ts.map +1 -1
  4. package/dist/commands/check.js +2 -49
  5. package/dist/commands/check.js.map +1 -1
  6. package/dist/commands/config.d.ts +6 -0
  7. package/dist/commands/config.d.ts.map +1 -0
  8. package/dist/commands/config.js +164 -0
  9. package/dist/commands/config.js.map +1 -0
  10. package/dist/commands/event.js +3 -3
  11. package/dist/commands/event.js.map +1 -1
  12. package/dist/commands/index.d.ts.map +1 -1
  13. package/dist/commands/index.js +11 -1
  14. package/dist/commands/index.js.map +1 -1
  15. package/dist/commands/query.js +5 -5
  16. package/dist/commands/query.js.map +1 -1
  17. package/dist/commands/shared.d.ts +8 -3
  18. package/dist/commands/shared.d.ts.map +1 -1
  19. package/dist/commands/shared.js +17 -2
  20. package/dist/commands/shared.js.map +1 -1
  21. package/dist/commands/snapshot.js +3 -3
  22. package/dist/commands/snapshot.js.map +1 -1
  23. package/dist/commands/temp-setting.js +4 -4
  24. package/dist/commands/temp-setting.js.map +1 -1
  25. package/dist/core/constants.d.ts +0 -1
  26. package/dist/core/constants.d.ts.map +1 -1
  27. package/dist/core/constants.js +0 -1
  28. package/dist/core/constants.js.map +1 -1
  29. package/dist/core/git.d.ts +28 -0
  30. package/dist/core/git.d.ts.map +1 -0
  31. package/dist/core/git.js +71 -0
  32. package/dist/core/git.js.map +1 -0
  33. package/dist/core/index.d.ts +1 -0
  34. package/dist/core/index.d.ts.map +1 -1
  35. package/dist/core/index.js +1 -0
  36. package/dist/core/index.js.map +1 -1
  37. package/dist/core/types.d.ts +10 -0
  38. package/dist/core/types.d.ts.map +1 -1
  39. package/dist/services/config.service.d.ts +78 -0
  40. package/dist/services/config.service.d.ts.map +1 -0
  41. package/dist/services/config.service.js +178 -0
  42. package/dist/services/config.service.js.map +1 -0
  43. package/dist/services/index.d.ts +1 -0
  44. package/dist/services/index.d.ts.map +1 -1
  45. package/dist/services/index.js +1 -0
  46. package/dist/services/index.js.map +1 -1
  47. package/dist/services/init.service.d.ts.map +1 -1
  48. package/dist/services/init.service.js +12 -13
  49. package/dist/services/init.service.js.map +1 -1
  50. package/dist/services/validate.service.d.ts +8 -16
  51. package/dist/services/validate.service.d.ts.map +1 -1
  52. package/dist/services/validate.service.js +26 -173
  53. package/dist/services/validate.service.js.map +1 -1
  54. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,76 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.3.1] - 2026-03-11
9
+
10
+ ### Changed
11
+ - `check outline` 命令现在只检查主大纲,移除了卷级大纲和弧列表的检查
12
+ - `init` 命令生成的 `arc_list.yaml` 模板格式更新为 `volumes → arcs` 嵌套结构
13
+
14
+ ### Removed
15
+ - `check arc` 子命令
16
+ - `check volume` 子命令
17
+
18
+ ## [0.3.0] - 2026-03-11
19
+
20
+ ### Added
21
+
22
+ #### config 命令 - 全局配置管理
23
+ - `config set <path>` - 为当前项目设置小说路径
24
+ - 自动检测 git 仓库根目录
25
+ - 支持相对路径和绝对路径
26
+ - 验证小说项目有效性
27
+ - `config get` - 查看当前项目配置
28
+ - 显示项目根目录
29
+ - 显示小说路径
30
+ - `config list` - 列出所有已配置的项目
31
+ - 显示所有项目映射
32
+ - 按项目根目录排序
33
+ - `config unset` - 删除当前项目配置
34
+ - 支持强制删除(--force)
35
+ - 支持交互式确认
36
+
37
+ #### Git 工具类
38
+ - `GitUtils.findRepositoryRoot()` - 查找 git 仓库根目录
39
+ - 从当前目录向上查找 .git 目录
40
+ - 支持文件和目录形式的 .git
41
+ - `GitUtils.normalizePath()` - 规范化路径
42
+ - 解析符号链接
43
+ - 去除末尾斜杠
44
+ - `GitUtils.isInGitRepository()` - 检查是否在 git 仓库中
45
+
46
+ #### 配置服务
47
+ - `ConfigService` - 全局配置管理服务
48
+ - 配置文件位置: `~/.novel-tools/config.json`
49
+ - 支持多项目配置
50
+ - 自动创建配置目录
51
+ - 路径规范化处理
52
+
53
+ #### 自动路径解析
54
+ - 所有命令支持自动路径解析
55
+ - 优先级: `-p` 参数 > 全局配置 > 当前目录
56
+ - 在项目任何子目录执行命令时自动找到配置
57
+ - 不同项目有各自配置,互不干扰
58
+
59
+ #### 配置类型定义
60
+ - `NovelToolsConfig` - 全局配置接口
61
+ - `ProjectMapping` - 项目映射接口
62
+ - `ConfigOptions` - 配置选项接口
63
+
64
+ ### Changed
65
+
66
+ #### CliUtils.resolveProjectPath()
67
+ - 从同步方法改为异步方法
68
+ - 支持从全局配置查找小说路径
69
+ - 所有命令的 `resolveProjectPath` 调用更新为 `await`
70
+
71
+ #### 核心模块导出
72
+ - `core/index.ts` - 新增 GitUtils 导出
73
+
74
+ ### Breaking Changes
75
+ - `CliUtils.resolveProjectPath()` 现在是异步方法
76
+ - 所有直接调用此方法的代码需要使用 `await`
77
+
8
78
  ## [0.2.2] - 2026-03-10
9
79
 
10
80
  ### Added
package/README.md CHANGED
@@ -8,12 +8,14 @@
8
8
 
9
9
  ## 功能
10
10
 
11
+ - **全局配置**:管理项目路径配置,支持自动路径解析
11
12
  - **项目初始化**:创建标准的小说项目目录结构
12
13
  - **查询功能**:查询静态设定、人物信息、状态快照、人物关系、伏笔等
13
14
  - **事件管理**:追加事件、生成章节摘要、列出事件
14
15
  - **临时设定**:添加临时设定、审核队列、迁移到正式设定
15
- - **快照生成**:生成卷级/弧级状态快照
16
+ - **快照管理**:生成、列出、查看卷级/弧级状态快照
16
17
  - **一致性检查**:检查大纲、章节、弧、卷的一致性
18
+ - **风格分析**:从 JSONL 文件提取章节内容用于写作风格分析
17
19
 
18
20
  ## 安装
19
21
 
@@ -29,6 +31,24 @@ npm install @dayinxisheng/novel-tools
29
31
 
30
32
  ## 使用
31
33
 
34
+ ### 全局配置管理
35
+
36
+ ```bash
37
+ # 设置当前项目的小说路径
38
+ novel-tools config set my-novel
39
+
40
+ # 查看当前项目配置
41
+ novel-tools config get
42
+
43
+ # 列出所有已配置的项目
44
+ novel-tools config list
45
+
46
+ # 删除当前项目配置
47
+ novel-tools config unset
48
+ ```
49
+
50
+ 配置后,在项目的任何子目录执行命令都会自动使用配置的小说路径,无需每次指定 `-p` 参数。
51
+
32
52
  ### 初始化项目
33
53
 
34
54
  ```bash
@@ -38,10 +58,34 @@ novel-tools init my-novel webnovel
38
58
  ### 查询设定
39
59
 
40
60
  ```bash
41
- novel-tools query world
61
+ # 查询静态设定
62
+ novel-tools query setting world
63
+ novel-tools query setting power_system
64
+
65
+ # 查询设定大纲(大章节列表目录)
66
+ novel-tools query setting world --outline
67
+
68
+ # 提取指定大章节内容
69
+ novel-tools query setting world --section "第一章"
70
+
71
+ # 查询人物信息
42
72
  novel-tools query character 张三
73
+
74
+ # 查询人物关系
43
75
  novel-tools query relationships 张三
76
+ novel-tools query relationships
77
+
78
+ # 查询伏笔(默认显示未解决)
44
79
  novel-tools query foreshadows
80
+
81
+ # 查询特定状态的伏笔
82
+ novel-tools query foreshadows --status resolved
83
+
84
+ # 查询当前状态快照
85
+ novel-tools query state
86
+
87
+ # 查询指定卷的状态快照
88
+ novel-tools query state --volume 1
45
89
  ```
46
90
 
47
91
  ### 事件管理
@@ -50,24 +94,24 @@ novel-tools query foreshadows
50
94
 
51
95
  ```bash
52
96
  # JSON 字符串
53
- novel-tools event append --chapter 1 --events '[{"type":"出场","character":"林风"}]'
97
+ novel-tools event append 1 --events '[{"type":"出场","character":"林风"}]'
54
98
 
55
99
  # 从文件
56
- novel-tools event append --chapter 1 --file events.json
100
+ novel-tools event append 1 --file events.json
57
101
 
58
102
  # 交互式
59
- novel-tools event append --chapter 1 --interactive
103
+ novel-tools event append 1 --interactive
60
104
 
61
105
  # 覆盖已存在的事件
62
- novel-tools event append --chapter 1 --events '[...]' --replace
106
+ novel-tools event append 1 --events '[...]' --replace
63
107
  ```
64
108
 
65
109
  #### 章节摘要
66
110
 
67
111
  ```bash
68
- novel-tools event summary --chapter 1 --output table
69
- novel-tools event summary --chapter 1 --output json
70
- novel-tools event summary --chapter 1 --output markdown
112
+ novel-tools event summary 1 --output table
113
+ novel-tools event summary 1 --output json
114
+ novel-tools event summary 1 --output markdown
71
115
  ```
72
116
 
73
117
  #### 列出事件
@@ -83,7 +127,7 @@ novel-tools event list --type 出场
83
127
  #### 添加临时设定
84
128
 
85
129
  ```bash
86
- # 添加人物
130
+ # 添加人物(--type、--name、--chapter 为必需参数)
87
131
  novel-tools temp-setting add --type character --name 林风 --chapter 5 --description "主要角色"
88
132
 
89
133
  # 添加物品
@@ -132,8 +176,40 @@ novel-tools check volume 1
132
176
  ### 生成快照
133
177
 
134
178
  ```bash
135
- novel-tools snapshot --volume 1
136
- novel-tools snapshot --arc "英雄之旅"
179
+ # 生成卷级快照
180
+ novel-tools snapshot generate --volume 1
181
+
182
+ # 生成弧级快照
183
+ novel-tools snapshot generate --arc "英雄之旅"
184
+
185
+ # 列出所有快照
186
+ novel-tools snapshot list
187
+
188
+ # 查看快照详情
189
+ novel-tools snapshot show vol1
190
+ novel-tools snapshot show "英雄之旅"
191
+ ```
192
+
193
+ ### 写作风格分析
194
+
195
+ ```bash
196
+ # 显示 JSONL 文件信息
197
+ novel-tools style info chapters.jsonl
198
+
199
+ # 提取章节内容用于风格分析
200
+ novel-tools style extract chapters.jsonl --output sample.md
201
+
202
+ # 提取指定数量章节
203
+ novel-tools style extract chapters.jsonl --count 20 --output sample.md
204
+
205
+ # 从指定章节开始提取
206
+ novel-tools style extract chapters.jsonl --start 10 --count 5
207
+
208
+ # 随机选择章节
209
+ novel-tools style extract chapters.jsonl --count 10 --random
210
+
211
+ # 输出纯文本格式
212
+ novel-tools style extract chapters.jsonl --format text
137
213
  ```
138
214
 
139
215
  ## 开发
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAiH5C"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CA2D5C"}
@@ -13,7 +13,7 @@ export function createCheckCommand() {
13
13
  .option('-p, --path <path>', '项目路径')
14
14
  .action(async (options) => {
15
15
  try {
16
- const projectPath = CliUtils.resolveProjectPath(options.path);
16
+ const projectPath = await CliUtils.resolveProjectPath(options.path);
17
17
  const validateService = new ValidateService();
18
18
  CliUtils.title('检查大纲');
19
19
  const result = await validateService.validateOutline(projectPath);
@@ -34,7 +34,7 @@ export function createCheckCommand() {
34
34
  .option('-p, --path <path>', '项目路径')
35
35
  .action(async (chapterStr, options) => {
36
36
  try {
37
- const projectPath = CliUtils.resolveProjectPath(options.path);
37
+ const projectPath = await CliUtils.resolveProjectPath(options.path);
38
38
  const validateService = new ValidateService();
39
39
  const chapter = parseInt(chapterStr, 10);
40
40
  if (isNaN(chapter) || chapter < 1) {
@@ -53,53 +53,6 @@ export function createCheckCommand() {
53
53
  process.exit(1);
54
54
  }
55
55
  });
56
- // 检查剧情弧
57
- cmd
58
- .command('arc')
59
- .argument('<name>', '弧名称')
60
- .option('-p, --path <path>', '项目路径')
61
- .action(async (arcName, options) => {
62
- try {
63
- const projectPath = CliUtils.resolveProjectPath(options.path);
64
- const validateService = new ValidateService();
65
- CliUtils.title(`检查剧情弧: ${arcName}`);
66
- const result = await validateService.validateArc(projectPath, arcName);
67
- CliUtils.printValidationResult(result);
68
- if (!result.passed) {
69
- process.exit(1);
70
- }
71
- }
72
- catch (error) {
73
- CliUtils.error(error instanceof Error ? error.message : String(error));
74
- process.exit(1);
75
- }
76
- });
77
- // 检查卷
78
- cmd
79
- .command('volume')
80
- .argument('<number>', '卷号')
81
- .option('-p, --path <path>', '项目路径')
82
- .action(async (volumeStr, options) => {
83
- try {
84
- const projectPath = CliUtils.resolveProjectPath(options.path);
85
- const validateService = new ValidateService();
86
- const volume = parseInt(volumeStr, 10);
87
- if (isNaN(volume) || volume < 1) {
88
- CliUtils.error('无效的卷号');
89
- process.exit(1);
90
- }
91
- CliUtils.title(`检查第 ${volume} 卷`);
92
- const result = await validateService.validateVolume(projectPath, volume);
93
- CliUtils.printValidationResult(result);
94
- if (!result.passed) {
95
- process.exit(1);
96
- }
97
- }
98
- catch (error) {
99
- CliUtils.error(error instanceof Error ? error.message : String(error));
100
- process.exit(1);
101
- }
102
- });
103
56
  return cmd;
104
57
  }
105
58
  //# sourceMappingURL=check.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAE7B,OAAO;IACP,GAAG;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;YAE9C,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAEvB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAClE,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAEvC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;IACP,GAAG;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;SAC3B,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,UAAkB,EAAE,OAAO,EAAE,EAAE;QAC5C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAEzC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAClC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,QAAQ,CAAC,KAAK,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC;YAEnC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC3E,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAEvC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * 创建 config 命令
4
+ */
5
+ export declare function createConfigCommand(): Command;
6
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAsK7C"}
@@ -0,0 +1,164 @@
1
+ import { Command } from 'commander';
2
+ import * as path from 'path';
3
+ import { ConfigService } from '../services/config.service.js';
4
+ import { GitUtils } from '../core/git.js';
5
+ import { CliUtils } from './shared.js';
6
+ import { FileUtils } from '../core/file.js';
7
+ /**
8
+ * 创建 config 命令
9
+ */
10
+ export function createConfigCommand() {
11
+ const cmd = new Command('config');
12
+ cmd.description('管理 novel-tools 全局配置');
13
+ // 设置当前项目的小说路径
14
+ cmd
15
+ .command('set')
16
+ .argument('<path>', '小说项目路径(相对或绝对)')
17
+ .option('-r, --root <path>', '项目根目录(默认为当前 git 仓库根目录)')
18
+ .action(async (novelPath, options) => {
19
+ try {
20
+ const configService = new ConfigService();
21
+ // 确定项目根目录
22
+ let projectRoot;
23
+ if (options.root) {
24
+ projectRoot = await GitUtils.normalizePath(options.root);
25
+ }
26
+ else {
27
+ const root = await GitUtils.findRepositoryRoot(process.cwd());
28
+ if (!root) {
29
+ CliUtils.error('当前目录不在 git 仓库中,请使用 --root 参数指定项目根目录');
30
+ process.exit(1);
31
+ }
32
+ projectRoot = await GitUtils.normalizePath(root);
33
+ }
34
+ // 验证小说路径是否存在
35
+ const resolvedPath = configService.resolveNovelPath(projectRoot, novelPath);
36
+ const projectJsonPath = path.join(resolvedPath, 'project.json');
37
+ if (!FileUtils.exists(projectJsonPath)) {
38
+ CliUtils.warning(`警告: ${resolvedPath} 中未找到 project.json 文件`);
39
+ const confirmed = await CliUtils.confirm('是否继续保存配置?');
40
+ if (!confirmed) {
41
+ process.exit(0);
42
+ }
43
+ }
44
+ // 保存配置
45
+ await configService.addProject(projectRoot, novelPath);
46
+ CliUtils.success('配置已保存');
47
+ CliUtils.printKeyValue('项目根目录', projectRoot);
48
+ CliUtils.printKeyValue('小说路径', novelPath);
49
+ CliUtils.printKeyValue('实际路径', resolvedPath);
50
+ }
51
+ catch (error) {
52
+ CliUtils.error(error instanceof Error ? error.message : String(error));
53
+ process.exit(1);
54
+ }
55
+ });
56
+ // 显示当前项目配置
57
+ cmd
58
+ .command('get')
59
+ .option('-r, --root <path>', '项目根目录')
60
+ .action(async (options) => {
61
+ try {
62
+ const configService = new ConfigService();
63
+ // 确定项目根目录
64
+ let projectRoot;
65
+ if (options.root) {
66
+ projectRoot = await GitUtils.normalizePath(options.root);
67
+ }
68
+ else {
69
+ const root = await GitUtils.findRepositoryRoot(process.cwd());
70
+ if (!root) {
71
+ CliUtils.info('当前目录不在 git 仓库中');
72
+ CliUtils.info('使用 --root 参数指定项目根目录可查看配置');
73
+ process.exit(0);
74
+ }
75
+ projectRoot = await GitUtils.normalizePath(root);
76
+ }
77
+ // 查询配置
78
+ const hasConfig = await configService.hasProjectConfig(projectRoot);
79
+ if (!hasConfig) {
80
+ CliUtils.info('当前项目没有配置');
81
+ return;
82
+ }
83
+ const projectConfig = await configService.getCurrentProjectConfig(projectRoot);
84
+ if (projectConfig) {
85
+ CliUtils.title('当前项目配置');
86
+ CliUtils.printKeyValue('项目根目录', projectConfig.root);
87
+ CliUtils.printKeyValue('小说路径', projectConfig.novelPath);
88
+ }
89
+ }
90
+ catch (error) {
91
+ CliUtils.error(error instanceof Error ? error.message : String(error));
92
+ process.exit(1);
93
+ }
94
+ });
95
+ // 列出所有项目配置
96
+ cmd
97
+ .command('list')
98
+ .action(async () => {
99
+ try {
100
+ const configService = new ConfigService();
101
+ const projects = await configService.listProjects();
102
+ CliUtils.title(`已配置项目 (${projects.length})`);
103
+ if (projects.length === 0) {
104
+ CliUtils.info('暂无配置');
105
+ return;
106
+ }
107
+ for (const project of projects) {
108
+ console.log();
109
+ CliUtils.printKeyValue('项目根目录', project.root);
110
+ CliUtils.printKeyValue('小说路径', project.novelPath);
111
+ }
112
+ }
113
+ catch (error) {
114
+ CliUtils.error(error instanceof Error ? error.message : String(error));
115
+ process.exit(1);
116
+ }
117
+ });
118
+ // 删除当前项目配置
119
+ cmd
120
+ .command('unset')
121
+ .option('-r, --root <path>', '项目根目录')
122
+ .option('-f, --force', '强制删除,无需确认')
123
+ .action(async (options) => {
124
+ try {
125
+ const configService = new ConfigService();
126
+ // 确定项目根目录
127
+ let projectRoot;
128
+ if (options.root) {
129
+ projectRoot = await GitUtils.normalizePath(options.root);
130
+ }
131
+ else {
132
+ const root = await GitUtils.findRepositoryRoot(process.cwd());
133
+ if (!root) {
134
+ CliUtils.error('当前目录不在 git 仓库中,请使用 --root 参数指定项目根目录');
135
+ process.exit(1);
136
+ }
137
+ projectRoot = await GitUtils.normalizePath(root);
138
+ }
139
+ // 检查是否存在配置
140
+ const hasConfig = await configService.hasProjectConfig(projectRoot);
141
+ if (!hasConfig) {
142
+ CliUtils.info('当前项目没有配置');
143
+ return;
144
+ }
145
+ // 确认删除
146
+ if (!options.force) {
147
+ const confirmed = await CliUtils.confirm(`确定要删除项目 ${projectRoot} 的配置吗?`);
148
+ if (!confirmed) {
149
+ CliUtils.info('操作已取消');
150
+ return;
151
+ }
152
+ }
153
+ // 删除配置
154
+ await configService.removeProject(projectRoot);
155
+ CliUtils.success('配置已删除');
156
+ }
157
+ catch (error) {
158
+ CliUtils.error(error instanceof Error ? error.message : String(error));
159
+ process.exit(1);
160
+ }
161
+ });
162
+ return cmd;
163
+ }
164
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ export function createEventCommand() {
18
18
  .option('-p, --path <path>', '项目路径')
19
19
  .action(async (chapter, options) => {
20
20
  try {
21
- const projectPath = CliUtils.resolveProjectPath(options.path);
21
+ const projectPath = await CliUtils.resolveProjectPath(options.path);
22
22
  const chapterNum = parseInt(chapter, 10);
23
23
  if (isNaN(chapterNum) || chapterNum < 1) {
24
24
  CliUtils.error('章节号必须是正整数');
@@ -52,7 +52,7 @@ export function createEventCommand() {
52
52
  .option('-p, --path <path>', '项目路径')
53
53
  .action(async (chapter, options) => {
54
54
  try {
55
- const projectPath = CliUtils.resolveProjectPath(options.path);
55
+ const projectPath = await CliUtils.resolveProjectPath(options.path);
56
56
  const chapterNum = parseInt(chapter, 10);
57
57
  if (isNaN(chapterNum) || chapterNum < 1) {
58
58
  CliUtils.error('章节号必须是正整数');
@@ -85,7 +85,7 @@ export function createEventCommand() {
85
85
  .option('-p, --path <path>', '项目路径')
86
86
  .action(async (options) => {
87
87
  try {
88
- const projectPath = CliUtils.resolveProjectPath(options.path);
88
+ const projectPath = await CliUtils.resolveProjectPath(options.path);
89
89
  const service = new EventCommandService();
90
90
  let chapter;
91
91
  if (options.chapter) {
@@ -1 +1 @@
1
- {"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/commands/event.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/commands/event.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkCpC,eAAO,MAAM,GAAG,SAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6CpC,eAAO,MAAM,GAAG,SAAc,CAAC"}
@@ -7,7 +7,16 @@ import { createSnapshotCommand } from './snapshot.js';
7
7
  import { createEventCommand } from './event.js';
8
8
  import { createTempSettingCommand } from './temp-setting.js';
9
9
  import { createStyleCommand } from './style.js';
10
- import { CLI_NAME, CLI_VERSION, CLI_DESCRIPTION } from '../core/constants.js';
10
+ import { createConfigCommand } from './config.js';
11
+ import { CLI_NAME, CLI_DESCRIPTION } from '../core/constants.js';
12
+ import { readFileSync } from 'fs';
13
+ import { fileURLToPath } from 'url';
14
+ import { dirname, join } from 'path';
15
+ // 从 package.json 读取版本号
16
+ const __filename = fileURLToPath(import.meta.url);
17
+ const __dirname = dirname(__filename);
18
+ const packageJson = JSON.parse(readFileSync(join(__dirname, '../../package.json'), 'utf-8'));
19
+ const CLI_VERSION = packageJson.version;
11
20
  /**
12
21
  * 主 CLI 程序
13
22
  */
@@ -25,6 +34,7 @@ function createCli() {
25
34
  program.addCommand(createEventCommand());
26
35
  program.addCommand(createTempSettingCommand());
27
36
  program.addCommand(createStyleCommand());
37
+ program.addCommand(createConfigCommand());
28
38
  return program;
29
39
  }
30
40
  // 导出供测试使用
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9E;;GAEG;AACH,SAAS,SAAS;IAChB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,eAAe,CAAC;SAC5B,OAAO,CAAC,WAAW,CAAC,CAAC;IAExB,QAAQ;IACR,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAEzC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,UAAU;AACV,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;AAE/B,cAAc;AACd,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC3C,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,uBAAuB;AACvB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7F,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;AAExC;;GAEG;AACH,SAAS,SAAS;IAChB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,eAAe,CAAC;SAC5B,OAAO,CAAC,WAAW,CAAC,CAAC;IAExB,QAAQ;IACR,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAExC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,UAAU;AACV,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;AAE/B,cAAc;AACd,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC3C,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -17,7 +17,7 @@ export function createQueryCommand() {
17
17
  .option('-s, --section <title>', '提取指定大章节内容')
18
18
  .action(async (type, options) => {
19
19
  try {
20
- const projectPath = CliUtils.resolveProjectPath(options.path);
20
+ const projectPath = await CliUtils.resolveProjectPath(options.path);
21
21
  const queryService = new QueryService();
22
22
  if (!await queryService.validateProjectPath(projectPath)) {
23
23
  CliUtils.error('未找到小说项目配置文件 (project.json)');
@@ -64,7 +64,7 @@ export function createQueryCommand() {
64
64
  .option('-p, --path <path>', '项目路径')
65
65
  .action(async (name, options) => {
66
66
  try {
67
- const projectPath = CliUtils.resolveProjectPath(options.path);
67
+ const projectPath = await CliUtils.resolveProjectPath(options.path);
68
68
  const queryService = new QueryService();
69
69
  if (!await queryService.validateProjectPath(projectPath)) {
70
70
  CliUtils.error('未找到小说项目配置文件 (project.json)');
@@ -98,7 +98,7 @@ export function createQueryCommand() {
98
98
  .option('-p, --path <path>', '项目路径')
99
99
  .action(async (name, options) => {
100
100
  try {
101
- const projectPath = CliUtils.resolveProjectPath(options.path);
101
+ const projectPath = await CliUtils.resolveProjectPath(options.path);
102
102
  const queryService = new QueryService();
103
103
  if (!await queryService.validateProjectPath(projectPath)) {
104
104
  CliUtils.error('未找到小说项目配置文件 (project.json)');
@@ -126,7 +126,7 @@ export function createQueryCommand() {
126
126
  .option('-p, --path <path>', '项目路径')
127
127
  .action(async (options) => {
128
128
  try {
129
- const projectPath = CliUtils.resolveProjectPath(options.path);
129
+ const projectPath = await CliUtils.resolveProjectPath(options.path);
130
130
  const queryService = new QueryService();
131
131
  if (!await queryService.validateProjectPath(projectPath)) {
132
132
  CliUtils.error('未找到小说项目配置文件 (project.json)');
@@ -158,7 +158,7 @@ export function createQueryCommand() {
158
158
  .option('-p, --path <path>', '项目路径')
159
159
  .action(async (options) => {
160
160
  try {
161
- const projectPath = CliUtils.resolveProjectPath(options.path);
161
+ const projectPath = await CliUtils.resolveProjectPath(options.path);
162
162
  const queryService = new QueryService();
163
163
  if (!await queryService.validateProjectPath(projectPath)) {
164
164
  CliUtils.error('未找到小说项目配置文件 (project.json)');