UNPKG

@maravilla-labs/functions

Version:

Maravilla Edge Functions bundler and development tools

89 lines (80 loc) â€ĸ 3.31 kB
#!/usr/bin/env node import { buildFunctions, developmentServer } from '../dist/index.js'; import { resolve } from 'node:path'; import { readFileSync } from 'node:fs'; import { fileURLToPath } from 'node:url'; import { dirname, join } from 'node:path'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf8')); const command = process.argv[2]; const args = process.argv.slice(3); function parseArgs(args) { const options = {}; for (let i = 0; i < args.length; i++) { if (args[i].startsWith('--')) { const key = args[i].slice(2); const value = args[i + 1] && !args[i + 1].startsWith('--') ? args[i + 1] : true; options[key] = value; if (value !== true) i++; } } return options; } if (command === 'build') { const options = parseArgs(args); const buildOptions = { functionsDir: options.dir || process.env.FUNCTIONS_DIR || 'functions', outputDir: options.output || process.env.OUTPUT_DIR || '.maravilla', production: options.production || process.env.NODE_ENV === 'production', minify: options.minify || process.env.NODE_ENV === 'production', sourcemap: options.sourcemap === true || process.env.SOURCEMAP === 'true', }; console.log('🚀 Building Maravilla functions...'); try { const manifest = await buildFunctions(buildOptions); if (manifest) { console.log(`✅ Built ${manifest.functions} functions successfully`); process.exit(0); } else { console.log('â„šī¸ No functions found to build'); process.exit(0); } } catch (error) { console.error('❌ Build failed:', error); process.exit(1); } } else if (command === 'dev') { const options = parseArgs(args); const devOptions = { functionsDir: options.dir || process.env.FUNCTIONS_DIR || 'functions', outputDir: options.output || process.env.OUTPUT_DIR || '.maravilla', watch: options.watch !== 'false', }; console.log('🚀 Starting Maravilla functions development server...'); try { await developmentServer(devOptions); } catch (error) { console.error('❌ Dev server failed:', error); process.exit(1); } } else if (command === '--version' || command === '-v') { console.log(packageJson.version); process.exit(0); } else { console.log('Maravilla Functions CLI v' + packageJson.version); console.log('\nUsage:'); console.log(' @maravilla/functions build [options] Build functions for production'); console.log(' @maravilla/functions dev [options] Start development server with hot reload'); console.log('\nBuild Options:'); console.log(' --dir <path> Functions directory (default: functions)'); console.log(' --output <path> Output directory (default: .maravilla)'); console.log(' --minify Minify output'); console.log(' --sourcemap Generate sourcemaps'); console.log(' --production Production build'); console.log('\nDev Options:'); console.log(' --dir <path> Functions directory (default: functions)'); console.log(' --output <path> Output directory (default: .maravilla)'); console.log(' --watch <bool> Watch for changes (default: true)'); process.exit(command ? 1 : 0); }