diff --git a/packages/cadl-typescript/src/lib.ts b/packages/cadl-typescript/src/lib.ts index 86bfd088cc..4a9051b83a 100644 --- a/packages/cadl-typescript/src/lib.ts +++ b/packages/cadl-typescript/src/lib.ts @@ -61,7 +61,8 @@ export const RLCOptionsSchema: JSONSchemaType = { }, nullable: true }, - azureArm: { type: "boolean", nullable: true } + azureArm: { type: "boolean", nullable: true }, + "sdk-folder": { type: "string", nullable: true } }, required: [] }; diff --git a/packages/cadl-typescript/src/transform/transform.ts b/packages/cadl-typescript/src/transform/transform.ts index c50b0a00e7..2e98b09547 100644 --- a/packages/cadl-typescript/src/transform/transform.ts +++ b/packages/cadl-typescript/src/transform/transform.ts @@ -32,8 +32,8 @@ import { transformSchemas } from "./transformSchemas.js"; import { transformRLCOptions } from "./transfromRLCOptions.js"; export async function transformRLCModel(program: Program, emitterOptions: RLCOptions): Promise { - const srcPath = join(program.compilerOptions.outputPath ?? "", "src"); const options: RLCOptions = transformRLCOptions(program, emitterOptions); + const srcPath = join(program.compilerOptions.outputPath ?? "", "src"); const libraryName = normalizeName( options?.title ?? getServiceTitle(program), NameType.Class diff --git a/packages/cadl-typescript/src/transform/transfromRLCOptions.ts b/packages/cadl-typescript/src/transform/transfromRLCOptions.ts index e1076c2ac3..6d88e25796 100644 --- a/packages/cadl-typescript/src/transform/transfromRLCOptions.ts +++ b/packages/cadl-typescript/src/transform/transfromRLCOptions.ts @@ -5,6 +5,7 @@ import { Program } from "@cadl-lang/compiler"; import { getAuthentication } from "@cadl-lang/rest/http"; +import { isAbsolute } from "path"; export function transformRLCOptions(program: Program, options: RLCOptions): RLCOptions { const config = options; @@ -18,6 +19,9 @@ export function transformRLCOptions(program: Program, options: RLCOptions): RLCO config.packageDetails.scopeName = nameParts[0]?.replace("@", ""); } } + if (options["sdk-folder"] && isAbsolute(options["sdk-folder"])) { + program.compilerOptions.outputPath = options["sdk-folder"]; + } const securityInfo = processAuth(program); config.addCredentials = !securityInfo && config.addCredentials === false diff --git a/packages/rlc-common/src/interfaces.ts b/packages/rlc-common/src/interfaces.ts index c59ebfe045..b1fdd901ff 100644 --- a/packages/rlc-common/src/interfaces.ts +++ b/packages/rlc-common/src/interfaces.ts @@ -89,6 +89,7 @@ export interface RLCOptions { productDocLink?: string; serviceInfo?: ServiceInfo; azureArm?: boolean; + "sdk-folder"?: string; } export interface ServiceInfo {