netcore-blueprint
Version:
A custom project blueprint
71 lines (53 loc) • 1.79 kB
JavaScript
const fs = require('fs');
const path = require('path');
const { buildReplaceMap, copyAndRenameFiles } = require('../lib/replacer');
// =======================
// Args
// =======================
// Usage:
// create-module Product
// =======================
const newModuleName = process.argv[2];
if (!newModuleName) {
console.error("❌ Usage: create-module <ModuleName>");
console.error(" Example: create-module Product");
process.exit(1);
}
// =======================
// Template source
// =======================
const sourceModuleName = "__MODULE__";
const modulesTemplateRoot = path.join(__dirname, "..", "Modules");
const sourceModulePath = path.join(modulesTemplateRoot, `${sourceModuleName}Module`);
// =======================
// Destination
// =======================
const destinationRoot = process.cwd();
const destinationModulePath = path.join(destinationRoot, `${newModuleName}`);
// =======================
// Guards
// =======================
if (!fs.existsSync(sourceModulePath)) {
console.error(`❌ Source module not found: ${sourceModulePath}`);
process.exit(1);
}
if (fs.existsSync(destinationModulePath)) {
console.error(`❌ Destination module already exists: ${destinationModulePath}`);
process.exit(1);
}
// =======================
// Replace Map
// =======================
const replaceMap = buildReplaceMap({
sourceModuleName,
newModuleName
});
console.log(`📦 Creating module: ${newModuleName}`);
console.log(`📁 From template: ${sourceModulePath}`);
console.log(`📁 To: ${destinationModulePath}`);
// =======================
// Run
// =======================
copyAndRenameFiles(sourceModulePath, destinationModulePath, replaceMap);
console.log(`🎉 Module "${newModuleName}" created successfully!`);