namastejs
Version:
A spiritual greeting from your JavaScript code. Because every function deserves a 'Namaste š'
73 lines (55 loc) ⢠1.92 kB
JavaScript
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 };