Skip to content

Commit 7d4dbf3

Browse files
committed
feat: upgrade commander to v12 and refactor the utility command pnpm lc:new
1 parent 6c417d2 commit 7d4dbf3

File tree

3 files changed

+22
-17
lines changed

3 files changed

+22
-17
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"@types/mustache": "^4.2.4",
4141
"@types/node": "^20.9.3",
4242
"@typescript-eslint/parser": "^7.0.2",
43-
"commander": "^11.1.0",
43+
"commander": "^12.0.0",
4444
"commitizen": "^4.3.0",
4545
"dayjs": "^1.11.10",
4646
"dotenv": "^16.3.1",

pnpm-lock.yaml

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

src/cmd/leetcode.ts

+16-11
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,17 @@ const templateBaseDir = path.join(__dirname, '../leetcode/templates')
2323
const templateExtension = 'mustache'
2424
const questionList = lc.data.problemsetQuestionList
2525

26-
const getQuestionNumber: () => number = () => {
27-
program.parse()
28-
29-
const question: string = program.args[0] || ''
26+
const getQuestionNumber: (questionNumberAsString: string) => number = (questionNumberAsString: string = '') => {
3027
const regex = new RegExp('\\d+')
3128

32-
if (!regex.test(question)) {
33-
throw new InvalidArgumentError(`Input must be number: ${program.args[0]}`)
29+
if (!regex.test(questionNumberAsString)) {
30+
throw new InvalidArgumentError(`Input must be number: ${questionNumberAsString}`)
3431
}
3532

36-
const questionNumber = Number(question)
33+
const questionNumber = Number(questionNumberAsString)
3734

3835
if (questionNumber < 0) {
39-
throw new InvalidArgumentError(`Input must be a positive integer: ${program.args[0]}`)
36+
throw new InvalidArgumentError(`Input must be a positive integer: ${questionNumberAsString}`)
4037
}
4138

4239
return questionNumber
@@ -99,8 +96,7 @@ const render: (fileName: string, templateData: object) => string = (fileName: st
9996
}
10097

10198
// Main program
102-
const generateNewPost: () => void = async () => {
103-
const questionNumber: number = getQuestionNumber()
99+
const generateNewPost: (questionNumber: number) => void = async (questionNumber: number) => {
104100
const question = getQuestion(questionNumber)
105101

106102
if (question === undefined) {
@@ -122,4 +118,13 @@ const generateNewPost: () => void = async () => {
122118
writeToFile(path.join(__dirname, '../content/leetcode-solutions', `${slug}.md`), output)
123119
}
124120

125-
generateNewPost()
121+
program.name('pnpm lc:new')
122+
.description('Utility to generate new blog post')
123+
.version('1.0.0')
124+
.argument('<leetcode-question-number>', 'Leetcode question number')
125+
.action((questionNumberAsString, _) => {
126+
const questionNumber: number = getQuestionNumber(questionNumberAsString)
127+
generateNewPost(questionNumber)
128+
});
129+
130+
program.parse()

0 commit comments

Comments
 (0)