in src/yo/yo/yo.ts [32:81]
public getGenerators(): any[] {
const generatorsMeta = this._env.store.getGeneratorsMeta();
// Remove sub generators from list
let list = Object.keys(generatorsMeta).filter((key: any) => key.split(':')[1] === 'app');
list = list.map(key => {
const item = generatorsMeta[key];
const name = key.split(':')[0];
const pkgPath = readPkgUp.sync({cwd: item.resolved});
if (!pkgPath.pkg) {
return null;
}
const pkg = pkgPath.pkg;
const generatorVersion: any = pkg.dependencies['yeoman-generator'];
const generatorMeta: any = _.pick(pkg, 'name', 'version', 'description');
// Ignore the generator if does not depend on `yeoman-generator`
if (!generatorVersion) {
return null;
}
// Flag generator to indecate if the generator version is fully supported or not.
// https://github.com/yeoman/yeoman-app/issues/16#issuecomment-121054821
generatorMeta.isCompatible = semver.ltr('0.17.6', generatorVersion);
// Indicator to verify official generators
generatorMeta.officialGenerator = false;
if (generatorMeta.repository && generatorMeta.repository.url) {
generatorMeta.officialGenerator = generatorMeta.repository.url.indexOf('github.com/yeoman/') > -1;
}
// Add subgenerators
generatorMeta.subGenerators = Object.keys(generatorsMeta).reduce((result, key: any) => {
const split = key.split(':');
if (split[0] === name) {
result.push(split[1]);
}
return result;
}, []);
return generatorMeta;
});
return _.compact(list);
}