@dayinxisheng/novel-tools 0.2.1 → 0.3.0
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.
- package/CHANGELOG.md +104 -0
- package/README.md +19 -0
- package/dist/commands/check.js +4 -4
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/config.d.ts +6 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +164 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/event.js +3 -3
- package/dist/commands/event.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +11 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/query.d.ts.map +1 -1
- package/dist/commands/query.js +34 -7
- package/dist/commands/query.js.map +1 -1
- package/dist/commands/shared.d.ts +8 -3
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/shared.js +17 -2
- package/dist/commands/shared.js.map +1 -1
- package/dist/commands/snapshot.js +3 -3
- package/dist/commands/snapshot.js.map +1 -1
- package/dist/commands/temp-setting.js +4 -4
- package/dist/commands/temp-setting.js.map +1 -1
- package/dist/core/constants.d.ts +0 -1
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +11 -10
- package/dist/core/constants.js.map +1 -1
- package/dist/core/git.d.ts +28 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/git.js +71 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/types.d.ts +10 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/services/config.service.d.ts +78 -0
- package/dist/services/config.service.d.ts.map +1 -0
- package/dist/services/config.service.js +178 -0
- package/dist/services/config.service.js.map +1 -0
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/init.service.d.ts +1 -1
- package/dist/services/init.service.d.ts.map +1 -1
- package/dist/services/init.service.js +99 -35
- package/dist/services/init.service.js.map +1 -1
- package/dist/services/query.service.d.ts +11 -1
- package/dist/services/query.service.d.ts.map +1 -1
- package/dist/services/query.service.js +63 -3
- package/dist/services/query.service.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,110 @@ 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.0] - 2026-03-11
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
#### config 命令 - 全局配置管理
|
|
13
|
+
- `config set <path>` - 为当前项目设置小说路径
|
|
14
|
+
- 自动检测 git 仓库根目录
|
|
15
|
+
- 支持相对路径和绝对路径
|
|
16
|
+
- 验证小说项目有效性
|
|
17
|
+
- `config get` - 查看当前项目配置
|
|
18
|
+
- 显示项目根目录
|
|
19
|
+
- 显示小说路径
|
|
20
|
+
- `config list` - 列出所有已配置的项目
|
|
21
|
+
- 显示所有项目映射
|
|
22
|
+
- 按项目根目录排序
|
|
23
|
+
- `config unset` - 删除当前项目配置
|
|
24
|
+
- 支持强制删除(--force)
|
|
25
|
+
- 支持交互式确认
|
|
26
|
+
|
|
27
|
+
#### Git 工具类
|
|
28
|
+
- `GitUtils.findRepositoryRoot()` - 查找 git 仓库根目录
|
|
29
|
+
- 从当前目录向上查找 .git 目录
|
|
30
|
+
- 支持文件和目录形式的 .git
|
|
31
|
+
- `GitUtils.normalizePath()` - 规范化路径
|
|
32
|
+
- 解析符号链接
|
|
33
|
+
- 去除末尾斜杠
|
|
34
|
+
- `GitUtils.isInGitRepository()` - 检查是否在 git 仓库中
|
|
35
|
+
|
|
36
|
+
#### 配置服务
|
|
37
|
+
- `ConfigService` - 全局配置管理服务
|
|
38
|
+
- 配置文件位置: `~/.novel-tools/config.json`
|
|
39
|
+
- 支持多项目配置
|
|
40
|
+
- 自动创建配置目录
|
|
41
|
+
- 路径规范化处理
|
|
42
|
+
|
|
43
|
+
#### 自动路径解析
|
|
44
|
+
- 所有命令支持自动路径解析
|
|
45
|
+
- 优先级: `-p` 参数 > 全局配置 > 当前目录
|
|
46
|
+
- 在项目任何子目录执行命令时自动找到配置
|
|
47
|
+
- 不同项目有各自配置,互不干扰
|
|
48
|
+
|
|
49
|
+
#### 配置类型定义
|
|
50
|
+
- `NovelToolsConfig` - 全局配置接口
|
|
51
|
+
- `ProjectMapping` - 项目映射接口
|
|
52
|
+
- `ConfigOptions` - 配置选项接口
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
|
|
56
|
+
#### CliUtils.resolveProjectPath()
|
|
57
|
+
- 从同步方法改为异步方法
|
|
58
|
+
- 支持从全局配置查找小说路径
|
|
59
|
+
- 所有命令的 `resolveProjectPath` 调用更新为 `await`
|
|
60
|
+
|
|
61
|
+
#### 核心模块导出
|
|
62
|
+
- `core/index.ts` - 新增 GitUtils 导出
|
|
63
|
+
|
|
64
|
+
### Breaking Changes
|
|
65
|
+
- `CliUtils.resolveProjectPath()` 现在是异步方法
|
|
66
|
+
- 所有直接调用此方法的代码需要使用 `await`
|
|
67
|
+
|
|
68
|
+
## [0.2.2] - 2026-03-10
|
|
69
|
+
|
|
70
|
+
### Added
|
|
71
|
+
|
|
72
|
+
#### query setting 命令增强
|
|
73
|
+
- `--outline` 选项 - 显示设定文件的大章节列表
|
|
74
|
+
- 提取所有 `#` 开头的标题(大章节)
|
|
75
|
+
- 自动跳过文件标题(第一个 `#` 标题)
|
|
76
|
+
- `--section` 选项 - 按章节标题提取特定大章节内容
|
|
77
|
+
- 支持按章节名提取
|
|
78
|
+
- 自动返回完整章节内容
|
|
79
|
+
|
|
80
|
+
#### 新增服务方法
|
|
81
|
+
- `QueryService.getSettingOutline()` - 获取设定文件大纲
|
|
82
|
+
- `QueryService.querySettingSection()` - 查询指定章节内容
|
|
83
|
+
- `QueryService.queryStaticSetting()` - 改为返回文本内容(原为 YAML 对象)
|
|
84
|
+
|
|
85
|
+
### Changed
|
|
86
|
+
|
|
87
|
+
#### 设定文件格式
|
|
88
|
+
- 静态设定文件格式从 `.yaml` 改为 `.md`
|
|
89
|
+
- `world.yaml` → `world.md`
|
|
90
|
+
- `power_system.yaml` → `power_system.md`
|
|
91
|
+
- `currency.md` (新增)
|
|
92
|
+
- 设定文件采用 Markdown 格式,使用 `#` 作为大章节标题
|
|
93
|
+
- 模板文件同步更新:
|
|
94
|
+
- `static_world.yaml` → `static_world.md`
|
|
95
|
+
- `state_snapshot.yaml` → `state_snapshot.md`
|
|
96
|
+
- `event_log.yaml` → `event_log.md`
|
|
97
|
+
|
|
98
|
+
#### 常量更新
|
|
99
|
+
- `NOVEL_TYPES` - 静态文件列表更新为 `.md` 格式
|
|
100
|
+
- `SETTING_FILE_MAP` - 文件映射更新为 `.md` 格式
|
|
101
|
+
- 新增 `currency` → `currency.md` 映射
|
|
102
|
+
|
|
103
|
+
#### 初始化服务更新
|
|
104
|
+
- `InitService.createWorldTemplate()` - 生成 Markdown 格式模板
|
|
105
|
+
- `InitService.createPowerSystemTemplate()` - 生成 Markdown 格式模板
|
|
106
|
+
- `InitService.createEraBackgroundTemplate()` - 生成 Markdown 格式模板
|
|
107
|
+
|
|
108
|
+
### Breaking Changes
|
|
109
|
+
- 状态快照仍使用 `.yaml` 格式(结构化数据)
|
|
110
|
+
- 现有项目的静态设定文件需手动重命名为 `.md` 格式
|
|
111
|
+
|
|
8
112
|
## [0.2.1] - 2026-03-10
|
|
9
113
|
|
|
10
114
|
### Added
|
package/README.md
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
## 功能
|
|
10
10
|
|
|
11
|
+
- **全局配置**:管理项目路径配置,支持自动路径解析
|
|
11
12
|
- **项目初始化**:创建标准的小说项目目录结构
|
|
12
13
|
- **查询功能**:查询静态设定、人物信息、状态快照、人物关系、伏笔等
|
|
13
14
|
- **事件管理**:追加事件、生成章节摘要、列出事件
|
|
@@ -29,6 +30,24 @@ npm install @dayinxisheng/novel-tools
|
|
|
29
30
|
|
|
30
31
|
## 使用
|
|
31
32
|
|
|
33
|
+
### 全局配置管理
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# 设置当前项目的小说路径
|
|
37
|
+
novel-tools config set my-novel
|
|
38
|
+
|
|
39
|
+
# 查看当前项目配置
|
|
40
|
+
novel-tools config get
|
|
41
|
+
|
|
42
|
+
# 列出所有已配置的项目
|
|
43
|
+
novel-tools config list
|
|
44
|
+
|
|
45
|
+
# 删除当前项目配置
|
|
46
|
+
novel-tools config unset
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
配置后,在项目的任何子目录执行命令都会自动使用配置的小说路径,无需每次指定 `-p` 参数。
|
|
50
|
+
|
|
32
51
|
### 初始化项目
|
|
33
52
|
|
|
34
53
|
```bash
|
package/dist/commands/check.js
CHANGED
|
@@ -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) {
|
|
@@ -60,7 +60,7 @@ export function createCheckCommand() {
|
|
|
60
60
|
.option('-p, --path <path>', '项目路径')
|
|
61
61
|
.action(async (arcName, options) => {
|
|
62
62
|
try {
|
|
63
|
-
const projectPath = CliUtils.resolveProjectPath(options.path);
|
|
63
|
+
const projectPath = await CliUtils.resolveProjectPath(options.path);
|
|
64
64
|
const validateService = new ValidateService();
|
|
65
65
|
CliUtils.title(`检查剧情弧: ${arcName}`);
|
|
66
66
|
const result = await validateService.validateArc(projectPath, arcName);
|
|
@@ -81,7 +81,7 @@ export function createCheckCommand() {
|
|
|
81
81
|
.option('-p, --path <path>', '项目路径')
|
|
82
82
|
.action(async (volumeStr, options) => {
|
|
83
83
|
try {
|
|
84
|
-
const projectPath = CliUtils.resolveProjectPath(options.path);
|
|
84
|
+
const projectPath = await CliUtils.resolveProjectPath(options.path);
|
|
85
85
|
const validateService = new ValidateService();
|
|
86
86
|
const volume = parseInt(volumeStr, 10);
|
|
87
87
|
if (isNaN(volume) || volume < 1) {
|
|
@@ -1 +1 @@
|
|
|
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,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|
package/dist/commands/event.js
CHANGED
|
@@ -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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,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,UAAU,CAAC,CAAC;IAE5B,sBAAsB;IACtB,GAAG;SACA,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;SAC5B,MAAM,CAAC,qBAAqB,EAAE,aAAa,CAAC;SAC5C,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAAC;SAC3C,MAAM,CAAC,mBAAmB,EAAE,SAAS,CAAC;SACtC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC;SAC/B,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAAO,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/commands/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,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,UAAU,CAAC,CAAC;IAE5B,sBAAsB;IACtB,GAAG;SACA,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;SAC5B,MAAM,CAAC,qBAAqB,EAAE,aAAa,CAAC;SAC5C,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAAC;SAC3C,MAAM,CAAC,mBAAmB,EAAE,SAAS,CAAC;SACtC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC;SAC/B,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAAO,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAEzC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACxC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,mBAAmB,EAAE,CAAC;YAE1C,SAAS;YACT,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9D,QAAQ;gBACR,MAAM,OAAO,CAAC,uBAAuB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YACjE,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACxB,QAAQ;gBACR,MAAM,OAAO,CAAC,oBAAoB,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5E,CAAC;iBAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC1B,aAAa;gBACb,MAAM,OAAO,CAAC,oBAAoB,CAChC,WAAW,EACX,UAAU,EACV,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,OAAO,CAChB,CAAC;YACJ,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,uBAAuB;IACvB,GAAG;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;SAC5B,MAAM,CAAC,uBAAuB,EAAE,+BAA+B,EAAE,OAAO,CAAC;SACzE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAAO,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAEzC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACxC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,SAAS;YACT,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YACnD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3C,QAAQ,CAAC,KAAK,CAAC,YAAY,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7C,QAAQ,CAAC,IAAI,CAAC,UAAU,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,mBAAmB,EAAE,CAAC;YAC1C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;YACtE,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;YAExC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,sBAAsB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YACnF,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,MAAuC,CAAC,CAAC;YAE/F,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,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,oBAAoB;IACpB,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,MAAM,CAAC,wBAAwB,EAAE,SAAS,CAAC;SAC3C,MAAM,CAAC,mBAAmB,EAAE,QAAQ,CAAC;SACrC,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,OAAO,GAAG,IAAI,mBAAmB,EAAE,CAAC;YAE1C,IAAI,OAA2B,CAAC;YAChC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACxC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;oBAClC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,MAAM,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,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"}
|
|
@@ -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;
|
|
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"}
|
package/dist/commands/index.js
CHANGED
|
@@ -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 {
|
|
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,
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAmN5C"}
|
package/dist/commands/query.js
CHANGED
|
@@ -11,19 +11,46 @@ export function createQueryCommand() {
|
|
|
11
11
|
// 查询静态设定
|
|
12
12
|
cmd
|
|
13
13
|
.command('setting')
|
|
14
|
-
.argument('<type>', '设定类型 (world|power_system
|
|
14
|
+
.argument('<type>', '设定类型 (world|power_system|currency等)')
|
|
15
15
|
.option('-p, --path <path>', '项目路径')
|
|
16
|
+
.option('-o, --outline', '显示设定大纲(大章节列表)')
|
|
17
|
+
.option('-s, --section <title>', '提取指定大章节内容')
|
|
16
18
|
.action(async (type, options) => {
|
|
17
19
|
try {
|
|
18
|
-
const projectPath = CliUtils.resolveProjectPath(options.path);
|
|
20
|
+
const projectPath = await CliUtils.resolveProjectPath(options.path);
|
|
19
21
|
const queryService = new QueryService();
|
|
20
22
|
if (!await queryService.validateProjectPath(projectPath)) {
|
|
21
23
|
CliUtils.error('未找到小说项目配置文件 (project.json)');
|
|
22
24
|
process.exit(1);
|
|
23
25
|
}
|
|
26
|
+
// 显示大纲
|
|
27
|
+
if (options.outline) {
|
|
28
|
+
const sections = await queryService.getSettingOutline(projectPath, type);
|
|
29
|
+
if (sections.length === 0) {
|
|
30
|
+
CliUtils.info('该设定文件没有大章节');
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
CliUtils.title(`设定大纲: ${type}`);
|
|
34
|
+
for (const section of sections) {
|
|
35
|
+
console.log(` - ${section}`);
|
|
36
|
+
}
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// 提取指定章节
|
|
40
|
+
if (options.section) {
|
|
41
|
+
const content = await queryService.querySettingSection(projectPath, type, options.section);
|
|
42
|
+
if (!content) {
|
|
43
|
+
CliUtils.error(`未找到章节: ${options.section}`);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
CliUtils.title(`${type} / ${options.section}`);
|
|
47
|
+
console.log(content);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// 默认:显示完整内容
|
|
24
51
|
const result = await queryService.queryStaticSetting(projectPath, type);
|
|
25
52
|
CliUtils.title(`查询设定: ${type}`);
|
|
26
|
-
console.log(
|
|
53
|
+
console.log(result);
|
|
27
54
|
}
|
|
28
55
|
catch (error) {
|
|
29
56
|
CliUtils.error(error instanceof Error ? error.message : String(error));
|
|
@@ -37,7 +64,7 @@ export function createQueryCommand() {
|
|
|
37
64
|
.option('-p, --path <path>', '项目路径')
|
|
38
65
|
.action(async (name, options) => {
|
|
39
66
|
try {
|
|
40
|
-
const projectPath = CliUtils.resolveProjectPath(options.path);
|
|
67
|
+
const projectPath = await CliUtils.resolveProjectPath(options.path);
|
|
41
68
|
const queryService = new QueryService();
|
|
42
69
|
if (!await queryService.validateProjectPath(projectPath)) {
|
|
43
70
|
CliUtils.error('未找到小说项目配置文件 (project.json)');
|
|
@@ -71,7 +98,7 @@ export function createQueryCommand() {
|
|
|
71
98
|
.option('-p, --path <path>', '项目路径')
|
|
72
99
|
.action(async (name, options) => {
|
|
73
100
|
try {
|
|
74
|
-
const projectPath = CliUtils.resolveProjectPath(options.path);
|
|
101
|
+
const projectPath = await CliUtils.resolveProjectPath(options.path);
|
|
75
102
|
const queryService = new QueryService();
|
|
76
103
|
if (!await queryService.validateProjectPath(projectPath)) {
|
|
77
104
|
CliUtils.error('未找到小说项目配置文件 (project.json)');
|
|
@@ -99,7 +126,7 @@ export function createQueryCommand() {
|
|
|
99
126
|
.option('-p, --path <path>', '项目路径')
|
|
100
127
|
.action(async (options) => {
|
|
101
128
|
try {
|
|
102
|
-
const projectPath = CliUtils.resolveProjectPath(options.path);
|
|
129
|
+
const projectPath = await CliUtils.resolveProjectPath(options.path);
|
|
103
130
|
const queryService = new QueryService();
|
|
104
131
|
if (!await queryService.validateProjectPath(projectPath)) {
|
|
105
132
|
CliUtils.error('未找到小说项目配置文件 (project.json)');
|
|
@@ -131,7 +158,7 @@ export function createQueryCommand() {
|
|
|
131
158
|
.option('-p, --path <path>', '项目路径')
|
|
132
159
|
.action(async (options) => {
|
|
133
160
|
try {
|
|
134
|
-
const projectPath = CliUtils.resolveProjectPath(options.path);
|
|
161
|
+
const projectPath = await CliUtils.resolveProjectPath(options.path);
|
|
135
162
|
const queryService = new QueryService();
|
|
136
163
|
if (!await queryService.validateProjectPath(projectPath)) {
|
|
137
164
|
CliUtils.error('未找到小说项目配置文件 (project.json)');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAE3B,SAAS;IACT,GAAG;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,QAAQ,CAAC,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,8 +44,13 @@ export declare class CliUtils {
|
|
|
44
44
|
*/
|
|
45
45
|
static confirm(message: string): Promise<boolean>;
|
|
46
46
|
/**
|
|
47
|
-
*
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
* 获取项目路径(异步)
|
|
48
|
+
*
|
|
49
|
+
* 解析优先级:
|
|
50
|
+
* 1. 显式指定的 -p/--path 参数
|
|
51
|
+
* 2. 全局配置中的小说路径
|
|
52
|
+
* 3. 当前工作目录
|
|
53
|
+
*/
|
|
54
|
+
static resolveProjectPath(projectPath?: string): Promise<string>;
|
|
50
55
|
}
|
|
51
56
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;GAEG;AACH,qBAAa,QAAQ;IACnB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMnC;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAyB5D;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI/D;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,IAAI;IAIxB;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,SAAI,GAAG,IAAI;IAOnD;;OAEG;WACU,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAevD
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;GAEG;AACH,qBAAa,QAAQ;IACnB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMnC;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAyB5D;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI/D;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,IAAI;IAIxB;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,SAAI,GAAG,IAAI;IAOnD;;OAEG;WACU,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAevD;;;;;;;OAOG;WACU,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAmBvE"}
|