@autorest/openapi-to-typespec
Version:
Autorest plugin to scaffold a Typespec definition from an OpenAPI document
67 lines (53 loc) • 1.87 kB
text/typescript
import { CodeModel } from "@autorest/codemodel";
import { Session } from "@autorest/extension-base";
import { getSession } from "./autorest-session";
import { TypespecOptions } from "./interfaces";
export let options: TypespecOptions;
export function getOptions(): TypespecOptions {
if (!options) {
updateOptions();
}
return options;
}
export function updateOptions() {
const session = getSession();
options = {
isAzureSpec: getIsAzureSpec(session),
namespace: getNamespace(session),
guessResourceKey: getGuessResourceKey(session),
isArm: getIsArm(session),
isFullCompatible: getIsFullCompatible(session),
isTest: getIsTest(session),
};
}
export function getGuessResourceKey(session: Session<CodeModel>) {
const shouldGuess = session.configuration["guessResourceKey"] ?? false;
return shouldGuess !== false;
}
export function getIsArm(session: Session<CodeModel>) {
if (session.configuration["isArm"] !== undefined) {
// If isArm is explicitly set, use it.
return Boolean(session.configuration["isArm"]);
}
const inputs = session.configuration["inputFileUris"] as string[];
for (const input of inputs) {
if (input.includes("resource-manager")) {
return true;
}
}
// by default is isArm is not explicitly set, we assume it is DataPlane.
return false;
}
export function getIsAzureSpec(session: Session<CodeModel>) {
return session.configuration["isAzureSpec"] !== false;
}
export function getNamespace(session: Session<CodeModel>) {
return session.configuration["namespace"];
}
export function getIsFullCompatible(session: Session<CodeModel>) {
const isFullCompatible = session.configuration["isFullCompatible"] ?? false;
return isFullCompatible !== false;
}
export function getIsTest(session: Session<CodeModel>) {
return session.configuration["isTest"] === true;
}