#!/usr/bin/env node /** * Build script for Insertr library and CLI integration * This ensures the CLI always has the latest library version embedded */ import { execSync } from 'child_process'; import fs from 'fs'; import path from 'path'; console.log('šŸ”Ø Building Insertr library and CLI...\n'); // 1. Build the library console.log('šŸ“¦ Building JavaScript library...'); try { execSync('npm run build', { cwd: 'lib', stdio: 'inherit' }); console.log('āœ… Library built successfully\n'); } catch (error) { console.error('āŒ Library build failed:', error.message); process.exit(1); } // 2. Copy built library to CLI assets console.log('šŸ“ Copying library to CLI assets...'); const srcDir = './lib/dist'; const destDir = './insertr-cli/pkg/content/assets'; // Ensure destination directory exists fs.mkdirSync(destDir, { recursive: true }); // Copy files const files = fs.readdirSync(srcDir); files.forEach(file => { const src = path.join(srcDir, file); const dest = path.join(destDir, file); fs.copyFileSync(src, dest); console.log(` āœ… Copied ${file}`); }); console.log('šŸ“ Assets copied successfully\n'); // 3. Build the CLI console.log('šŸ”§ Building Go CLI...'); try { execSync('go build -o insertr', { cwd: './insertr-cli', stdio: 'inherit' }); console.log('āœ… CLI built successfully\n'); } catch (error) { console.error('āŒ CLI build failed:', error.message); process.exit(1); } // 4. Build the API Server console.log('šŸ”Œ Building API Server...'); try { execSync('go build -o insertr-server ./cmd/server', { cwd: './insertr-server', stdio: 'inherit' }); console.log('āœ… API Server built successfully\n'); } catch (error) { console.error('āŒ API Server build failed:', error.message); process.exit(1); } console.log('šŸŽ‰ Build complete!\n'); console.log('šŸ“‹ What was built:'); console.log(' • JavaScript library (lib/dist/)'); console.log(' • Go CLI with embedded library (insertr-cli/insertr)'); console.log(' • Content API server (insertr-server/insertr-server)'); console.log('\nšŸš€ Ready to use:'); console.log(' just dev # Full-stack development'); console.log(' just server # API server only'); console.log(' cd insertr-cli && ./insertr --help # CLI tools');