Skip to content

Commit

Permalink
Adapt changes of yeoman generator 1.0.0 (#170)
Browse files Browse the repository at this point in the history
  • Loading branch information
mischah authored and SBoudrias committed Dec 9, 2016
1 parent e40c828 commit 640bdc5
Show file tree
Hide file tree
Showing 10 changed files with 139 additions and 142 deletions.
3 changes: 2 additions & 1 deletion .eslintrc → .eslintrc.json
Expand Up @@ -2,7 +2,8 @@
"extends": "eslint:recommended",
"env": {
"node": true,
"mocha": true
"mocha": true,
"es6": true
},
"rules": {
"array-bracket-spacing": [
Expand Down
4 changes: 2 additions & 2 deletions .travis.yml
@@ -1,6 +1,6 @@
sudo: false
language: node_js
node_js:
- stable
- 5
- node
- 6
- 4
84 changes: 40 additions & 44 deletions app/index.js
@@ -1,37 +1,37 @@
'use strict';
var path = require('path');
var generators = require('yeoman-generator');
var askName = require('inquirer-npm-name');
var _ = require('lodash');
var extend = require('deep-extend');
var mkdirp = require('mkdirp');
const path = require('path');
const Generator = require('yeoman-generator');
const askName = require('inquirer-npm-name');
const _ = require('lodash');
const extend = require('deep-extend');
const mkdirp = require('mkdirp');

function makeGeneratorName(name) {
name = _.kebabCase(name);
name = name.indexOf('generator-') === 0 ? name : 'generator-' + 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',
default: makeGeneratorName(path.basename(process.cwd())),
filter: makeGeneratorName,
validate: function (str) {
validate: str => {
return str.length > 'generator-'.length;
}
}, this).then(function (props) {
}, this).then(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 @@ -41,51 +41,47 @@ module.exports = generators.Base.extend({
this.destinationRoot(this.destinationPath(this.props.name));
}

var readmeTpl = _.template(this.fs.read(this.templatePath('README.md')));
const 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', {
this.composeWith(require.resolve('../subgenerator'), {
arguments: ['app']
}, {
local: require.resolve('../subgenerator')
});
},
}

writing() {
const pkg = this.fs.readJSON(this.destinationPath('package.json'), {});
const generatorGeneratorPkg = require('../package.json');

writing: function () {
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': generatorGeneratorPkg.dependencies['yeoman-generator'],
chalk: generatorGeneratorPkg.dependencies.chalk,
yosay: generatorGeneratorPkg.dependencies.yosay
},
devDependencies: {
'yeoman-test': '^1.0.0',
'yeoman-assert': '^2.0.0'
'yeoman-test': generatorGeneratorPkg.devDependencies['yeoman-test'],
'yeoman-assert': generatorGeneratorPkg.devDependencies['yeoman-assert']
}
});
pkg.keywords = pkg.keywords || [];
pkg.keywords.push('yeoman-generator');

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

install: function () {
install() {
this.installDependencies({bower: false});
}
});
};
36 changes: 18 additions & 18 deletions gulpfile.js
@@ -1,27 +1,27 @@
'use strict';
var path = require('path');
var gulp = require('gulp');
var eslint = require('gulp-eslint');
var excludeGitignore = require('gulp-exclude-gitignore');
var mocha = require('gulp-mocha');
var istanbul = require('gulp-istanbul');
var nsp = require('gulp-nsp');
var plumber = require('gulp-plumber');
var coveralls = require('gulp-coveralls');

gulp.task('static', function () {
const path = require('path');
const gulp = require('gulp');
const eslint = require('gulp-eslint');
const excludeGitignore = require('gulp-exclude-gitignore');
const mocha = require('gulp-mocha');
const istanbul = require('gulp-istanbul');
const nsp = require('gulp-nsp');
const plumber = require('gulp-plumber');
const coveralls = require('gulp-coveralls');

gulp.task('static', () => {
return gulp.src('**/*.js')
.pipe(excludeGitignore())
.pipe(eslint())
.pipe(eslint.format())
.pipe(eslint.failAfterError());
});

gulp.task('nsp', function (cb) {
gulp.task('nsp', cb => {
nsp({package: path.resolve('package.json')}, cb);
});

gulp.task('pre-test', function () {
gulp.task('pre-test', () => {
return gulp.src([
'app/index.js',
'subgenerator/index.js'
Expand All @@ -32,22 +32,22 @@ gulp.task('pre-test', function () {
.pipe(istanbul.hookRequire());
});

gulp.task('test', ['pre-test'], function (cb) {
var mochaErr;
gulp.task('test', ['pre-test'], cb => {
let mochaErr;

gulp.src('test/**/*.js')
.pipe(plumber())
.pipe(mocha({reporter: 'spec', timeout: 10000}))
.on('error', function (err) {
.on('error', err => {
mochaErr = err;
})
.pipe(istanbul.writeReports())
.on('end', function () {
.on('end', () => {
cb(mochaErr);
});
});

gulp.task('coveralls', ['test'], function () {
gulp.task('coveralls', ['test'], () => {
if (!process.env.CI) {
return;
}
Expand Down
37 changes: 18 additions & 19 deletions package.json
Expand Up @@ -25,30 +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": "^1.0.0-rc1",
"yosay": "^1.2.1"
},
"devDependencies": {
"gulp": "^3.6.0",
"gulp-coveralls": "^0.1.0",
"gulp": "^3.9.1",
"gulp-coveralls": "^0.1.4",
"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",
"pinkie-promise": "^2.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"
},
"license": "MIT"
}
36 changes: 18 additions & 18 deletions subgenerator/index.js
@@ -1,44 +1,44 @@
'use strict';
var path = require('path');
var generators = require('yeoman-generator');
var superb = require('superb');
const path = require('path');
const Generator = require('yeoman-generator');
const 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.argument('name', {
type: String,
required: true,
description: 'Generator namespace'
description: 'Generator name'
});
},
}

writing: function () {
var generatorName = this.fs.readJSON(this.destinationPath('package.json')).name;
writing() {
const 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('\'', '\\\''),
generatorName: generatorName
generatorName
}
);

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,
generatorName: generatorName
name: this.options.name,
generatorName
}
);
}
});
};
4 changes: 2 additions & 2 deletions subgenerator/templates/index.js
@@ -1,9 +1,9 @@
'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({
module.exports = Generator.extend({
prompting: function () {
// Have Yeoman greet the user.
this.log(yosay(
Expand Down
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

0 comments on commit 640bdc5

Please sign in to comment.