cindy-ai-chatbot
Version:
An AI-powered chatbot component for React applications
93 lines (78 loc) • 3.19 kB
JavaScript
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
// Get the directory name in ES modules
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// Source and destination directories
const srcDir = path.resolve(__dirname, '../src');
const libDir = path.resolve(__dirname, '../lib');
// Create lib directory if it doesn't exist
if (!fs.existsSync(libDir)) {
fs.mkdirSync(libDir, { recursive: true });
}
// Function to copy a directory recursively
function copyDir(src, dest) {
// Create destination directory if it doesn't exist
if (!fs.existsSync(dest)) {
fs.mkdirSync(dest, { recursive: true });
}
// Read source directory
const entries = fs.readdirSync(src, { withFileTypes: true });
for (const entry of entries) {
const srcPath = path.join(src, entry.name);
const destPath = path.join(dest, entry.name);
// Skip node_modules, build directories, and the lib directory itself
if (entry.name === 'node_modules' || entry.name === 'build' ||
entry.name === 'App.tsx' ||
entry.name === 'index.tsx' || entry.name === 'reportWebVitals.ts' ||
entry.name === 'setupTests.ts' || entry.name === 'react-app-env.d.ts' ||
entry.name === 'lib') {
continue;
}
if (entry.isDirectory()) {
// Recursively copy subdirectories
copyDir(srcPath, destPath);
} else {
// Copy files
fs.copyFileSync(srcPath, destPath);
}
}
}
// Copy components, providers, and other necessary files
const componentsSrc = path.join(srcDir, 'components');
const componentsLib = path.join(libDir, 'components');
const providersSrc = path.join(srcDir, 'providers');
const providersLib = path.join(libDir, 'providers');
const configSrc = path.join(srcDir, 'config');
const configLib = path.join(libDir, 'config');
const stylesSrc = path.join(srcDir, 'styles');
const stylesLib = path.join(libDir, 'styles');
// Copy directories
copyDir(componentsSrc, componentsLib);
copyDir(providersSrc, providersLib);
copyDir(configSrc, configLib);
copyDir(stylesSrc, stylesLib);
// Copy only CindyChatBot.tsx to lib/components
if (!fs.existsSync(componentsLib)) {
fs.mkdirSync(componentsLib, { recursive: true });
}
// Copy CindyChatBot.tsx
const cindyChatBotSrc = path.join(componentsSrc, 'CindyChatBot.tsx');
const cindyChatBotDest = path.join(componentsLib, 'CindyChatBot.tsx');
if (fs.existsSync(cindyChatBotSrc)) {
fs.copyFileSync(cindyChatBotSrc, cindyChatBotDest);
}
// Copy AgenticAI.tsx
const agenticAISrc = path.join(componentsSrc, 'AgenticAI', 'components', 'agentic-ai.tsx');
const agenticAIDest = path.join(componentsLib, 'AgenticAI', 'components', 'agentic-ai.tsx');
if (fs.existsSync(agenticAISrc)) {
fs.copyFileSync(agenticAISrc, agenticAIDest);
}
// Copy AgenticCindyChatBot.tsx
const agenticCindyChatBotSrc = path.join(componentsSrc, 'AgenticCindyChatBot.tsx');
const agenticCindyChatBotDest = path.join(componentsLib, 'AgenticCindyChatBot.tsx');
if (fs.existsSync(agenticCindyChatBotSrc)) {
fs.copyFileSync(agenticCindyChatBotSrc, agenticCindyChatBotDest);
}
console.log('Components copied to lib directory successfully!');