UNPKG

aiom

Version:

A Highly Flexible and Modular Framework for Behavioral Experiments

95 lines (88 loc) โ€ข 3.21 kB
#!/usr/bin/env node const localdownloader = require('../src/services/download.js'); const heroku = require('../src/services/heroku.js'); // Parse command line arguments const args = process.argv.slice(2); const command = args[0]; function showHelp() { console.log(` ๐Ÿงช Behavioral Experiments Framework CLI Usage: aiom download # Download local data aiom heroku # Heroku operations aiom run # Start the local testing server aiom dev # Start the local development server with nodemon `); } async function heroku_operation() { let op = args[1]; if (op === 'deploy') { await heroku.deploy(); } else if (op === 'download') { await heroku.download(); } else { console.log('Usage: node heroku.js <services>'); console.log('aiom heroku deploy # Deploy the app to Heroku'); console.log('aiom heroku download # Download data from a Heroku app'); } } async function local_download() { const downloader = new localdownloader(); const experimentDir = process.cwd(); let tableName = args[1]; try { if (!tableName) { // Show available tables and usage const tables = await downloader.listTables(); console.log('๐Ÿ“Š Available tables:'); tables.forEach(table => console.log(` - ${table}`)); console.log('\n๐Ÿ“ Usage:'); console.log('aiom download participants # Download participants table'); console.log('aiom download all # Download all tables'); return; } else if (tableName === 'all') { await downloader.downloadAllTables(experimentDir + '/downloads'); } else { await downloader.downloadTable(tableName, experimentDir + '/downloads'); } } catch (error) { console.error('โŒ Download failed:', error.message); console.error('๐Ÿ’ก Make sure your database is running and .env is configured correctly'); process.exit(1); } finally { await downloader.close(); } } async function main() { try { if (command === 'heroku') { await heroku_operation(); } else if (command === 'download') { await local_download(); } else if (command === 'run') { const { spawn } = require('child_process'); spawn('node', ['app.js'], { shell: true, cwd: process.cwd(), stdio: 'inherit' }); } else if (command === 'dev') { const { spawn } = require('child_process'); spawn('npx', ['nodemon', 'app.js'], { shell: true, cwd: process.cwd(), stdio: 'inherit' }); } else if (command === 'help' || !command) { showHelp(); } else { console.error(`Unknown command: ${command}`); showHelp(); process.exit(1); } } catch (error) { console.error('CLI error:', error); process.exit(1); } } main();