@usefui/svgjsx
Version:
Open Source Command Line Interfaces to generate JSX Icon Components from SVGs.
67 lines ⢠2.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createCli = exports.handleGenerate = void 0;
const commander_1 = require("commander");
const generate_1 = require("./commands/generate");
const validators_1 = require("./core/validators");
const result_1 = require("./utils/result");
const handleGenerate = (options) => {
console.log("š§ Checking configuration...");
const configResult = (0, validators_1.validateConfig)(options.source, options.output);
if (!(0, result_1.isSuccess)(configResult))
(0, generate_1.handleError)(configResult.error);
if ((0, result_1.isSuccess)(configResult)) {
const generationResult = (0, generate_1.generateIcons)(configResult.value);
if (!(0, result_1.isSuccess)(generationResult))
(0, generate_1.handleError)(generationResult.error);
if ((0, result_1.isSuccess)(generationResult))
(0, generate_1.displayCompletion)(generationResult.value);
}
};
exports.handleGenerate = handleGenerate;
const createCli = () => {
const program = new commander_1.Command();
program
.name("svgjsx")
.description("Generate JSX Icon Components from SVGs")
.version("1.0.0")
.addHelpText("after", `
Examples:
$ svgjsx generate # Use default directories
$ svgjsx generate -s ./svg -o ./components # Custom directories
$ svgjsx generate --help # Show detailed help
`);
program
.command("generate")
.description("Generate TSX components from SVG files")
.option("-s, --source <dir>", "Source directory containing SVG files", "./svg")
.option("-o, --output <dir>", "Output directory for generated TSX files", "./icons")
.action(handleGenerate);
program
.command("version")
.description("Show version information")
.action(() => {
console.log(`svgjsx v${program.version()}`);
});
return program;
};
exports.createCli = createCli;
const main = () => {
const program = createCli();
program.exitOverride();
try {
program.parse();
if (!process.argv.slice(2).length) {
program.outputHelp();
console.log('\nš” Tip: Try "svgjsx generate" to get started!');
}
}
catch (error) {
if (error.code !== "commander.helpDisplayed")
(0, generate_1.handleError)(error);
}
};
if (require.main === module)
main();
//# sourceMappingURL=index.js.map