generator-nordnet-es-module
Version:
Scaffold out an ES6 node module
216 lines (185 loc) • 8.27 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true
});
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var _yeomanGenerator = require('yeoman-generator');
var _underscoreString = require('underscore.string');
var _underscoreString2 = _interopRequireDefault(_underscoreString);
var _mkdirp = require('mkdirp');
var _mkdirp2 = _interopRequireDefault(_mkdirp);
var _normalizeUrl = require('normalize-url');
var _normalizeUrl2 = _interopRequireDefault(_normalizeUrl);
var _humanizeUrl = require('humanize-url');
var _humanizeUrl2 = _interopRequireDefault(_humanizeUrl);
var NordnetEsModule = (function (_Base) {
_inherits(NordnetEsModule, _Base);
function NordnetEsModule() {
_classCallCheck(this, NordnetEsModule);
_get(Object.getPrototypeOf(NordnetEsModule.prototype), 'constructor', this).apply(this, arguments);
}
_createClass(NordnetEsModule, [{
key: 'init',
value: function init() {
var _this = this;
var cb = this.async();
this.prompt([{
name: 'isCorporate',
message: 'corporate?',
type: 'confirm',
store: true,
'default': true
}, {
name: 'isOpensource',
message: 'open-source?',
type: 'confirm',
'default': true
}, {
name: 'moduleName',
message: 'name:',
'default': this.appname.replace(/\s/g, '-'),
filter: function filter(val) {
return _underscoreString2['default'].slugify(val);
}
}, {
name: 'moduleDesc',
message: 'description:'
}, {
name: 'moduleKeywords',
message: 'keywords:'
}, {
name: 'moduleVersion',
message: 'version:',
store: true,
'default': '0.0.0'
}, {
name: 'moduleLicense',
message: 'license:',
store: true,
'default': 'MIT'
}, {
name: 'github',
message: 'your github:',
store: true,
validate: function validate(val) {
return val.length > 0 ? true : 'You have to provide a username';
}
}, {
name: 'site',
message: 'your site:',
store: true,
filter: function filter(val) {
return (0, _normalizeUrl2['default'])(val);
}
}, {
when: function when(props) {
return props.isCorporate;
},
name: 'companyName',
message: 'company name:',
store: true
}, {
when: function when(props) {
return props.isCorporate;
},
name: 'companyGithub',
message: 'company github:',
store: true,
validate: function validate(val) {
return val.length > 0 ? true : 'You have to provide a username';
}
}, {
when: function when(props) {
return props.isCorporate;
},
name: 'companySite',
message: 'company site:',
store: true
}, {
when: function when(props) {
return !props.isOpensource;
},
name: 'repositoryUrl',
message: 'repository url:',
validate: function validate(val) {
return val.length > 0 ? true : 'You have to repositoryUrl URL';
}
}, {
when: function when(props) {
return !props.isOpensource;
},
name: 'publishConfig',
message: 'publishConfig:',
store: true,
validate: function validate(val) {
return val.length > 0 ? true : 'You have to provide a publishConfig URL';
}
}], function (props) {
var name = _this.user.git.name();
var email = _this.user.git.email();
var moduleKeywords = (props.moduleKeywords || '').trim().split(',').map(function (i) {
return (i || '').trim();
});
var licenseName = props.isCorporate ? props.companyName : name;
var licenseSite = props.isCorporate ? props.companySite : props.site;
var humanizedSite = props.site && (0, _humanizeUrl2['default'])(props.site);
var humanizedCompanySite = props.isCorporate && props.companySite && (0, _humanizeUrl2['default'])(props.companySite);
var humanizedLicenseSite = licenseSite && (0, _humanizeUrl2['default'])(licenseSite);
var tpl = {
moduleName: props.moduleName,
camelModuleName: _underscoreString2['default'].camelize(props.moduleName),
moduleDesc: props.moduleDesc,
moduleKeywords: moduleKeywords,
moduleVersion: props.moduleVersion,
moduleLicense: props.moduleLicense,
github: props.isCorporate ? props.companyGithub : props.github,
licenseName: licenseName,
licenseSite: licenseSite,
humanizedLicenseSite: humanizedLicenseSite,
name: name,
email: email,
site: props.site,
repositoryUrl: props.repositoryUrl,
isCorporate: props.isCorporate,
isOpensource: props.isOpensource,
companyName: props.companyName,
companySite: props.companySite,
humanizedSite: humanizedSite,
humanizedCompanySite: humanizedCompanySite,
publishConfig: props.publishConfig
};
var cpTpl = function cpTpl(from, to) {
_this.fs.copyTpl(_this.templatePath(from), _this.destinationPath(to), tpl);
};
(0, _mkdirp2['default'])('src');
(0, _mkdirp2['default'])('test');
cpTpl('_README.md', 'README.md');
cpTpl('_indexjs', 'src/index.js');
cpTpl('_testjs', 'test/test.js');
cpTpl('_package.json', 'package.json');
cpTpl('editorconfig', '.editorconfig');
cpTpl('travis.yml', '.travis.yml');
cpTpl('jscsrc', '.jscsrc');
cpTpl('eslintrc', '.eslintrc');
cpTpl('eslintignore', '.eslintignore');
cpTpl('gitignore', '.gitignore');
cpTpl('npmignore', '.npmignore');
cpTpl('istanbul.yml', '.istanbul.yml');
cpTpl('mocha.opts', 'test/mocha.opts');
cb();
});
}
}, {
key: 'install',
value: function install() {
this.installDependencies({ bower: false });
}
}]);
return NordnetEsModule;
})(_yeomanGenerator.Base);
exports['default'] = NordnetEsModule;
module.exports = exports['default'];