-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.js
76 lines (71 loc) · 2.1 KB
/
utils.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
76
const fsPromises = require('fs/promises')
const chalk = require('chalk')
exports.makeDirs = async function (baseDir, name, kebabName = undefined) {
const dirName = kebabName === undefined ? name : kebabName
const make = [
// doing these in two passes so console output is more granular
`./${baseDir}`,
`./${baseDir}/${dirName}`
]
console.log(chalk.magentaBright(`baseDir: ${baseDir}`))
for (const dir of make) {
try {
await fsPromises.access(`${dir}`)
console.log(chalk.yellowBright(`${dir}/ exists`))
} catch {
console.log(chalk.magentaBright(`creating ${dir}/...`))
try {
// create dir if it doesn't exist
await fsPromises.mkdir(`./${dir}`, { recursive: true })
console.log(chalk.greenBright(`${dir}/ created`))
} catch (err) {
console.error(chalk.redBright(`ERROR (makeDirs): ${err}`))
}
}
}
}
exports.makeFile = async function (
baseDir,
name,
files,
file = undefined,
kebabName = undefined
) {
// file ex: files.functional
let template = {}
let isConfig = false
if (file !== undefined) {
// aac
template = files[file]
} else {
// aap
template.boilerplate = files[name]
template.extension = `jsx`
isConfig = true
}
const fileName = kebabName === undefined ? name : kebabName // TODO rename fileName since we use it for the dir sometimes
const fullName = isConfig ? fileName + '.boilerplate' : fileName
try {
await fsPromises.access(
`./${baseDir}/${fileName}/${fullName}.${template.extension}`
)
console.log(chalk.yellowBright(`${fullName}.${template.extension} exists`))
} catch (err) {
console.log(
chalk.magentaBright(
`${fullName}.${template.extension} doesn't exist, creating...`
)
)
try {
await fsPromises.writeFile(
`${baseDir}/${fileName}/${fullName}.${template.extension}`,
`${template.boilerplate}`
)
console.log(
chalk.greenBright(`${fullName}.${template.extension} created`)
)
} catch (err) {
console.error(chalk.redBright('Error Writing File', err))
}
}
}