netcore-blueprint
Version:
A custom project blueprint
88 lines (69 loc) • 2.16 kB
JavaScript
const fs = require('fs');
const path = require('path');
const { buildReplaceMap, copyAndRenameFiles } = require('../lib/replacer');
// =======================
// Args
// =======================
// Usage:
// create-assistant BlogWriter
// =======================
const newAssistantName = process.argv[2];
if (!newAssistantName) {
console.error("❌ Usage: create-assistant <AssistantName>");
console.error(" Example: create-assistant BlogWriter");
process.exit(1);
}
// =======================
// Template source
// =======================
const sourceAssistantName = "__ASSISTANT_NAME__";
const assistantsTemplateRoot = path.join(__dirname, "..", "Assistants");
const sourceAssistantPath = path.join(
assistantsTemplateRoot,
`${sourceAssistantName}`
);
// =======================
// Destination
// =======================
const destinationRoot = process.cwd(); // đang đứng tại root project
const destinationAssistantPath = path.join(
destinationRoot,
"Assistants",
`${newAssistantName}`
);
// =======================
// Guards
// =======================
if (!fs.existsSync(sourceAssistantPath)) {
console.error(`❌ Source assistant not found: ${sourceAssistantPath}`);
process.exit(1);
}
if (fs.existsSync(destinationAssistantPath)) {
console.error(`❌ Assistant already exists: ${destinationAssistantPath}`);
process.exit(1);
}
// =======================
// Replace Map
// =======================
const replaceMap = buildReplaceMap({
sourceModuleName: sourceAssistantName,
newModuleName: newAssistantName
});
// Nếu bạn muốn rõ nghĩa hơn thì có thể đổi replacer thành:
// buildReplaceMap({
// sourceName: sourceAssistantName,
// newName: newAssistantName
// });
// =======================
// Run
// =======================
console.log(`📦 Creating assistant: ${newAssistantName}`);
console.log(`📁 From template: ${sourceAssistantPath}`);
console.log(`📁 To: ${destinationAssistantPath}`);
copyAndRenameFiles(
sourceAssistantPath,
destinationAssistantPath,
replaceMap
);
console.log(`🎉 Assistant "${newAssistantName}" created successfully!`);