@codejoy/terminal-pet
Version:
A virtual pet that lives in your terminal and grows with your coding activity
100 lines (77 loc) • 3 kB
JavaScript
/**
* 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);
});