gogo-movement-starter
Version:
GOGO Movement Network React Starter Template - Complete React + Vite + Move contracts setup
90 lines (75 loc) • 2.93 kB
JavaScript
import readline from 'readline';
import fs from 'fs';
import path from 'path';
async function setupMovementEnvironment() {
// Check if setup has already been run
const setupMarkerFile = path.join(process.cwd(), '.gogo-setup-complete');
if (fs.existsSync(setupMarkerFile)) {
console.log('✅ GOGO setup already completed. Run "npm run setup-movement" to reconfigure.');
return true;
}
console.log('');
console.log('🎯 Complete Movement Network Setup');
console.log('===================================');
console.log('');
console.log('Your GOGO starter template is ready! 🎉');
console.log('');
console.log('Would you like to add Move smart contract development?');
console.log('');
console.log('This will:');
console.log('• Set up Aptos CLI with Movement Network configuration');
console.log('• Create a contracts/ folder in your template');
console.log('• Initialize your first Move project with demo functions');
console.log('');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
const question = (query) => new Promise((resolve) => rl.question(query, resolve));
try {
const runSetup = await question('Add Move contracts to your template? (y/n, default: y): ') || 'y';
if (runSetup.toLowerCase() === 'y' || runSetup.toLowerCase() === 'yes') {
rl.close();
console.log('');
console.log('🚀 Adding Move contract development to your GOGO template...');
console.log('');
// Import and run the setup script
const { setupGuide } = await import('./setup-movement.js');
const success = await setupGuide();
// Create marker file to prevent duplicate runs
if (success) {
fs.writeFileSync(setupMarkerFile, new Date().toISOString());
}
return success;
} else {
rl.close();
console.log('');
console.log('📋 No problem! Your GOGO template is ready to use.');
console.log('Run "npm run setup-movement" later to add Move contracts.');
console.log('Or run "npm run dev" to start building with GOGO!');
console.log('');
return true;
}
} catch (error) {
rl.close();
console.error('❌ Setup failed:', error.message);
return false;
}
}
// Export the setup function
export { setupMovementEnvironment };
// Only run setup if this file is executed directly
if (import.meta.url === `file://${process.argv[1]}`) {
setupMovementEnvironment().then(success => {
if (success) {
console.log('✅ Ready to create your Movement Network project!');
} else {
console.log('❌ Setup failed.');
process.exit(1);
}
}).catch(error => {
console.error('❌ Setup failed:', error.message);
process.exit(1);
});
}