UNPKG

cindy-ai-chatbot

Version:

An AI-powered chatbot component for React applications

93 lines (78 loc) 3.19 kB
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!');