@anansi/generator-js
Version:
Generate Fast React Web Apps
159 lines (157 loc) • 17.8 kB
JavaScript
import Generator from 'yeoman-generator';
export const licenses = [{
name: 'Apache 2.0',
value: 'Apache-2.0'
}, {
name: 'MIT',
value: 'MIT'
}, {
name: 'Mozilla Public License 2.0',
value: 'MPL-2.0'
}, {
name: 'BSD 2-Clause (FreeBSD) License',
value: 'BSD-2-Clause-FreeBSD'
}, {
name: 'BSD 3-Clause (NewBSD) License',
value: 'BSD-3-Clause'
}, {
name: 'Internet Systems Consortium (ISC) License',
value: 'ISC'
}, {
name: 'GNU AGPL 3.0',
value: 'AGPL-3.0'
}, {
name: 'GNU GPL 3.0',
value: 'GPL-3.0'
}, {
name: 'GNU LGPL 3.0',
value: 'LGPL-3.0'
}, {
name: 'Unlicense',
value: 'unlicense'
}, {
name: 'No License (Copyrighted)',
value: 'UNLICENSED'
}];
export default class GeneratorLicense extends Generator {
constructor(args, options, features) {
// fix broken logic in path combining in yeoman-generator
if (options.resolved?.startsWith('file://')) options.resolved = options.resolved.substring(7);
// this is actually improperly typed
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
super(args, options, features);
this.option('name', {
type: String,
description: 'Name of the license owner'
});
this.option('email', {
type: String,
description: 'Email of the license owner'
});
this.option('website', {
type: String,
description: 'Website of the license owner'
});
this.option('year', {
type: String,
description: 'Year(s) to include on the license',
default: new Date().getFullYear()
});
this.option('licensePrompt', {
type: String,
description: 'License prompt text',
default: 'Which license do you want to use?',
hide: true
});
this.option('defaultLicense', {
type: String,
description: 'Default license'
});
this.option('license', {
type: String,
description: 'Select a license, so no license prompt will happen, in case you want to handle it outside of this generator'
});
this.option('output', {
type: String,
description: 'Set the output file for the generated license',
default: 'LICENSE'
});
this.option('publish', {
type: Boolean,
description: 'Publish the package'
});
}
async initializing() {
this.gitc = {
user: {
name: await this.git.name(),
email: await this.git.email()
}
};
}
prompting() {
const prompts = [
/*{
name: 'name',
message: "What's your name:",
default: this.options.name || this.gitc.user.name,
when: this.options.name === undefined,
},
{
name: 'email',
message: 'Your email (optional):',
default: this.options.email || this.gitc.user.email,
when: this.options.email === undefined,
},
{
name: 'website',
message: 'Your website (optional):',
default: this.options.website,
when: this.options.website === undefined,
},*/
{
type: 'list',
name: 'license',
message: this.options.licensePrompt,
default: this.options.defaultLicense,
when: !this.options.license || licenses.find(x => x.value === this.options.license) === undefined,
choices: licenses
}];
return this.prompt(prompts).then(props => {
this.props = Object.assign({
name: this.options.name || this.gitc.user.name,
email: this.options.email || this.gitc.user.email,
website: this.options.website,
license: this.options.license
}, props);
});
}
configuring() {
// License file
const filename = this.props.license + '.txt';
let author = this.props.name.trim();
if (this.props.email) {
author += ' <' + this.props.email.trim() + '>';
}
if (this.props.website) {
author += ' (' + this.props.website.trim() + ')';
}
this.fs.copyTpl(this.templatePath(filename), this.destinationPath(this.options.output), {
year: this.options.year,
author: author
});
// Package
if (!this.fs.exists(this.destinationPath('package.json'))) {
return;
}
const pkg = this.fs.readJSON(this.destinationPath('package.json'), {});
pkg.license = this.props.license;
if (this.options.publish === undefined && this.props.license === 'UNLICENSED' || this.options.publish === false) {
delete pkg.license;
pkg.private = true;
}
this.packageJson.merge(pkg);
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJHZW5lcmF0b3IiLCJsaWNlbnNlcyIsIm5hbWUiLCJ2YWx1ZSIsIkdlbmVyYXRvckxpY2Vuc2UiLCJjb25zdHJ1Y3RvciIsImFyZ3MiLCJvcHRpb25zIiwiZmVhdHVyZXMiLCJyZXNvbHZlZCIsInN0YXJ0c1dpdGgiLCJzdWJzdHJpbmciLCJvcHRpb24iLCJ0eXBlIiwiU3RyaW5nIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0IiwiRGF0ZSIsImdldEZ1bGxZZWFyIiwiaGlkZSIsIkJvb2xlYW4iLCJpbml0aWFsaXppbmciLCJnaXRjIiwidXNlciIsImdpdCIsImVtYWlsIiwicHJvbXB0aW5nIiwicHJvbXB0cyIsIm1lc3NhZ2UiLCJsaWNlbnNlUHJvbXB0IiwiZGVmYXVsdExpY2Vuc2UiLCJ3aGVuIiwibGljZW5zZSIsImZpbmQiLCJ4IiwidW5kZWZpbmVkIiwiY2hvaWNlcyIsInByb21wdCIsInRoZW4iLCJwcm9wcyIsIk9iamVjdCIsImFzc2lnbiIsIndlYnNpdGUiLCJjb25maWd1cmluZyIsImZpbGVuYW1lIiwiYXV0aG9yIiwidHJpbSIsImZzIiwiY29weVRwbCIsInRlbXBsYXRlUGF0aCIsImRlc3RpbmF0aW9uUGF0aCIsIm91dHB1dCIsInllYXIiLCJleGlzdHMiLCJwa2ciLCJyZWFkSlNPTiIsInB1Ymxpc2giLCJwcml2YXRlIiwicGFja2FnZUpzb24iLCJtZXJnZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWNlbnNlL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHZW5lcmF0b3IgZnJvbSAneWVvbWFuLWdlbmVyYXRvcic7XG5cbmV4cG9ydCBjb25zdCBsaWNlbnNlcyA9IFtcbiAgeyBuYW1lOiAnQXBhY2hlIDIuMCcsIHZhbHVlOiAnQXBhY2hlLTIuMCcgfSxcbiAgeyBuYW1lOiAnTUlUJywgdmFsdWU6ICdNSVQnIH0sXG4gIHsgbmFtZTogJ01vemlsbGEgUHVibGljIExpY2Vuc2UgMi4wJywgdmFsdWU6ICdNUEwtMi4wJyB9LFxuICB7IG5hbWU6ICdCU0QgMi1DbGF1c2UgKEZyZWVCU0QpIExpY2Vuc2UnLCB2YWx1ZTogJ0JTRC0yLUNsYXVzZS1GcmVlQlNEJyB9LFxuICB7IG5hbWU6ICdCU0QgMy1DbGF1c2UgKE5ld0JTRCkgTGljZW5zZScsIHZhbHVlOiAnQlNELTMtQ2xhdXNlJyB9LFxuICB7IG5hbWU6ICdJbnRlcm5ldCBTeXN0ZW1zIENvbnNvcnRpdW0gKElTQykgTGljZW5zZScsIHZhbHVlOiAnSVNDJyB9LFxuICB7IG5hbWU6ICdHTlUgQUdQTCAzLjAnLCB2YWx1ZTogJ0FHUEwtMy4wJyB9LFxuICB7IG5hbWU6ICdHTlUgR1BMIDMuMCcsIHZhbHVlOiAnR1BMLTMuMCcgfSxcbiAgeyBuYW1lOiAnR05VIExHUEwgMy4wJywgdmFsdWU6ICdMR1BMLTMuMCcgfSxcbiAgeyBuYW1lOiAnVW5saWNlbnNlJywgdmFsdWU6ICd1bmxpY2Vuc2UnIH0sXG4gIHsgbmFtZTogJ05vIExpY2Vuc2UgKENvcHlyaWdodGVkKScsIHZhbHVlOiAnVU5MSUNFTlNFRCcgfSxcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdlbmVyYXRvckxpY2Vuc2UgZXh0ZW5kcyBHZW5lcmF0b3Ige1xuICBkZWNsYXJlIHByaXZhdGUgZ2l0YzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgZGVjbGFyZSBwcml2YXRlIHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFyZ3M6IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIGZlYXR1cmVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKSB7XG4gICAgLy8gZml4IGJyb2tlbiBsb2dpYyBpbiBwYXRoIGNvbWJpbmluZyBpbiB5ZW9tYW4tZ2VuZXJhdG9yXG4gICAgaWYgKG9wdGlvbnMucmVzb2x2ZWQ/LnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSlcbiAgICAgIG9wdGlvbnMucmVzb2x2ZWQgPSBvcHRpb25zLnJlc29sdmVkLnN1YnN0cmluZyg3KTtcblxuICAgIC8vIHRoaXMgaXMgYWN0dWFsbHkgaW1wcm9wZXJseSB0eXBlZFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc3VwZXIoYXJncywgb3B0aW9ucywgZmVhdHVyZXMpO1xuXG4gICAgdGhpcy5vcHRpb24oJ25hbWUnLCB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIGxpY2Vuc2Ugb3duZXInLFxuICAgIH0pO1xuXG4gICAgdGhpcy5vcHRpb24oJ2VtYWlsJywge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVzY3JpcHRpb246ICdFbWFpbCBvZiB0aGUgbGljZW5zZSBvd25lcicsXG4gICAgfSk7XG5cbiAgICB0aGlzLm9wdGlvbignd2Vic2l0ZScsIHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnV2Vic2l0ZSBvZiB0aGUgbGljZW5zZSBvd25lcicsXG4gICAgfSk7XG5cbiAgICB0aGlzLm9wdGlvbigneWVhcicsIHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnWWVhcihzKSB0byBpbmNsdWRlIG9uIHRoZSBsaWNlbnNlJyxcbiAgICAgIGRlZmF1bHQ6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSxcbiAgICB9KTtcblxuICAgIHRoaXMub3B0aW9uKCdsaWNlbnNlUHJvbXB0Jywge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVzY3JpcHRpb246ICdMaWNlbnNlIHByb21wdCB0ZXh0JyxcbiAgICAgIGRlZmF1bHQ6ICdXaGljaCBsaWNlbnNlIGRvIHlvdSB3YW50IHRvIHVzZT8nLFxuICAgICAgaGlkZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMub3B0aW9uKCdkZWZhdWx0TGljZW5zZScsIHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVmYXVsdCBsaWNlbnNlJyxcbiAgICB9KTtcblxuICAgIHRoaXMub3B0aW9uKCdsaWNlbnNlJywge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdTZWxlY3QgYSBsaWNlbnNlLCBzbyBubyBsaWNlbnNlIHByb21wdCB3aWxsIGhhcHBlbiwgaW4gY2FzZSB5b3Ugd2FudCB0byBoYW5kbGUgaXQgb3V0c2lkZSBvZiB0aGlzIGdlbmVyYXRvcicsXG4gICAgfSk7XG5cbiAgICB0aGlzLm9wdGlvbignb3V0cHV0Jywge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVzY3JpcHRpb246ICdTZXQgdGhlIG91dHB1dCBmaWxlIGZvciB0aGUgZ2VuZXJhdGVkIGxpY2Vuc2UnLFxuICAgICAgZGVmYXVsdDogJ0xJQ0VOU0UnLFxuICAgIH0pO1xuXG4gICAgdGhpcy5vcHRpb24oJ3B1Ymxpc2gnLCB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVzY3JpcHRpb246ICdQdWJsaXNoIHRoZSBwYWNrYWdlJyxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGluaXRpYWxpemluZygpIHtcbiAgICB0aGlzLmdpdGMgPSB7XG4gICAgICB1c2VyOiB7XG4gICAgICAgIG5hbWU6IGF3YWl0IHRoaXMuZ2l0Lm5hbWUoKSxcbiAgICAgICAgZW1haWw6IGF3YWl0IHRoaXMuZ2l0LmVtYWlsKCksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcm9tcHRpbmcoKSB7XG4gICAgY29uc3QgcHJvbXB0cyA9IFtcbiAgICAgIC8qe1xuICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgIG1lc3NhZ2U6IFwiV2hhdCdzIHlvdXIgbmFtZTpcIixcbiAgICAgICAgZGVmYXVsdDogdGhpcy5vcHRpb25zLm5hbWUgfHwgdGhpcy5naXRjLnVzZXIubmFtZSxcbiAgICAgICAgd2hlbjogdGhpcy5vcHRpb25zLm5hbWUgPT09IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdlbWFpbCcsXG4gICAgICAgIG1lc3NhZ2U6ICdZb3VyIGVtYWlsIChvcHRpb25hbCk6JyxcbiAgICAgICAgZGVmYXVsdDogdGhpcy5vcHRpb25zLmVtYWlsIHx8IHRoaXMuZ2l0Yy51c2VyLmVtYWlsLFxuICAgICAgICB3aGVuOiB0aGlzLm9wdGlvbnMuZW1haWwgPT09IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICd3ZWJzaXRlJyxcbiAgICAgICAgbWVzc2FnZTogJ1lvdXIgd2Vic2l0ZSAob3B0aW9uYWwpOicsXG4gICAgICAgIGRlZmF1bHQ6IHRoaXMub3B0aW9ucy53ZWJzaXRlLFxuICAgICAgICB3aGVuOiB0aGlzLm9wdGlvbnMud2Vic2l0ZSA9PT0gdW5kZWZpbmVkLFxuICAgICAgfSwqL1xuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdCcsXG4gICAgICAgIG5hbWU6ICdsaWNlbnNlJyxcbiAgICAgICAgbWVzc2FnZTogdGhpcy5vcHRpb25zLmxpY2Vuc2VQcm9tcHQsXG4gICAgICAgIGRlZmF1bHQ6IHRoaXMub3B0aW9ucy5kZWZhdWx0TGljZW5zZSxcbiAgICAgICAgd2hlbjpcbiAgICAgICAgICAhdGhpcy5vcHRpb25zLmxpY2Vuc2UgfHxcbiAgICAgICAgICBsaWNlbnNlcy5maW5kKHggPT4geC52YWx1ZSA9PT0gdGhpcy5vcHRpb25zLmxpY2Vuc2UpID09PSB1bmRlZmluZWQsXG4gICAgICAgIGNob2ljZXM6IGxpY2Vuc2VzLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvbXB0KHByb21wdHMpLnRoZW4ocHJvcHMgPT4ge1xuICAgICAgdGhpcy5wcm9wcyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiB0aGlzLm9wdGlvbnMubmFtZSB8fCB0aGlzLmdpdGMudXNlci5uYW1lLFxuICAgICAgICAgIGVtYWlsOiB0aGlzLm9wdGlvbnMuZW1haWwgfHwgdGhpcy5naXRjLnVzZXIuZW1haWwsXG4gICAgICAgICAgd2Vic2l0ZTogdGhpcy5vcHRpb25zLndlYnNpdGUsXG4gICAgICAgICAgbGljZW5zZTogdGhpcy5vcHRpb25zLmxpY2Vuc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHByb3BzLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbmZpZ3VyaW5nKCkge1xuICAgIC8vIExpY2Vuc2UgZmlsZVxuICAgIGNvbnN0IGZpbGVuYW1lID0gdGhpcy5wcm9wcy5saWNlbnNlICsgJy50eHQnO1xuICAgIGxldCBhdXRob3IgPSB0aGlzLnByb3BzLm5hbWUudHJpbSgpO1xuICAgIGlmICh0aGlzLnByb3BzLmVtYWlsKSB7XG4gICAgICBhdXRob3IgKz0gJyA8JyArIHRoaXMucHJvcHMuZW1haWwudHJpbSgpICsgJz4nO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLndlYnNpdGUpIHtcbiAgICAgIGF1dGhvciArPSAnICgnICsgdGhpcy5wcm9wcy53ZWJzaXRlLnRyaW0oKSArICcpJztcbiAgICB9XG5cbiAgICB0aGlzLmZzLmNvcHlUcGwoXG4gICAgICB0aGlzLnRlbXBsYXRlUGF0aChmaWxlbmFtZSksXG4gICAgICB0aGlzLmRlc3RpbmF0aW9uUGF0aCh0aGlzLm9wdGlvbnMub3V0cHV0KSxcbiAgICAgIHtcbiAgICAgICAgeWVhcjogdGhpcy5vcHRpb25zLnllYXIsXG4gICAgICAgIGF1dGhvcjogYXV0aG9yLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgLy8gUGFja2FnZVxuICAgIGlmICghdGhpcy5mcy5leGlzdHModGhpcy5kZXN0aW5hdGlvblBhdGgoJ3BhY2thZ2UuanNvbicpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBrZzogYW55ID0gdGhpcy5mcy5yZWFkSlNPTih0aGlzLmRlc3RpbmF0aW9uUGF0aCgncGFja2FnZS5qc29uJyksIHt9KTtcbiAgICBwa2cubGljZW5zZSA9IHRoaXMucHJvcHMubGljZW5zZTtcblxuICAgIGlmIChcbiAgICAgICh0aGlzLm9wdGlvbnMucHVibGlzaCA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgIHRoaXMucHJvcHMubGljZW5zZSA9PT0gJ1VOTElDRU5TRUQnKSB8fFxuICAgICAgdGhpcy5vcHRpb25zLnB1Ymxpc2ggPT09IGZhbHNlXG4gICAgKSB7XG4gICAgICBkZWxldGUgcGtnLmxpY2Vuc2U7XG4gICAgICBwa2cucHJpdmF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5wYWNrYWdlSnNvbi5tZXJnZShwa2cpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFNBQVMsTUFBTSxrQkFBa0I7QUFFeEMsT0FBTyxNQUFNQyxRQUFRLEdBQUcsQ0FDdEI7RUFBRUMsSUFBSSxFQUFFLFlBQVk7RUFBRUMsS0FBSyxFQUFFO0FBQWEsQ0FBQyxFQUMzQztFQUFFRCxJQUFJLEVBQUUsS0FBSztFQUFFQyxLQUFLLEVBQUU7QUFBTSxDQUFDLEVBQzdCO0VBQUVELElBQUksRUFBRSw0QkFBNEI7RUFBRUMsS0FBSyxFQUFFO0FBQVUsQ0FBQyxFQUN4RDtFQUFFRCxJQUFJLEVBQUUsZ0NBQWdDO0VBQUVDLEtBQUssRUFBRTtBQUF1QixDQUFDLEVBQ3pFO0VBQUVELElBQUksRUFBRSwrQkFBK0I7RUFBRUMsS0FBSyxFQUFFO0FBQWUsQ0FBQyxFQUNoRTtFQUFFRCxJQUFJLEVBQUUsMkNBQTJDO0VBQUVDLEtBQUssRUFBRTtBQUFNLENBQUMsRUFDbkU7RUFBRUQsSUFBSSxFQUFFLGNBQWM7RUFBRUMsS0FBSyxFQUFFO0FBQVcsQ0FBQyxFQUMzQztFQUFFRCxJQUFJLEVBQUUsYUFBYTtFQUFFQyxLQUFLLEVBQUU7QUFBVSxDQUFDLEVBQ3pDO0VBQUVELElBQUksRUFBRSxjQUFjO0VBQUVDLEtBQUssRUFBRTtBQUFXLENBQUMsRUFDM0M7RUFBRUQsSUFBSSxFQUFFLFdB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