@ventum-digital/iiq-plugin-project-generator
Version:
A npm tool to set-up the project structure for developing an IIQ Plugin.
52 lines (41 loc) • 1.4 kB
JavaScript
const {generateProject} = require('./generate.js');
function capitalizeAndReplace(input) {
// Remove "module-" prefix
input = input.replace(/^module-/, '');
// Capitalize the first letter of each word
input = input.replace(/\b\w/g, l => l.toUpperCase())
// Remove spaces and hyphens
return input.replace(/\s/g, '').replace(/-/g, '');
}
generateProject(
"module",
{
npmScope : 's',
packageName: 'p',
version : "v"
},
{
packageDescription: 'd',
author: "a",
},
(args) => ({
capitalizedName: args.packageName.charAt(0).toUpperCase() + args.packageName.slice(1),
displayName : capitalizeAndReplace(args.packageName),
joinedName: `@${args.npmScope}/${args.packageName}`,
}),
(args) => {
let packageName = args.packageName;
let joinedName = args.joinedName;
if (packageName.includes(' ')) {
throw new Error('The package name must not contain spaces.');
}
if (packageName !== packageName.toLowerCase()) {
throw new Error('The package name must be all lowercase.');
}
let regExp = `^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)?\/)?[a-z0-9-~][a-z0-9-._~]*$`;
if (!(new RegExp(regExp)).test(joinedName)) {
throw new Error(`The package name ${joinedName} is invalid. It must follow the package.json naming convention.\nPattern: ${regExp}`);
}
}
).launchIntelliJ();