Skip to content

Commit

Permalink
Merge cba5e01 into e40c828
Browse files Browse the repository at this point in the history
  • Loading branch information
mischah committed Dec 3, 2016
2 parents e40c828 + cba5e01 commit c16729b
Show file tree
Hide file tree
Showing 9 changed files with 84 additions and 86 deletions.
3 changes: 2 additions & 1 deletion .eslintrc
Expand Up @@ -2,7 +2,8 @@
"extends": "eslint:recommended",
"env": {
"node": true,
"mocha": true
"mocha": true,
"es6": true
},
"rules": {
"array-bracket-spacing": [
Expand Down
3 changes: 2 additions & 1 deletion .travis.yml
@@ -1,6 +1,7 @@
sudo: false
language: node_js
node_js:
- stable
- 7
- 6
- 5
- 4
64 changes: 29 additions & 35 deletions app/index.js
@@ -1,6 +1,6 @@
'use strict';
var path = require('path');
var generators = require('yeoman-generator');
var Generator = require('yeoman-generator');
var askName = require('inquirer-npm-name');
var _ = require('lodash');
var extend = require('deep-extend');
Expand All @@ -12,12 +12,12 @@ function makeGeneratorName(name) {
return name;
}

module.exports = generators.Base.extend({
initializing: function () {
module.exports = class extends Generator {
initializing() {
this.props = {};
},
}

prompting: function () {
prompting() {
return askName({
name: 'name',
message: 'Your generator name',
Expand All @@ -29,9 +29,9 @@ module.exports = generators.Base.extend({
}, this).then(function (props) {
this.props.name = props.name;
}.bind(this));
},
}

default: function () {
default() {
if (path.basename(this.destinationPath()) !== this.props.name) {
this.log(
'Your generator must be inside a folder named ' + this.props.name + '\n' +
Expand All @@ -43,49 +43,43 @@ module.exports = generators.Base.extend({

var readmeTpl = _.template(this.fs.read(this.templatePath('README.md')));

this.composeWith('node:app', {
options: {
babel: false,
boilerplate: false,
name: this.props.name,
projectRoot: 'generators',
skipInstall: this.options.skipInstall,
readme: readmeTpl({
generatorName: this.props.name,
yoName: this.props.name.replace('generator-', '')
})
}
}, {
local: require('generator-node').app
this.composeWith(require.resolve('generator-node/generators/app'), {
babel: false,
boilerplate: false,
name: this.props.name,
projectRoot: 'generators',
skipInstall: this.options.skipInstall,
readme: readmeTpl({
generatorName: this.props.name,
yoName: this.props.name.replace('generator-', '')
})
});

this.composeWith('generator:subgenerator', {
arguments: ['app']
}, {
local: require.resolve('../subgenerator')
this.composeWith(require.resolve('../subgenerator'), {
name: 'app'
});
},
}

writing: function () {
writing() {
var pkg = this.fs.readJSON(this.destinationPath('package.json'), {});
extend(pkg, {
dependencies: {
'yeoman-generator': '^0.23.0',
chalk: '^1.0.0',
yosay: '^1.0.0'
'yeoman-generator': '^1.0.0',
chalk: '^1.1.3',
yosay: '^1.2.1'
},
devDependencies: {
'yeoman-test': '^1.0.0',
'yeoman-assert': '^2.0.0'
'yeoman-test': '^1.6.0',
'yeoman-assert': '^2.2.1'
}
});
pkg.keywords = pkg.keywords || [];
pkg.keywords.push('yeoman-generator');

this.fs.writeJSON(this.destinationPath('package.json'), pkg);
},
}

install: function () {
install() {
this.installDependencies({bower: false});
}
});
};
38 changes: 19 additions & 19 deletions package.json
Expand Up @@ -25,29 +25,29 @@
"node": ">=4.0.0"
},
"dependencies": {
"chalk": "^1.0.0",
"deep-extend": "^0.4.0",
"generator-node": "^1.7.0",
"chalk": "^1.1.3",
"deep-extend": "^0.4.1",
"generator-node": "^1.12.1",
"inquirer-npm-name": "^2.0.0",
"lodash": "^4.6.1",
"lodash": "^4.17.2",
"mkdirp": "^0.5.1",
"superb": "^1.0.0",
"yeoman-generator": "^0.23.3",
"yosay": "^1.0.2"
"superb": "^1.3.0",
"yeoman-generator": "yeoman/generator#bump-version-for-updating-generator-generator",
"yosay": "^1.2.1"
},
"devDependencies": {
"gulp": "^3.6.0",
"gulp-coveralls": "^0.1.0",
"gulp-eslint": "^2.0.0",
"gulp-exclude-gitignore": "^1.0.0",
"gulp-istanbul": "^0.10.3",
"gulp-mocha": "^2.0.0",
"gulp-nsp": "^2.1.0",
"gulp-plumber": "^1.0.0",
"mocha": "^2.2.5",
"mockery": "^1.4.0",
"yeoman-assert": "^2.0.0",
"yeoman-test": "^1.0.0",
"gulp": "^3.9.1",
"gulp-coveralls": "^0.1.4",
"gulp-eslint": "^3.0.1",
"gulp-exclude-gitignore": "^1.1.1",
"gulp-istanbul": "^1.1.1",
"gulp-mocha": "^3.0.1",
"gulp-nsp": "^2.4.2",
"gulp-plumber": "^1.1.0",
"mocha": "^3.2.0",
"mockery": "^2.0.0",
"yeoman-assert": "^2.2.1",
"yeoman-test": "^1.6.0",
"pinkie-promise": "^2.0.1"
},
"license": "MIT"
Expand Down
26 changes: 13 additions & 13 deletions subgenerator/index.js
@@ -1,25 +1,25 @@
'use strict';
var path = require('path');
var generators = require('yeoman-generator');
var Generator = require('yeoman-generator');
var superb = require('superb');

module.exports = generators.Base.extend({
constructor: function () {
generators.Base.apply(this, arguments);
module.exports = class extends Generator {
constructor(args, opts) {
super(args, opts);

this.argument('namespace', {
this.option('name', {
type: String,
required: true,
description: 'Generator namespace'
desc: 'Generator name'
});
},
}

writing: function () {
writing() {
var generatorName = this.fs.readJSON(this.destinationPath('package.json')).name;

this.fs.copyTpl(
this.templatePath('index.js'),
this.destinationPath(path.join('generators', this.namespace, 'index.js')),
this.destinationPath(path.join('generators', this.options.name, 'index.js')),
{
// Escape apostrophes from superb to not conflict with JS strings
superb: superb().replace('\'', '\\\''),
Expand All @@ -29,16 +29,16 @@ module.exports = generators.Base.extend({

this.fs.copy(
this.templatePath('templates/**'),
this.destinationPath(path.join('generators', this.namespace, 'templates'))
this.destinationPath(path.join('generators', this.options.name, 'templates'))
);

this.fs.copyTpl(
this.templatePath('test.js'),
this.destinationPath('test/' + this.namespace + '.js'),
this.destinationPath('test/' + this.options.name + '.js'),
{
namespace: this.namespace,
name: this.options.name,
generatorName: generatorName
}
);
}
});
};
16 changes: 8 additions & 8 deletions subgenerator/templates/index.js
@@ -1,10 +1,10 @@
'use strict';
var yeoman = require('yeoman-generator');
var Generator = require('yeoman-generator');
var chalk = require('chalk');
var yosay = require('yosay');

module.exports = yeoman.Base.extend({
prompting: function () {
module.exports = class extends Generator {
prompting() {
// Have Yeoman greet the user.
this.log(yosay(
'Welcome to the <%- superb %> ' + chalk.red('<%= generatorName %>') + ' generator!'
Expand All @@ -21,16 +21,16 @@ module.exports = yeoman.Base.extend({
// To access props later use this.props.someAnswer;
this.props = props;
}.bind(this));
},
}

writing: function () {
writing() {
this.fs.copy(
this.templatePath('dummyfile.txt'),
this.destinationPath('dummyfile.txt')
);
},
}

install: function () {
install() {
this.installDependencies();
}
});
};
4 changes: 2 additions & 2 deletions subgenerator/templates/test.js
Expand Up @@ -3,9 +3,9 @@ var path = require('path');
var assert = require('yeoman-assert');
var helpers = require('yeoman-test');

describe('<%- generatorName %>:<%- namespace %>', function () {
describe('<%- generatorName %>:<%- name %>', function () {
before(function () {
return helpers.run(path.join(__dirname, '../generators/<%- namespace %>'))
return helpers.run(path.join(__dirname, '../generators/<%- name %>'))
.withPrompts({someAnswer: true})
.toPromise();
});
Expand Down
10 changes: 5 additions & 5 deletions test/app.js
Expand Up @@ -62,13 +62,13 @@ describe('generator:app', function () {
assert.JSONFileContent('package.json', {
name: 'generator-temp',
dependencies: {
'yeoman-generator': '^0.23.0',
chalk: '^1.0.0',
yosay: '^1.0.0'
'yeoman-generator': '^1.0.0',
chalk: '^1.1.3',
yosay: '^1.2.1'
},
devDependencies: {
'yeoman-assert': '^2.0.0',
'yeoman-test': '^1.0.0'
'yeoman-test': '^1.6.0',
'yeoman-assert': '^2.2.1'
},
keywords: ['yeoman-generator']
});
Expand Down
6 changes: 4 additions & 2 deletions test/subgenerator.js
Expand Up @@ -17,8 +17,10 @@ describe('generator:subgenerator', function () {
});

return helpers.run(path.join(__dirname, '../subgenerator'))
.withArguments(['foo'])
.withOptions({force: true})
.withOptions({
name: 'foo',
force: true
})
.inTmpDir(function (tmpDir) {
fs.writeFileSync(
path.join(tmpDir, 'package.json'),
Expand Down

0 comments on commit c16729b

Please sign in to comment.