Files
gh-rawveg-skillsforge-marke…/skills/figlet-text-converter/scripts/list-fonts.js
2025-11-30 08:50:16 +08:00

55 lines
1.5 KiB
JavaScript

import { execSync } from 'child_process';
// Get available fonts via npx figlet
function getAvailableFonts() {
try {
const output = execSync('npx figlet --list', { encoding: 'utf-8' });
// Skip the "Available fonts:" header and filter out empty lines
return output.trim().split('\n').slice(1).map(line => line.trim()).filter(line => line);
} catch (error) {
console.error('Error retrieving fonts:', error.message);
process.exit(1);
}
}
// Generate ASCII art via npx figlet
function generateAsciiArt(text, font) {
try {
const output = execSync(`npx figlet -f "${font}" "${text}"`, { encoding: 'utf-8' });
return output;
} catch (error) {
return '(Preview not available)';
}
}
// Main function
function main() {
const fonts = getAvailableFonts();
console.log(`\n📋 Available Figlet Fonts (${fonts.length} total):\n`);
console.log('='.repeat(60));
// Show first 10 fonts with examples
const previewCount = Math.min(10, fonts.length);
for (let i = 0; i < previewCount; i++) {
const font = fonts[i];
console.log(`\n🔤 ${font}`);
console.log('-'.repeat(40));
const preview = generateAsciiArt('Sample', font);
console.log(preview);
}
console.log('\n' + '='.repeat(60));
console.log(`\n📝 All Available Fonts (${fonts.length} total):\n`);
fonts.forEach((font, index) => {
console.log(` ${(index + 1).toString().padStart(3)}. ${font}`);
});
console.log('\n💡 Tip: Use font="font-name" in figlet tags');
console.log(' Default font: "standard"\n');
}
main();