@risemaxi/api-client
Version:
Client Library for Rise
51 lines (41 loc) • 1.35 kB
JavaScript
const { version } = require("../package.json");
const { program } = require("commander");
const fs = require("node:fs");
const path = require("node:path");
const { execSync } = require("node:child_process");
program
.name("rise-api")
.description("API client generation CLI tool")
.version(version);
program
.command("generate <swaggerFile>")
.description("Generate TypeScript contract and compile to JavaScript")
.action((swaggerFile) => {
const SRC_DIR = path.join("node_modules", "@risemaxi", "api-client", "src");
const OUTPUT_FILE = path.join(SRC_DIR, "contract.ts");
try {
fs.mkdirSync(SRC_DIR, { recursive: true });
execSync(
`npx typed-openapi@1.5.0 "${swaggerFile}" -o "${OUTPUT_FILE}" -r typebox`,
{ stdio: "inherit" }
);
console.log("Compiling TypeScript to JavaScript...");
execSync(
`npx tsc --noCheck --project "${path.join(
SRC_DIR,
"..",
"tsconfig.build.json"
)}"`,
{
stdio: "inherit",
}
);
fs.rmSync(SRC_DIR, { recursive: true, force: true });
console.log("File generated and compiled successfully.");
} catch (error) {
console.error("Error during file generation:", error);
process.exit(1);
}
});
program.parse(process.argv);