cli-ascii-logo
Version:
Create beautiful ASCII art logos with gradient colors for your CLI applications
87 lines (84 loc) • 2.55 kB
JavaScript
#!/usr/bin/env node
import logo, { PALETTE_NAMES } from "./Logo.js";
const args = process.argv.slice(2);
function showHelp() {
console.log(`
Usage: cli-ascii-logo [text] [options]
Examples:
cli-ascii-logo "Hello World"
cli-ascii-logo "Hello World" --palette sunset
cli-ascii-logo "Hello World" -p cyberpunk
cli-ascii-logo "Hello World" --random
cli-ascii-logo --list
Options:
-p, --palette <name> Use a specific gradient palette (default: sunset)
-r, --random Use a random gradient
-l, --list List all available palettes
-h, --help Show this help message
Available Palettes:
${PALETTE_NAMES.join(", ")}
`);
}
function listPalettes() {
console.log("\nAvailable Gradient Palettes:\n");
PALETTE_NAMES.forEach((palette) => {
console.log(logo.createLogo(palette, palette));
console.log("");
});
}
function main() {
if (args.length === 0 || args.includes("-h") || args.includes("--help")) {
showHelp();
process.exit(0);
}
if (args.includes("-l") || args.includes("--list")) {
listPalettes();
process.exit(0);
}
let text = "";
let palette;
let useRandom = false;
for (let i = 0; i < args.length; i++) {
const arg = args[i];
if (arg === "-p" || arg === "--palette") {
const nextArg = args[i + 1];
if (!nextArg) {
console.error("Error: --palette requires a palette name");
process.exit(1);
}
if (!PALETTE_NAMES.includes(nextArg)) {
console.error(`Error: Unknown palette "${nextArg}". Use --list to see available palettes.`);
process.exit(1);
}
palette = nextArg;
i++;
}
else if (arg === "-r" || arg === "--random") {
useRandom = true;
}
else if (!arg.startsWith("-")) {
text += (text ? " " : "") + arg;
}
}
if (!text) {
console.error("Error: No text provided");
showHelp();
process.exit(1);
}
try {
let result;
if (useRandom) {
result = logo.createRandomLogo(text);
}
else {
result = logo.createLogo(text, palette);
}
console.log(result);
}
catch (error) {
console.error("Error:", error.message);
process.exit(1);
}
}
main();
//# sourceMappingURL=cli.js.map