UNPKG

@azure-tools/typespec-powershell

Version:

An experimental TypeSpec emitter for PowerShell codegen

48 lines (41 loc) 1.41 kB
import { Diagnostic, resolvePath } from "@typespec/compiler"; import { createTestHost, createTestWrapper, expectDiagnosticEmpty, } from "@typespec/compiler/testing"; import { PowershellTsTestLibrary } from "../src/testing/index.js"; export async function createPowershellTsTestHost() { return createTestHost({ libraries: [PowershellTsTestLibrary], }); } export async function createPowershellTsTestRunner() { const host = await createPowershellTsTestHost(); return createTestWrapper(host, { compilerOptions: { noEmit: false, emit: ["powershell-ts"], }, }); } export async function emitWithDiagnostics( code: string ): Promise<[Record<string, string>, readonly Diagnostic[]]> { const runner = await createPowershellTsTestRunner(); await runner.compileAndDiagnose(code, { outputDir: "tsp-output", }); const emitterOutputDir = "./tsp-output/powershell-ts"; const files = await runner.program.host.readDir(emitterOutputDir); const result: Record<string, string> = {}; for (const file of files) { result[file] = (await runner.program.host.readFile(resolvePath(emitterOutputDir, file))).text; } return [result, runner.program.diagnostics]; } export async function emit(code: string): Promise<Record<string, string>> { const [result, diagnostics] = await emitWithDiagnostics(code); expectDiagnosticEmpty(diagnostics); return result; }