scripts/compressSvg-cli.ts
Rama main · réplica de lectura del repositorio original.
#!/usr/bin/env bun
/**
* CLI entry point for scripts/compressSvg.ts. This file is never imported by anything (the action and tests import
* the library directly), so it can unconditionally parse argv and run — no entry guard needed.
*/
import * as fs from 'fs';
import * as path from 'path';
import compressSvg from './compressSvg';
function logHelp() {
console.log('');
console.log('Usage:');
console.log(' Mode 1 - Directory scan:');
console.log(' npm run compress-svg -- --dir assets/images');
console.log('');
console.log(' Mode 2 - Specific files:');
console.log(' npm run compress-svg -- --files file1.svg file2.svg ...');
console.log('');
console.log('Options:');
console.log(' --help, -h Show this help message');
console.log(' --dir Compress all SVG files in specified directory');
console.log(' --files Compress specified SVG files');
console.log('');
console.log('To ignore compression for a file, add "-ignore-compression" to the file name: file-ignore-compression.svg');
console.log('');
}
const args = process.argv.slice(2);
const firstArg = args.at(0);
if (firstArg === '--help' || firstArg === '-h') {
logHelp();
process.exit(0);
}
if (firstArg === '--dir' || firstArg === '-d') {
const targetDir = args.at(1);
if (!targetDir) {
console.error('❌ No directory specified after --dir flag');
console.log('');
logHelp();
process.exit(1);
}
if (!fs.existsSync(targetDir)) {
console.error(`❌ Directory '${targetDir}' does not exist.`);
process.exit(1);
}
const stat = fs.statSync(targetDir);
if (!stat.isDirectory()) {
console.error(`❌ '${targetDir}' is not a directory.`);
console.log('Use --files flag to compress specific files');
process.exit(1);
}
console.log(`Target directory: ${path.resolve(targetDir)}`);
compressSvg('directory', {targetDir})
.then(() => {
console.log('\n✅ SVG compression completed successfully');
process.exit(0);
})
.catch((error: unknown) => {
const errorMessage = error instanceof Error ? error.message : String(error);
console.error(`Fatal error: ${errorMessage}`);
process.exit(1);
});
} else if (firstArg === '--files' || firstArg === '-f') {
if (args.length < 2) {
console.error('❌ No files specified after --files flag');
console.log('');
logHelp();
process.exit(1);
}
const filePaths = args.slice(1);
console.log(`Specific files (${filePaths.length} files provided)`);
compressSvg('files', {filePaths})
.then(() => {
console.log('\n✅ SVG compression completed successfully');
process.exit(0);
})
.catch((error: unknown) => {
const errorMessage = error instanceof Error ? error.message : String(error);
console.error(`Fatal error: ${errorMessage}`);
process.exit(1);
});
}
// No arguments provided - show help
else {
logHelp();
process.exit(0);
}