Files
insertr/scripts/dev.js
Joakim 8a709a5250 cleanup: remove legacy insertr-cli and insertr-server directories
🧹 **Legacy Code Cleanup**

**Removed Directories:**
- `insertr-cli/` - 23 files removed (replaced by unified binary)
- `insertr-server/` - 24 files removed (replaced by unified binary)

**Updated References:**
- `TODO.md` - Updated file paths to reflect unified structure
- `scripts/dev.js` - Updated required/optional file checks

**Benefits:**
 **Single Source of Truth** - No more duplicate code or confusion
 **Smaller Repository** - Removed ~47 legacy files and binaries
 **Cleaner Development** - Only unified binary approach remains
 **Better Maintenance** - No legacy code paths to maintain

**All Functionality Preserved:**
- Database layer: `internal/db/`
- Content logic: `internal/content/`
- API handlers: `internal/api/`
- Commands: `cmd/enhance.go`, `cmd/serve.go`

The unified `insertr` binary now provides all functionality with enhanced architecture and no backwards compatibility baggage.
2025-09-10 18:38:56 +02:00

140 lines
5.0 KiB
JavaScript
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env node
/**
* Development helper script for Insertr
* Provides common development tasks and utilities
*/
import { execSync, spawn } from 'child_process';
import fs from 'fs';
import path from 'path';
const commands = {
serve: {
description: 'Start full-stack development (demo + API server)',
action: () => {
console.log('🚀 Starting Full-Stack Insertr Development...');
console.log('📂 Demo site: http://localhost:3000');
console.log('🔌 API server: http://localhost:8080');
console.log('💾 Content persistence: ENABLED');
console.log('\n⚠ This command uses justfile orchestration - redirecting to "just dev-full"...\n');
// Use justfile for proper orchestration
const { execSync } = require('child_process');
try {
execSync('just dev-full', { stdio: 'inherit' });
} catch (error) {
console.log('\n💡 Alternative: Start components separately:');
console.log(' Terminal 1: just server');
console.log(' Terminal 2: just demo-only');
process.exit(1);
}
}
},
check: {
description: 'Check project status and validate setup',
action: () => {
console.log('🔍 Checking Insertr project status...\n');
// Check files exist
const requiredFiles = [
'demo-site/index.html',
'demo-site/about.html',
'lib/dist/insertr.js',
'lib/dist/insertr.min.js',
'cmd/serve.go',
'package.json'
];
const optionalFiles = [
'insertr'
];
let allGood = true;
requiredFiles.forEach(file => {
if (fs.existsSync(file)) {
console.log('✅', file);
} else {
console.log('❌', file, '(missing)');
allGood = false;
}
});
// Check optional files
console.log('\n📦 Build artifacts:');
optionalFiles.forEach(file => {
if (fs.existsSync(file)) {
console.log('✅', file, '(built)');
} else {
console.log('⚪', file, '(not built - run "just build")');
}
});
if (allGood) {
console.log('\n🎉 All core files present!');
console.log('\n📊 Project stats:');
// Count editable elements
const indexContent = fs.readFileSync('demo-site/index.html', 'utf8');
const aboutContent = fs.readFileSync('demo-site/about.html', 'utf8');
const insertrMatches = (indexContent + aboutContent).match(/class="insertr"/g) || [];
console.log(` 📝 Editable elements: ${insertrMatches.length}`);
// Check library size
const libSize = fs.statSync('lib/dist/insertr.js').size;
console.log(` 📦 Library size: ${(libSize / 1024).toFixed(1)}KB`);
console.log('\n🚀 Development options:');
console.log(' npm run dev - Full-stack development (recommended)');
console.log(' just dev - Full-stack development (recommended)');
console.log(' just demo-only - Demo site only (no persistence)');
console.log(' just server - API server only (localhost:8080)');
console.log('\n💡 Primary workflow: npm run dev or just dev');
} else {
console.log('\n❌ Some files are missing. Please check your setup.');
process.exit(1);
}
}
},
demo: {
description: 'Show demo instructions',
action: () => {
console.log('🎬 Insertr Demo Instructions\n');
console.log('1. 🌐 Start server: npm run serve');
console.log('2. 👀 Customer view: Browse the site normally');
console.log('3. 🔑 Client login: Click "Login as Client"');
console.log('4. ✏️ Edit mode: Click "Edit Mode: Off" to enable editing');
console.log('5. 📝 Edit content: Click any ✏️ button to edit');
console.log('6. 🔄 Try different content types (simple text vs rich markdown)');
console.log('7. 📄 Multi-page: Navigate to About page to see persistence\n');
console.log('🎯 Key features to test:');
console.log(' • Inline text editing');
console.log(' • Markdown editing for rich content');
console.log(' • Auto-save with visual feedback');
console.log(' • Content persistence across pages');
console.log(' • Responsive design on mobile\n');
}
}
};
// Parse command line arguments
const command = process.argv[2] || 'help';
if (commands[command]) {
commands[command].action();
} else if (command === 'help' || command === '--help' || command === '-h') {
console.log('🛠️ Insertr Development Helper\n');
console.log('Available commands:\n');
Object.entries(commands).forEach(([name, cmd]) => {
console.log(` ${name.padEnd(12)} ${cmd.description}`);
});
console.log('\nUsage: node scripts/dev.js <command>');
console.log(' or: npm run check\n');
} else {
console.log(`❌ Unknown command: ${command}`);
console.log('Run: node scripts/dev.js help');
process.exit(1);
}