UNPKG

@codejoy/terminal-pet

Version:

A virtual pet that lives in your terminal and grows with your coding activity

100 lines (77 loc) 3 kB
#!/usr/bin/env node /** * Terminal Pet Demo Script * * This script demonstrates the programmatic usage of the Terminal Pet library. * Run with: node examples/demo.js */ const { Pet, PetDisplay, GitIntegration } = require('../index'); async function runDemo() { console.log('🐾 Terminal Pet Demo\n'); // Create a new pet console.log('Creating a new pet...'); const pet = new Pet('DemoKitty', 'cat'); console.log(PetDisplay.displayPet(pet)); // Simulate some activities console.log('\n🍖 Feeding the pet...'); pet.feed(); console.log(PetDisplay.displayMessage('Pet fed successfully!', 'success')); console.log('\n🎾 Playing with the pet...'); pet.play(); console.log(PetDisplay.displayMessage('Had fun playing!', 'success')); // Simulate commits console.log('\n💻 Simulating coding activity...'); const commitMessages = [ 'feat: add user authentication', 'fix: resolve login bug', 'refactor: clean up code structure', 'feat: implement dashboard', 'fix: handle edge cases' ]; commitMessages.forEach((message, index) => { console.log(`\nCommit ${index + 1}: "${message}"`); const leveledUp = pet.checkLevelUp(); pet.onCommit(message); const achievements = pet.checkAchievements('commit'); if (leveledUp) { console.log(PetDisplay.displayLevelUp(pet)); } if (achievements.length > 0) { console.log(PetDisplay.displayNewAchievements(achievements)); } console.log(PetDisplay.displayMessage(`Experience gained! Current XP: ${pet.experience}`, 'info')); }); // Show final status console.log('\n📊 Final Pet Status:'); console.log(PetDisplay.displayPet(pet)); console.log('\n📈 Pet Statistics:'); console.log(PetDisplay.displayStats(pet)); // Git integration demo (if in a git repo) const git = new GitIntegration(); const isGitRepo = await git.isGitRepository(); if (isGitRepo) { console.log('\n🔧 Git Integration Demo:'); const commits = await git.getRecentCommits(5); console.log(`Recent commits: ${commits.length}`); const todaysCommits = await git.getTodaysCommits(); console.log(`Today's commits: ${todaysCommits}`); const streak = await git.getCommitStreak(); console.log(`Current streak: ${streak} days`); const analysis = await git.analyzeCommitActivity(); if (analysis) { console.log('\nCommit Analysis:'); console.log(`- Total commits: ${analysis.totalCommits}`); console.log(`- Bug fixes: ${analysis.bugFixes}`); console.log(`- Features: ${analysis.features}`); console.log(`- Refactors: ${analysis.refactors}`); } } else { console.log('\n⚠️ Not in a git repository - git integration features unavailable'); } console.log('\n✨ Demo completed! Try running "pet adopt" to get your own pet!'); } // Handle errors gracefully runDemo().catch(error => { console.error('Demo error:', error); process.exit(1); });