UNPKG

aahook

Version:

A CLI tool that displays ASCII art when commands succeed or fail

174 lines 5.55 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.initCommand = initCommand; const fs = __importStar(require("fs")); const path = __importStar(require("path")); const readline = __importStar(require("readline")); const config_1 = require("./config"); const utils_1 = require("./utils"); const display_1 = require("./display"); /** * Initialize aahook configuration */ async function initCommand() { try { // Check if already initialized if ((0, utils_1.fileExists)(config_1.CONFIG_DIR)) { const shouldReinitialize = await checkExisting(); if (!shouldReinitialize) { console.log('Initialization cancelled.'); return; } // Create backup await createBackup(); } // Create environment await createEnvironment(); // Show success message (0, display_1.showSuccess)('aahook initialized successfully!'); (0, display_1.showInfo)('📁 Created ~/.aahook with sample arts'); (0, display_1.showInfo)('🎯 Try: aahook ls'); (0, display_1.showInfo)('⚙️ Edit ~/.aahook/config.json to customize'); } catch (error) { (0, display_1.showError)(`Initialization failed: ${error.message}`); process.exit(1); } } /** * Check if aahook is already initialized */ async function checkExisting() { const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); return new Promise((resolve) => { rl.question('~/.aahook already exists. Reinitialize? (y/N): ', (answer) => { rl.close(); resolve(answer.toLowerCase() === 'y'); }); }); } /** * Create backup of existing configuration */ async function createBackup() { const timestamp = (0, utils_1.getTimestamp)(); const backupDir = `${config_1.CONFIG_DIR}.backup-${timestamp}`; (0, display_1.showInfo)(`Creating backup at ${backupDir}`); // Rename existing directory fs.renameSync(config_1.CONFIG_DIR, backupDir); (0, display_1.showInfo)('Backup created successfully'); } /** * Create aahook environment */ async function createEnvironment() { // Create directories createDirectories(); // Copy default arts await copyDefaultArts(); // Create sample configuration createSampleConfig(); } /** * Create necessary directories */ function createDirectories() { (0, utils_1.ensureDirectory)(config_1.CONFIG_DIR); (0, utils_1.ensureDirectory)(config_1.ARTS_DIR); } /** * Copy default art files */ async function copyDefaultArts() { const assetsDir = path.join(__dirname, '..', '..', 'assets', 'arts'); const artFiles = ['success.txt', 'error.txt', 'dragon.txt', 'cat.txt']; for (const artFile of artFiles) { const srcPath = path.join(assetsDir, artFile); const destPath = path.join(config_1.ARTS_DIR, artFile); if ((0, utils_1.fileExists)(srcPath)) { (0, utils_1.copyFile)(srcPath, destPath); } else { // Create default art content if source doesn't exist createDefaultArt(artFile, destPath); } } } /** * Create default art content */ function createDefaultArt(filename, destPath) { let content = ''; switch (filename) { case 'success.txt': content = `✨ Success! ✨ ∩───∩ ( ◕ ◕ ) ∪ ─── ∪ Task completed!`; break; case 'error.txt': content = `💥 Oops! 💥 (╯°□°)╯ Something went wrong... Check the error above ↑`; break; case 'dragon.txt': content = `🐲 Push successful! 🐲 /| /| ( :v: ) |(_)| Your code flies to the repo!`; break; case 'cat.txt': content = `🐱 Done! 🐱 /\\_/\\ ( o.o ) > ^ <`; break; } fs.writeFileSync(destPath, content, 'utf8'); } /** * Create sample configuration */ function createSampleConfig() { (0, config_1.saveConfig)(config_1.DEFAULT_CONFIG); } //# sourceMappingURL=init.js.map