UNPKG

brick-codegen

Version:

Better React Native native module development

70 lines (68 loc) 2.45 kB
#!/usr/bin/env node import { NewBrickCodegen } from "./src-C3eLVBlf.js"; import { program } from "@commander-js/extra-typings"; import { readFileSync } from "fs"; import { dirname, join } from "path"; import pc from "picocolors"; import { fileURLToPath } from "url"; //#region src/cli.ts const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const packageJson = JSON.parse(readFileSync(join(__dirname, "../package.json"), "utf-8")); function log(message) { console.log(`${pc.bold(pc.green("[Brick]"))} ${message}`); } function logError(message) { console.error(`${pc.bold(pc.green("[Brick]"))} ${pc.red(message)}`); } program.name("brick-codegen").description("Brick Module Framework - React Native TurboModule Code Generator").version(packageJson.version).option("--debug", "Enable debug logging", false).option("--output-ios <path>", "Custom iOS output directory").option("--output-android <path>", "Custom Android output directory").option("--platform <platform>", "Target platform: ios or android"); program.action(async (options) => { await runGenerate(options); }); async function runGenerate(options) { try { const config = await buildConfig(options); const codegen = new NewBrickCodegen(config); const result = await codegen.generate(); if (result.success) log("Done."); else { if (result.errors.length > 0) for (const error of result.errors) logError(error); process.exit(1); } } catch (error) { logError(`${error instanceof Error ? error.message : "Unknown error"}`); process.exit(1); } } async function buildConfig(options) { const projectRoot = process.cwd(); const platforms = parsePlatformOptions(options); return { projectRoot, outputIos: options.outputIos, outputAndroid: options.outputAndroid, debug: options.debug || false, platforms }; } function parsePlatformOptions(options) { if (!options.platform) return void 0; const platform = options.platform.trim().toLowerCase(); if (!["ios", "android"].includes(platform)) { logError(`Invalid platform: ${platform}. Supported platforms: ios, android`); process.exit(1); } return [platform]; } process.on("uncaughtException", (error) => { logError(`Uncaught exception: ${error.message}`); process.exit(1); }); process.on("unhandledRejection", (reason) => { logError(`Unhandled rejection: ${reason}`); process.exit(1); }); program.parse(); //#endregion export { }; //# sourceMappingURL=cli.js.map