Skip to content

Commit 5466312

Browse files
committed
Merge branch 'develop'
# Conflicts: # package.json
2 parents af99105 + a1cccc7 commit 5466312

11 files changed

+155
-28
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ A CLI generator for Vue components, pages and store modules
44
## Install
55

66
```console
7-
$ npm install vue-generator -g
7+
$ npm install -g vue-generator
88
```
99

1010
## Usage

bin/vue-generator

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@ program
99
.version(require('../package').version)
1010
.usage('<command> [options]')
1111
.command('wizard', 'Start generator wizard', {isDefault: true})
12+
.command('init', 'Create local .vuegenerator file with settings')
1213
.command('component', 'Create component')
1314
.command('store', 'Create store module')
1415
.command('page', 'Create page')
15-
.command('reset', 'Reset settings')
16+
.command('reset', 'Reset global settings')
1617
.command('settings', 'Set or display settings')
1718
.command('template', 'Open default template directory to edit default templates')
1819
.parse(process.argv);

bin/vue-generator-init

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/env node
2+
3+
const program = require('commander');
4+
const init = require('../src/init');
5+
6+
program
7+
.parse(process.argv);
8+
9+
init();

bin/vue-generator-reset

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,12 @@ program
99

1010
Settings.resetSettings();
1111

12-
console.log(chalk.green('Settings are reset to defaults'));
13-
console.log(Settings.getSettings());
12+
console.log();
13+
console.log(chalk.green('Global settings are reset to defaults.'));
14+
console.log();
15+
16+
console.log(chalk.green('Global settings:'));
17+
18+
Settings.logSettings(Settings.getSettings({}, true));
19+
20+

bin/vue-generator-settings

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,24 @@ program
99
.option('-s, --store-destination <destination>', 'Set store default destination')
1010
.option('-c, --component-destination <destination>', 'Set component default destination')
1111
.option('-t, --template-path <destination>', 'Set default template directory')
12-
.option('-l, --log', 'Log settings')
12+
.option('-g, --global', 'Set global settings')
13+
.option('-l, --log', 'Log global or local settings depending on global flag')
1314
.parse(process.argv);
1415

1516
if (program.log) {
16-
console.log(chalk.green('Settings:'));
17-
console.log(Settings.getSettings());
17+
console.log();
18+
19+
if(program.global)
20+
{
21+
console.log(chalk.green('Global settings:'));
22+
Settings.logSettings(Settings.getSettings({}, true));
23+
}
24+
else
25+
{
26+
console.log(chalk.green('Local settings:'));
27+
Settings.logSettings(Settings.getLocalSettings());
28+
}
29+
1830
process.exit(1);
1931
}
2032

@@ -36,7 +48,28 @@ if (program.templatePath) {
3648
settings['templatePath'] = program.templatePath;
3749
}
3850

39-
Settings.setSettings(settings);
51+
if(Object.keys(settings).length == 0)
52+
{
53+
console.log();
54+
console.log(chalk.green(`Settings:`));
55+
Settings.logSettings(Settings.getSettings());
56+
process.exit(1);
57+
}
58+
59+
if(program.global){
60+
Settings.setGlobalSettings(settings);
61+
62+
console.log();
63+
console.log(chalk.green('Global settings updated:'));
64+
Settings.logSettings(Settings.getSettings({}, true));
65+
}
66+
else {
67+
const updatedSettings = Object.assign({}, Settings.getLocalSettings(), settings);
68+
Settings.setLocalSettings(updatedSettings);
69+
70+
console.log();
71+
console.log(chalk.green('Local settings updated:'));
72+
Settings.logSettings(updatedSettings);
73+
}
74+
4075

41-
console.log(chalk.green('Settings updated:'));
42-
console.log(Settings.getSettings());

package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@
1212
"vue-generator-settings": "bin/vue-generator-settings",
1313
"vue-generator-store": "bin/vue-generator-store",
1414
"vue-generator-template": "bin/vue-generator-template",
15+
"vue-generator-init": "bin/vue-generator-init",
1516
"vg": "bin/vue-generator",
1617
"vg-wizard": "bin/vue-generator-wizard",
1718
"vg-component": "bin/vue-generator-component",
1819
"vg-page": "bin/vue-generator-page",
1920
"vg-reset": "bin/vue-generator-reset",
2021
"vg-settings": "bin/vue-generator-settings",
2122
"vg-store": "bin/vue-generator-store",
22-
"vg-template": "bin/vue-generator-template"
23+
"vg-template": "bin/vue-generator-template",
24+
"vg-init": "bin/vue-generator-init"
2325
},
2426
"author": "Hendrik-Jan de Harder",
2527
"license": "MIT",
@@ -44,6 +46,7 @@
4446
"to-pascal-case": "^1.0.0",
4547
"to-slug-case": "^1.0.0",
4648
"to-snake-case": "^1.0.0",
49+
"to-space-case": "^1.0.0",
4750
"user-settings": "^0.1.5"
4851
},
4952
"engines": {

src/generateDirect.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ module.exports = function generateDirect(type, destinationSettingsKey) {
2424

2525

2626
if (!componentName) {
27-
console.error(chalk.red('no name given'));
27+
console.error(chalk.red('No name given'));
2828
process.exit(1);
2929
}
3030

src/init.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
const Settings = require('./settings');
2+
const inquirer = require('inquirer');
3+
const Questions = require('./questions');
4+
const chalk = require('chalk');
5+
6+
module.exports = function init() {
7+
let settings = Settings.getSettings();
8+
9+
const questions = Questions.getSettingQuestions(settings);
10+
11+
inquirer.prompt(questions).then((answers) => {
12+
Settings.setLocalSettings(answers);
13+
14+
console.log();
15+
console.log(chalk.green('Local settings:'));
16+
17+
Settings.logSettings(Settings.getLocalSettings());
18+
});
19+
};
20+
21+

src/questions.js

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ const templateType = require('./templateType');
22
const wizardType = require('./wizardType');
33
const path = require('path');
44
const fs = require('fs');
5+
const toSpaceCase = require('to-space-case');
56

6-
module.exports = function questions(type, settings, name) {
7+
exports.getGeneratorQuestions = function (type, settings, name) {
78
let questions;
89

910
switch (type) {
@@ -28,6 +29,19 @@ module.exports = function questions(type, settings, name) {
2829
return questions;
2930
};
3031

32+
exports.getSettingQuestions = function (settings) {
33+
return Object.keys(settings).map(key => askSetting(key, settings[key]));
34+
};
35+
36+
function askSetting(key, defaultValue) {
37+
return {
38+
type: 'input',
39+
name: key,
40+
message: toSpaceCase(key),
41+
default: defaultValue || ''
42+
}
43+
}
44+
3145
function askType() {
3246
return {
3347
type: 'list',
@@ -42,7 +56,13 @@ function askName(defaultName) {
4256
type: 'input',
4357
name: 'name',
4458
message: 'What name do you want to use?',
45-
default: defaultName || ''
59+
default: defaultName || '',
60+
filter(value){
61+
return value.trim();
62+
},
63+
validate(value){
64+
return value.trim().length == 0 ? 'No name given' : true;
65+
}
4666
}
4767
}
4868

src/settings.js

Lines changed: 45 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
const userSettings = require('user-settings').file('.vuegenerator');
1+
const settingsFile = '.vuegenerator';
2+
3+
const userSettings = require('user-settings').file(settingsFile);
4+
const fs = require('fs');
5+
const path = require('path');
6+
const chalk = require('chalk');
27

38
const defaultSettings = {
49
pageDestination: './src/page/',
@@ -7,19 +12,48 @@ const defaultSettings = {
712
templatePath: ''
813
};
914

10-
exports.getSettings = function (overrides = {}) {
11-
return Object.assign({}, defaultSettings, getUserSettings(), overrides);
15+
exports.getSettings = function (overrides = {}, ignoreLocalSettings = false) {
16+
const localSettings = ignoreLocalSettings ? {} : this.getLocalSettings();
17+
18+
return Object.assign({}, defaultSettings, this.getUserSettings(), localSettings, overrides);
1219
};
1320

1421
exports.resetSettings = function () {
1522
Object.keys(defaultSettings).forEach(key => userSettings.unset(key));
1623
};
1724

18-
exports.setSettings = function (settings) {
25+
exports.setGlobalSettings = function (settings) {
1926
Object.keys(settings).forEach(key => userSettings.set(key, settings[key]));
2027
};
2128

22-
function getUserSettings() {
29+
exports.setLocalSettings = function (settings) {
30+
fs.writeFileSync(path.resolve(settingsFile), JSON.stringify(settings, null, 2));
31+
};
32+
33+
exports.hasLocalSettings = function () {
34+
return fs.existsSync(path.resolve(settingsFile));
35+
};
36+
37+
exports.getLocalSettings = function () {
38+
if (this.hasLocalSettings()) {
39+
const fileContent = fs.readFileSync(path.resolve(settingsFile), {encoding: 'utf-8'});
40+
41+
let settings;
42+
43+
try {
44+
settings = JSON.parse(fileContent);
45+
} catch (e) {
46+
console.error(chalk.red(`Error parsing local ${settingsFile} file.`));
47+
process.exit(1);
48+
}
49+
50+
return settings;
51+
}
52+
53+
return {};
54+
};
55+
56+
exports.getUserSettings = function () {
2357
return Object.keys(defaultSettings).reduce((settings, key) => {
2458
const setting = userSettings.get(key);
2559

@@ -29,12 +63,11 @@ function getUserSettings() {
2963

3064
return settings;
3165
}, {});
32-
}
33-
34-
function getLocalSettings() {
35-
36-
}
66+
};
3767

38-
function saveSettingsLocal(overrides) {
68+
exports.logSettings = function (settings) {
69+
Object.keys(settings).forEach((key) => {
70+
console.log(`${chalk.bold(key)}: '${settings[key]}'`);
71+
});
72+
};
3973

40-
}

0 commit comments

Comments
 (0)