Skip to content

Commit 9bb02a3

Browse files
committed
docs:some text
1 parent a879d29 commit 9bb02a3

File tree

3 files changed

+160
-198
lines changed

3 files changed

+160
-198
lines changed

bin/lc.js

+100-96
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,100 @@
1-
#! /usr/bin/env node
2-
import {program} from "commander";
3-
import {artFontLogo} from "#resources/text/art-font-logo.js";
4-
import {lcExamples} from "#resources/text/examples.js";
5-
import {love} from "#resources/text/love.js";
6-
import {aim} from "#resources/text/aim.js";
7-
import {referMode} from "#common/utils/create-check/refer-mode.js";
8-
import {getArgs} from "#common/utils/create-check/get-args.js";
9-
import {getQuestionToday} from "#common/utils/question-getter/getQuestionToday.js";
10-
import {createQuestion} from "#common/utils/question-handler/createQuestion.js";
11-
import path from "path";
12-
import {getQuestionFileName} from "#common/utils/question-handler/getQuestionFileName.js";
13-
import {createQuestionCopy} from "#common/utils/question-handler/createQuestionCopy.js";
14-
import {getQuestionRandom} from "#common/utils/question-getter/getQuestionRandom.js";
15-
import {getQuestionById} from "#common/utils/question-getter/getQuestionById.js";
16-
import {setQuestion} from "#common/utils/store/store-realm.js";
17-
import {getQuestionChineseName} from "#common/utils/question-handler/getQuestionChineseName.js";
18-
import {easyCreateView} from "#common/view/create.view.js";
19-
import {description} from "#resources/text/description.js";
20-
import {easyUpdateView} from "#common/view/update.view.js";
21-
22-
const version = process.env.VERSION??'0.0.0';
23-
program
24-
.version(version)
25-
.description(`${description}\n${artFontLogo}\n${aim}`)
26-
.addHelpText('after', lcExamples+love)
27-
.arguments("[identity]")
28-
.option('-t, --today', 'Get a question today.')
29-
.option('-i, --identity <identity>', 'Specify a question by identity.')
30-
.option('-r, --random', 'Get a question randomly.')
31-
.option('-e, --easy', 'Use easy mode.')
32-
.option('-d, --directory <directory>', 'Set the question directory.')
33-
.option('-u, --update','Check the version to determine whether to update to the latest one.')
34-
.parse(process.argv)
35-
36-
const cmdArgs = program.args;
37-
const cmdOpts = program.opts();
38-
/**
39-
* 执行逻辑:
40-
* 目录检测 - 设置基础目录
41-
* 模式检测 - 检测是不是easy mode
42-
* [参数检测 - 执行对应参数]
43-
*/
44-
// 根据dir 参数来设置基本目录
45-
const baseDir = cmdOpts.directory?path.join(process.cwd(),cmdOpts.directory):process.cwd();
46-
if(cmdOpts.easy){
47-
await easyCreateView();
48-
process.exit(0);;
49-
}
50-
// 检测更新
51-
if(cmdOpts.update){
52-
await easyUpdateView();
53-
process.exit(0);;
54-
}
55-
// 创建
56-
const create = (mode,question)=>{
57-
console.log(`MODE: ${mode}`);
58-
return new Promise(resolve=>{
59-
setQuestion(mode,question);
60-
const questionDir = path.join(baseDir,getQuestionFileName(question))
61-
createQuestion(question,questionDir).then(async (path)=>{
62-
if(!path)path = await createQuestionCopy(question,questionDir);
63-
console.log(`题目[${getQuestionChineseName(question)}]获取成功!\n题目文件地址为:${path}`)
64-
resolve(true)
65-
})
66-
})
67-
}
68-
// 模式对应的action
69-
const callModeAction = {
70-
'today': () => {
71-
getQuestionToday().then(question=>{
72-
create("today",question).then(()=>{
73-
process.exit(0)
74-
});
75-
})
76-
},
77-
'random': () => {
78-
getQuestionRandom().then(question=>{
79-
create("random",question).then(()=>{
80-
process.exit(0)
81-
});
82-
})
83-
},
84-
'identity': (id) => {
85-
getQuestionById(id).then(question=>{
86-
create("identity",question).then(()=>{
87-
process.exit(0)
88-
});
89-
})
90-
},
91-
}
92-
// 获取模式和参数
93-
const mode = referMode(cmdArgs, cmdOpts);
94-
const args = getArgs(mode,cmdArgs,cmdOpts);
95-
// 执行指令分发
96-
await callModeAction[mode](args);
1+
#! /usr/bin/env node
2+
import {program} from "commander";
3+
import {artFontLogo} from "#resources/text/art-font-logo.js";
4+
import {lcExamples} from "#resources/text/examples.js";
5+
import {love} from "#resources/text/love.js";
6+
import {aim} from "#resources/text/aim.js";
7+
import {referMode} from "#common/utils/create-check/refer-mode.js";
8+
import {getArgs} from "#common/utils/create-check/get-args.js";
9+
import {getQuestionToday} from "#common/utils/question-getter/getQuestionToday.js";
10+
import {createQuestion} from "#common/utils/question-handler/createQuestion.js";
11+
import path from "path";
12+
import {getQuestionFileName} from "#common/utils/question-handler/getQuestionFileName.js";
13+
import {createQuestionCopy} from "#common/utils/question-handler/createQuestionCopy.js";
14+
import {getQuestionRandom} from "#common/utils/question-getter/getQuestionRandom.js";
15+
import {getQuestionById} from "#common/utils/question-getter/getQuestionById.js";
16+
import {setQuestion} from "#common/utils/store/store-realm.js";
17+
import {getQuestionChineseName} from "#common/utils/question-handler/getQuestionChineseName.js";
18+
import {easyCreateView} from "#common/view/create.view.js";
19+
import {description} from "#resources/text/description.js";
20+
import {easyUpdateView} from "#common/view/update.view.js";
21+
22+
const version = process.env.VERSION??'0.0.0';
23+
program
24+
.version(version)
25+
.description(`${description}\n${artFontLogo}\n${aim}`)
26+
.addHelpText('after', lcExamples+love)
27+
.arguments("[identity]")
28+
.option('-t, --today', 'Get a question today.')
29+
.option('-i, --identity <identity>', 'Specify a question by identity.')
30+
.option('-r, --random', 'Get a question randomly.')
31+
.option('-e, --easy', 'Use easy mode.')
32+
.option('-d, --directory <directory>', 'Set the question directory.')
33+
.option('-u, --update','Check the version to determine whether to update to the latest one.')
34+
.parse(process.argv)
35+
36+
const cmdArgs = program.args;
37+
const cmdOpts = program.opts();
38+
/**
39+
* 执行逻辑:
40+
* 目录检测 - 设置基础目录
41+
* 模式检测 - 检测是不是easy mode
42+
* [参数检测 - 执行对应参数]
43+
*/
44+
// 根据dir 参数来设置基本目录
45+
const baseDir = cmdOpts.directory?path.join(process.cwd(),cmdOpts.directory):process.cwd();
46+
if(cmdOpts.easy){
47+
await easyCreateView();
48+
process.exit(0);;
49+
}
50+
// 检测更新
51+
if(cmdOpts.update){
52+
await easyUpdateView();
53+
process.exit(0);;
54+
}
55+
// 创建
56+
const create = (mode,question)=>{
57+
console.log(`MODE: ${mode}`);
58+
return new Promise(resolve=>{
59+
setQuestion(mode,question);
60+
const questionDir = path.join(baseDir,getQuestionFileName(question))
61+
createQuestion(question,questionDir).then(async (path)=>{
62+
if(!path)path = await createQuestionCopy(question,questionDir);
63+
console.log(`题目[${getQuestionChineseName(question)}]获取成功!\n题目文件地址为:${path}`)
64+
resolve(true)
65+
})
66+
})
67+
}
68+
// 模式对应的action
69+
const callModeAction = {
70+
'today': () => {
71+
getQuestionToday().then(question=>{
72+
create("today",question).then(()=>{
73+
process.exit(0)
74+
});
75+
})
76+
},
77+
'random': () => {
78+
getQuestionRandom().then(question=>{
79+
create("random",question).then(()=>{
80+
process.exit(0)
81+
});
82+
})
83+
},
84+
'identity': (id) => {
85+
getQuestionById(id).then(question=>{
86+
if(!question?.id) {
87+
console.log(`指定编号: [ ${id} ] 题目不存在.`)
88+
process.exit(0)
89+
}
90+
create("identity",question).then(()=>{
91+
process.exit(0)
92+
});
93+
})
94+
},
95+
}
96+
// 获取模式和参数
97+
const mode = referMode(cmdArgs, cmdOpts);
98+
const args = getArgs(mode,cmdArgs,cmdOpts);
99+
// 执行指令分发
100+
await callModeAction[mode](args);

bin/lk.js

+1-89
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/README_CN.md

+59-13
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,15 @@ npm run easy-fork
103103

104104
##### [1]. 获取今日题目
105105

106-
在终端中键入`lc`指令,即可默认获取今日的题目在当前终端的工作区中
106+
在终端中键入`lc`指令,即可默认在当前终端的工作区中获取今日的题目
107107

108108
```shell
109109
lc
110110
# 完整指令
111111
lc -t
112112
```
113113

114-
正常获取会得到如下提示
114+
示例获取今日题目
115115

116116
```shell
117117
# 例如当前执行目录为src目录
@@ -121,35 +121,81 @@ MODE: today
121121
题目文件地址为:/home/wh131462/workspace/leetcode-practice/src/2867.count-valid-paths-in-a-tree/index.js
122122
```
123123

124-
在执行指令后会在当前的活动目录创建今日题目。
125-
126124
##### [2]. 获取指定题目
127-
在终端中键入`lc`指令加上对应的题号,即可获取指定题目在当前终端的工作区中。
125+
126+
在终端中键入`lc`指令加上对应的题号,即可在当前工作区中获取指定题目。
128127

129128
```shell
130129
lc 1314
131130
# 完整指令
132131
lc -i 1314
133132
# 使用双引号(")进行包裹 可以确保指定编号准确,对于带空格的题目编号尤其有用
134-
lc -i "LCR 50"
133+
lc -i "LCP 50"
135134
```
136135

137-
示例获取LCR 50:
136+
示例获取`LCP 50`
138137

139138
```shell
140-
➜ src git:(dev) ✗ lc 1314
139+
➜ src git:(dev) ✗ lc "LCP 50"
141140
MODE: identity
142-
题目[1314.矩阵区域和]获取成功!
143-
题目文件地址为:/home/wh131462/workspace/leetcode-practice/src/1314.matrix-block-sum/index.js
141+
题目[LCP 50.宝石补给]获取成功!
142+
题目文件地址为:/home/wh131462/workspace/leetcode-practice/src/LCP 50.WHnhjV/index.js
144143
```
145144

146-
在执行指令后会在当前的活动目录创建今日题目。
147-
148145
##### [3]. 获取随机题目
149146

147+
在终端中键入`lc`指令加上参数`-r`,即可在当前工作区中获取随机题目,会优先获取不存在当前目录中的题目。
148+
149+
```shell
150+
# 完整指令
151+
lc -r
152+
```
153+
154+
示例获取随机题目:
155+
156+
```shell
157+
➜ src git:(dev) ✗ lc -r
158+
MODE: random
159+
题目[14.最长公共前缀]获取成功!
160+
题目文件地址为:/home/wh131462/workspace/leetcode-practice/src/14.longest-common-prefix/index.js
161+
```
162+
150163
##### [4]. 指定创建题目的目录
151164

152-
##### [5]. 创建
165+
在创建题目的三个指令之外还可以使用参数`-d`来指定基于当前工作目录的相对地址作为题目生成的目录。
166+
```shell
167+
# 指定当前目录的子目录src作为生成目录
168+
lc -d src -t
169+
```
170+
171+
使用示例:
172+
173+
```shell
174+
➜ src git:(dev) ✗ lc -d src -t
175+
MODE: today
176+
题目[2867.统计树中的合法路径数目]获取成功!
177+
题目文件地址为:/home/wh131462/workspace/leetcode-practice/src/src/2867.count-valid-paths-in-a-tree/index.js
178+
```
179+
180+
> 注意: 如果指定的目录不存在,会自动生成一个空目录进行创建。
181+
182+
##### [5]. 简单创建模式(交互式创建)
183+
184+
除了如上的使用精准的指令快速创建题目外,还可以使用简单创建模式来进行交互式创建。
185+
```shell
186+
lc -e
187+
```
188+
189+
使用简单模式创建今日题目示例:
190+
191+
```shell
192+
➜ src git:(dev) ✗ lc -e
193+
? 请选择创建问题的模式: today
194+
? 是否在目录[ /home/wh131462/workspace/leetcode-practice/src ]下创建题目[ 2867.count-valid-paths-in-a-tree ]? Yes
195+
题目[2867.count-valid-paths-in-a-tree]创建完成!
196+
文件地址为: /home/wh131462/workspace/leetcode-practice/src/2867.count-valid-paths-in-a-tree/index.js
197+
198+
```
153199

154200
#### 2. 检查题解
155201

0 commit comments

Comments
 (0)