1 | const path = require('path')
|
2 |
|
3 | function atLeastOne (input) {
|
4 | if (input.length === 0) {
|
5 | return 'please choose at least one option'
|
6 | }
|
7 | return true
|
8 | }
|
9 |
|
10 |
|
11 |
|
12 | function guessProjectName (generator) {
|
13 | const packagejsonPath = generator.destinationPath('package.json')
|
14 | return (generator.fs.exists(packagejsonPath) && generator.fs.readJSON('package.json').name) || path.basename(process.cwd())
|
15 | }
|
16 |
|
17 | function readPackageJson (generator) {
|
18 | const packagejsonPath = generator.destinationPath('package.json')
|
19 | return generator.fs.readJSON(packagejsonPath) || {}
|
20 | }
|
21 |
|
22 | function writePackageJson (generator, content) {
|
23 | const packagejsonPath = generator.destinationPath('package.json')
|
24 | return generator.fs.writeJSON(packagejsonPath, content || {})
|
25 | }
|
26 |
|
27 | function addDependencies (generator, deps, dev = false) {
|
28 | const content = readPackageJson(generator)
|
29 | const key = dev ? 'devDependencies' : 'dependencies'
|
30 | content[key] = { ...content[key], ...deps }
|
31 | writePackageJson(generator, content)
|
32 | }
|
33 |
|
34 | function addPkgScript (generator, scripts) {
|
35 | const content = readPackageJson(generator)
|
36 | content.scripts = { ...content.scripts, ...scripts }
|
37 | writePackageJson(generator, content)
|
38 | }
|
39 |
|
40 | function appendOrWrite (generator, file, content, filter) {
|
41 | if (generator.fs.exists(file)) {
|
42 |
|
43 | return !(filter && generator.fs.read(file).includes(filter)) && generator.fs.append(file, content)
|
44 | }
|
45 | return generator.fs.write(file, content)
|
46 | }
|
47 |
|
48 | module.exports = {
|
49 | atLeastOne,
|
50 | guessProjectName,
|
51 | addDependencies,
|
52 | appendOrWrite,
|
53 | addPkgScript,
|
54 | readPackageJson,
|
55 | writePackageJson
|
56 | }
|