function genBase(self) {
self = self || this;
var yoCheckPromise = void 0;
if (!process.env.CI) {
yoCheckPromise = genUtils.runCmd('yo --version').then(function (stdout) {
if (!_semver2.default.satisfies(_semver2.default.clean(stdout), '>= 1.7.1')) {
throw new Error('ERROR: You need to update yo to at least 1.7.1 (npm i -g yo)\n\'yo --version\' output: ' + stdout);
}
});
} else {
// CI won't have yo installed
yoCheckPromise = Promise.resolve();
}
self.lodash = _lodash2.default;
self.yoWelcome = _yeomanWelcome2.default;
var baseDetermineAppname = self.determineAppname.bind(self);
self.determineAppname = function () {
if (self['name']) {
return self['name'];
} else {
return baseDetermineAppname();
}
};
self.appname = _lodash2.default.camelize(_lodash2.default.slugify(_lodash2.default.humanize(self.determineAppname())));
self.scriptAppName = self.appname + genUtils.appSuffix(self);
self.filters = self.filters || self.config.get('filters');
// dynamic assertion statements
self.expect = function () {
return self.filters.expect ? 'expect(' : '';
};
self.to = function () {
return self.filters.expect ? ').to' : '.should';
};
// dynamic relative require path
self.relativeRequire = genUtils.relativeRequire.bind(self);
// process template directory
self.processDirectory = genUtils.processDirectory.bind(self);
// rewrite a file in place
self.rewriteFile = genUtils.rewriteFile;
return yoCheckPromise;
}n/a
function genNamedBase(self) {
self = self || this;
// extend genBase
return genBase(self).then(function () {
var name = self.name.replace(/\//g, '-');
self.cameledName = _lodash2.default.camelize(name);
self.classedName = _lodash2.default.classify(name);
self.basename = _path2.default.basename(self.name);
self.dirname = self.name.indexOf('/') >= 0 ? _path2.default.dirname(self.name) : self.name;
});
}n/a
function appSuffix(self) {
var suffix = self.options['app-suffix'];
return typeof suffix === 'string' ? self.lodash.classify(suffix) : '';
}...
return self['name'];
} else {
return baseDetermineAppname();
}
};
self.appname = _lodash2.default.camelize(_lodash2.default.slugify(_lodash2.default.humanize(self.determineAppname())));
self.scriptAppName = self.appname + genUtils.appSuffix(self);
self.filters = self.filters || self.config.get('filters');
// dynamic assertion statements
self.expect = function () {
return self.filters.expect ? 'expect(' : '';
};
...function processDirectory(source, destination) {
var self = this;
var root = _path2.default.isAbsolute(source) ? source : _path2.default.join(self.sourceRoot(), source);
var files = expandFiles('**', { dot: true, cwd: root });
var dest, src;
files.forEach(function (f) {
var filteredFile = filterFile(f);
if (self.basename) {
filteredFile.name = filteredFile.name.replace('basename', self.basename);
}
if (self.name) {
filteredFile.name = filteredFile.name.replace('name', self.name);
}
var name = filteredFile.name;
var copy = false,
stripped;
src = _path2.default.join(root, f);
dest = _path2.default.join(destination, name);
if (self.filters.ts && dest.indexOf('client') > -1 && dest.indexOf('.json') === -1) {
dest = dest.replace('.js', '.ts');
}
if (_path2.default.basename(dest).indexOf('_') === 0) {
stripped = _path2.default.basename(dest).replace(/^_/, '');
dest = _path2.default.join(_path2.default.dirname(dest), stripped);
}
if (_path2.default.basename(dest).indexOf('!') === 0) {
stripped = _path2.default.basename(dest).replace(/^!/, '');
dest = _path2.default.join(_path2.default.dirname(dest), stripped);
copy = true;
}
if (templateIsUsable(self, filteredFile)) {
if (copy) {
self.fs.copy(src, dest);
} else {
self.filePath = dest;
self.fs.copyTpl(src, dest, self);
delete self.filePath;
}
}
});
}...
this.registerTransformStream([serverJsFilter, (0, _gulpEslint2.default)({
fix: true,
configFile: _path2.default.join(genDir, 'templates/app/server/.eslintrc')
}), serverJsFilter.restore]);
var self = this;
this.sourceRoot(_path2.default.join(__dirname, '../../templates/app'));
this.processDirectory('.', '.');
},
generateEndpoint: function generateEndpoint() {
var models;
if (this.filters.mongooseModels) {
models = 'mongoose';
} else if (this.filters.sequelizeModels) {
models = 'sequelize';
...function relativeRequire(to, fr) {
fr = this.destinationPath(fr || this.filePath);
to = this.destinationPath(to);
return _path2.default.relative(_path2.default.dirname(fr), to).replace(/\\/g, '/') // convert win32 separator to posix
.replace(/^(?!\.\.)(.*)/, './$1') // prefix non parent path with ./
.replace(/[\/\\]index\.js$/, ''); // strip index.js suffix from path
}...
this.processDirectory('.', this.routeDest);
}
}, {
key: 'end',
value: function end() {
if (this.config.get('insertRoutes')) {
var routesFile = this.config.get('registerRoutesFile');
var reqPath = this.relativeRequire(this.routeDest, routesFile);
var routeConfig = {
file: routesFile,
needle: this.config.get('routesNeedle'),
splicable: ['app.use(\'' + this.route + '\', require(\'' + reqPath + '\'));
x27;]
};
this.rewriteFile(routeConfig);
}
...function rewrite(args) {
// check if splicable is already in the body text
var re = new RegExp(args.splicable.map(function (line) {
return '\s*' + escapeRegExp(line);
}).join('\n'));
if (re.test(args.haystack)) {
return args.haystack;
}
var lines = args.haystack.split('\n');
var otherwiseLineIndex = -1;
lines.forEach(function (line, i) {
if (line.indexOf(args.needle) !== -1) {
otherwiseLineIndex = i;
}
});
if (otherwiseLineIndex === -1) return lines.join('\n');
var spaces = 0;
while (lines[otherwiseLineIndex].charAt(spaces) === ' ') {
spaces += 1;
}
var spaceStr = '';
while ((spaces -= 1) >= 0) {
spaceStr += ' ';
}
lines.splice(otherwiseLineIndex + 1, 0, args.splicable.map(function (line) {
return spaceStr + line;
}).join('\n'));
return lines.join('\n');
}n/a
function rewriteFile(args) {
args.path = args.path || process.cwd();
var fullPath = _path2.default.join(args.path, args.file);
args.haystack = _fs2.default.readFileSync(fullPath, 'utf8');
var body = rewrite(args);
_fs2.default.writeFileSync(fullPath, body);
}...
var routesFile = this.config.get('registerRoutesFile');
var reqPath = this.relativeRequire(this.routeDest, routesFile);
var routeConfig = {
file: routesFile,
needle: this.config.get('routesNeedle'),
splicable: ['app.use(\'' + this.route + '\', require(\'' + reqPath + '\'));'
;]
};
this.rewriteFile(routeConfig);
}
if (this.filters.socketio && this.config.get('insertSockets')) {
var socketsFile = this.config.get('registerSocketsFile');
var reqPath = this.relativeRequire(this.routeDest + '/' + this.basename + '.socket', socketsFile);
var socketConfig = {
file: socketsFile,
...function runCmd(cmd) {
return new _bluebird2.default(function (resolve, reject) {
(0, _child_process.exec)(cmd, {}, function (err, stdout, stderr) {
if (err) {
console.error(stdout);
return reject(err);
} else {
if (DEBUG) console.log(cmd + ' stdout: ' + stdout);
return resolve(stdout);
}
});
});
}...
_lodash2.default.mixin(_underscore2.default.exports());
function genBase(self) {
self = self || this;
var yoCheckPromise = void 0;
if (!process.env.CI) {
yoCheckPromise = genUtils.runCmd('yo --version').then(function (stdout) {
if (!_semver2.default.satisfies(_semver2.default.clean(stdout), '>= 1.7.1')) {
throw new Error('ERROR: You need to update yo to at least 1.7.1 (npm i -g yo)\n\'yo --version\' output: '
; + stdout);
}
});
} else {
// CI won't have yo installed
yoCheckPromise = Promise.resolve();
...