-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcreatePost.js
75 lines (66 loc) · 2.25 KB
/
createPost.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
const fs = require('fs')
// Fetch command line arguments
const args = process.argv.slice(2) // Remove default first two parameters
// Define parameters and their default values
const expectedArgs = {
'-t': null, // title
'-d': null, // date
'-f': false, // create file
}
// Iterate through provided arguments
for (let i = 0; i < args.length; i++) {
const arg = args[i]
if (expectedArgs.hasOwnProperty(arg)) {
// Check for boolean-type parameters (parameters that do not require values)
if (typeof expectedArgs[arg] === 'boolean') {
expectedArgs[arg] = true // Enable this functionality
} else {
// If not a boolean-type parameter, check if the next argument exists as its value
const value = args[i + 1]
if (!value || value.startsWith('-')) {
console.error('Error: Missing argument value -', arg)
console.log('Correct usage: node myfile.js -t <value for t> -f -d')
process.exit(1) // Terminate due to parameter error
}
expectedArgs[arg] = value // Store parameter value
i++ // Skip the next argument (value)
}
} else {
console.error('Error: Invalid argument -', arg)
console.log('Correct usage: node myfile.js -t <value for t> -f -d')
process.exit(1) // Terminate due to invalid parameter
}
}
console.log('Provided parameters:', expectedArgs)
const title = expectedArgs['-t'] || 'new-post'
let date = expectedArgs['-d']
? new Date(+new Date(expectedArgs['-d'])).toISOString()
: new Date(+new Date()).toISOString()
let tmpDate = new Date()
let yyyy = String(tmpDate.getFullYear()).padStart(4, 0)
let mm = String(tmpDate.getMonth() + 1).padStart(2, 0)
let dd = String(tmpDate.getDate()).padStart(2, 0)
let yyyymmdd = `${yyyy}-${mm}-${dd}`
let template = `---
slug: '/${title}'
date: '${date}'
title: ''
tags: ['tag']
released: true
hidden: false
description: 'description'
---`
const isCreateFile = expectedArgs['-f']
const name = `${yyyymmdd}-${title}`
if (isCreateFile) {
fs.appendFile(`./src/pages/${name}.md`, template, (err) => {
if (err) throw err
console.log('New file is created')
})
} else {
fs.mkdirSync(`./src/pages/${name}`)
fs.appendFile(`./src/pages/${name}/index.md`, template, (err) => {
if (err) throw err
console.log('New file is created')
})
}