UNPKG

gogo-movement-starter

Version:

GOGO Movement Network React Starter Template - Complete React + Vite + Move contracts setup

152 lines (135 loc) 5.29 kB
#!/usr/bin/env node console.log(' ▄████ ▄████ ▄████ ▄████ '); console.log(' ██ ██ ██ ██ ██ ██ '); console.log(' ██ ▄▄█ ██ ██ ██ ▄▄█ ██ ██ '); console.log(' ██ ██ ██ ██ ██ ██ ██ ██ '); console.log(' ▀████ ▀████ ▀████ ▀████ '); console.log('▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀'); console.log(''); console.log(' Built on Moveindustries'); console.log(''); console.log('🎯 Welcome to GOGO - Movement Network Starter Template'); console.log(''); console.log('✨ GOGO React Starter Template - Ready to build on Movement!'); console.log('📦 Version: 1.0.0'); console.log('🔗 Homepage: https://movementlabs.xyz'); console.log('📚 Documentation: https://docs.movementnetwork.xyz/'); console.log(''); console.log('🚀 This template includes:'); console.log('• GOGO React components and hooks'); console.log('• Built-in wallet adapters (@razorlabs/razorkit)'); console.log('• Movement Network integration'); console.log('• TypeScript support'); console.log('• Demo application with examples'); console.log(''); console.log('🎯 Installing GOGO React template...'); console.log(''); // Import required modules import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; import { execSync } from 'child_process'; // Get __dirname equivalent for ES modules const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); // Recursive copy function function copyRecursive(src, dest) { if (fs.statSync(src).isDirectory()) { if (!fs.existsSync(dest)) { fs.mkdirSync(dest, { recursive: true }); } const files = fs.readdirSync(src); for (const file of files) { const srcPath = path.join(src, file); const destPath = path.join(dest, file); copyRecursive(srcPath, destPath); } } else { fs.copyFileSync(src, dest); } } // Template installation function async function installTemplate() { const currentDir = process.cwd(); const templateDir = path.join(__dirname, '..'); console.log('📁 Copying React template files...'); // Files to copy const filesToCopy = [ 'src', 'public', 'scripts', 'package.json', 'vite.config.ts', 'tsconfig.json', 'tsconfig.app.json', 'tsconfig.node.json', 'eslint.config.js', 'index.html', '.gitignore' ]; try { // Copy template files for (const file of filesToCopy) { const sourcePath = path.join(templateDir, file); const destPath = path.join(currentDir, file); if (fs.existsSync(sourcePath)) { copyRecursive(sourcePath, destPath); console.log(`✅ Copied ${file}`); } } console.log(''); console.log('🎉 GOGO React template installed successfully!'); console.log(''); // Step 1.5: Install dependencies (only if not already in postinstall) if (!process.env.npm_lifecycle_event || process.env.npm_lifecycle_event !== 'postinstall') { console.log('📦 Installing dependencies...'); console.log(''); try { execSync('npm install', { stdio: 'inherit' }); console.log('✅ Dependencies installed successfully!'); console.log(''); } catch (error) { console.error('❌ npm install failed:', error.message); console.log('You can run "npm install" manually later.'); console.log(''); } } // Step 2: Run postinstall setup automatically console.log('🚀 Step 2: Setting up Movement Network integration...'); console.log(''); try { // Import and run postinstall setup const { setupMovementEnvironment } = await import('./postinstall-setup.js'); const setupSuccess = await setupMovementEnvironment(); if (setupSuccess) { console.log(''); console.log('🎉 Complete GOGO installation finished!'); console.log(''); console.log('✅ What you now have:'); console.log('• Complete React + Vite template'); console.log('• Movement Network integration'); console.log('• Move smart contracts ready'); console.log('• Interactive setup complete'); console.log(''); console.log('🚀 Ready to start development:'); console.log('1. npm run dev (start React app)'); console.log('2. cd contracts (work with Move contracts)'); console.log('3. aptos move compile (compile contracts)'); console.log('4. aptos move publish (deploy to Movement Network)'); console.log(''); console.log('🎯 Your GOGO Movement dapp is ready!'); } } catch (error) { console.error('❌ Movement setup failed:', error.message); console.log(''); console.log('📋 You can still run manual setup:'); console.log(' npm run setup-movement'); } return true; } catch (error) { console.error('❌ Template installation failed:', error.message); return false; } } // Run template installation installTemplate().catch(console.error);