UNPKG

namastejs

Version:

A spiritual greeting from your JavaScript code. Because every function deserves a 'Namaste šŸ™'

73 lines (55 loc) • 1.92 kB
const os = require("os"); const username = os.userInfo().username || "Developer"; function line(char = "─", len = 80) { console.log(char.repeat(len)); } // max command length to keep inline arrow const MAX_INLINE_LENGTH = 30; function printCommand(cmd, desc, index = null) { const prefix = index !== null ? `${index}. ` : ""; if (cmd.length <= MAX_INLINE_LENGTH) { console.log(`${prefix}${desc.padEnd(MAX_INLINE_LENGTH)} → ${cmd}`); } else { console.log(`${prefix}${desc}`); console.log(` ∟ ${cmd}`); } } function printService(service, filter) { console.log(`\nšŸ™ Namaste, ${username}`); console.log(`šŸ“¦ Service: ${service.name}`); console.log(`🧠 Purpose: ${service.description}`); console.log(`šŸ•’ Verified: ${service.updatedAt}\n`); line(); const filterLower = filter?.toLowerCase(); let printedAny = false; Object.entries(service.categories).forEach(([category, commands]) => { // šŸŽÆ Filter commands if a keyword is provided const filtered = filterLower ? commands.filter( ([cmd]) => cmd.toLowerCase().includes(filterLower) || category.toLowerCase().includes(filterLower) ) : commands; if (!filtered.length) return; console.log(`\nšŸ”¹ ${category}`); filtered.forEach(([cmd, desc], idx) => { printCommand(cmd, desc, idx + 1); }); printedAny = true; }); if (!printedAny) { console.log("\nāŒ No matching commands found."); } line(); console.log("\n✨ Tip:"); console.log( `Use \`npx namastejs get ${service.name.toLowerCase()} <keyword>\` to directly search related commands` ); console.log("\n"); // šŸ”— Learn more (only if exists) if (service.learnMore) { console.log(`šŸ”— Learn more: ${service.learnMore}\n`); } } module.exports = { printService };