eng/scripts/gen-sdk.js (69 lines of code) (raw):

import { runOrExit } from "../../core/packages/internal-build-utils/dist/src/common.js"; import { autorest, scanSwaggers } from "./helpers.js"; const AUTOREST_CORE_VERSION = "3.7.2"; async function generateSDK(lang, swagger) { try { switch (lang) { case "python": await runOrExit(autorest, [ "--debug", "--verbose", `--version=${AUTOREST_CORE_VERSION}`, "--python", "--track2", "--use=@autorest/python@5.16.0", "--python-sdks-folder=sdk/python", "--python-mode=update", "--input-file=" + swagger, ]); break; case "javascript": await runOrExit(autorest, [ `--version=${AUTOREST_CORE_VERSION}`, "--typescript", "--use=@autorest/typescript@6.0.0-rc.1", "--azure-arm", "--generate-metadata", "--output-folder=sdk/javascript", "--modelerfour.lenient-model-deduplication", "--head-as-boolean=true", "--license-header=MICROSOFT_MIT_NO_VERSION", "--input-file=" + swagger, ]); break; default: throw new Error("Not supported SDK language: " + lang); } return true; } catch (error) { console.error(error); return false; } } const ignoreSwagger = []; async function main() { const lang = process.argv[2]; // python/javascript const roots = process.argv[3].split(";"); const paths = roots .flatMap((root) => scanSwaggers(root)) .filter((x) => !ignoreSwagger.some((y) => x.endsWith(y))); console.log("Scanned following swaggers:", paths); const errorPaths = []; for (const p of paths) { console.log("Generate SDK for", p); const success = await generateSDK(lang, p); if (!success) { errorPaths.push(p); } console.log("\n\n\n"); } if (errorPaths.length > 0) { console.error("SDK generation errors for following swagger files:"); console.error(errorPaths); process.exit(1); } } main().catch((error) => { console.error("Error", error); process.exit(1); });