diff --git a/common/changes/@typespec/compiler/fix-run-emitter-from-file_2023-04-13-15-41.json b/common/changes/@typespec/compiler/fix-run-emitter-from-file_2023-04-13-15-41.json new file mode 100644 index 00000000000..a515c794488 --- /dev/null +++ b/common/changes/@typespec/compiler/fix-run-emitter-from-file_2023-04-13-15-41.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@typespec/compiler", + "comment": "Fix `--emit` pointing to emitter js entrypoint resolve correct options", + "type": "none" + } + ], + "packageName": "@typespec/compiler" +} \ No newline at end of file diff --git a/packages/compiler/core/program.ts b/packages/compiler/core/program.ts index 4a5cb08d5e8..6a82f174ae2 100644 --- a/packages/compiler/core/program.ts +++ b/packages/compiler/core/program.ts @@ -692,7 +692,7 @@ export async function compile( const emitFunction = entrypoint.esmExports.$onEmit; const libDefinition: TypeSpecLibrary | undefined = entrypoint.esmExports.$lib; - const metadata = computeLibraryMetadata(module); + const metadata = computeLibraryMetadata(module, libDefinition); let { "emitter-output-dir": emitterOutputDir, ...emitterOptions } = emittersOptions[metadata.name ?? emitterNameOrPath] ?? {}; @@ -734,13 +734,18 @@ export async function compile( } } - function computeLibraryMetadata(module: ModuleResolutionResult): LibraryMetadata { + function computeLibraryMetadata( + module: ModuleResolutionResult, + libDefinition: TypeSpecLibrary | undefined + ): LibraryMetadata { if (module.type === "file") { - return {}; + return { + name: libDefinition?.name, + }; } const metadata: LibraryMetadata = { - name: module.manifest.name, + name: libDefinition?.name ?? module.manifest.name, }; if (module.manifest.homepage) { diff --git a/packages/compiler/test/e2e/scenarios/emitter-throw-error/node_modules/@typespec/my-emitter/package.json b/packages/compiler/test/e2e/scenarios/emitter-throw-error/node_modules/@typespec/my-emitter/package.json index 283d8bfa673..ebca397a0ba 100644 --- a/packages/compiler/test/e2e/scenarios/emitter-throw-error/node_modules/@typespec/my-emitter/package.json +++ b/packages/compiler/test/e2e/scenarios/emitter-throw-error/node_modules/@typespec/my-emitter/package.json @@ -1,5 +1,5 @@ { - "name": "@typespec/my-lib", + "name": "@typespec/my-emitter", "type": "module", "main": "emitter.js", "bugs": { diff --git a/packages/compiler/test/e2e/scenarios/scenarios.e2e.ts b/packages/compiler/test/e2e/scenarios/scenarios.e2e.ts index 3629a71e43c..c9d0c1d4df9 100644 --- a/packages/compiler/test/e2e/scenarios/scenarios.e2e.ts +++ b/packages/compiler/test/e2e/scenarios/scenarios.e2e.ts @@ -79,7 +79,7 @@ describe("compiler: entrypoints", () => { }), new RegExp( [ - `Emitter "@typespec/my-lib" failed!`, + `Emitter "@typespec/my-emitter" failed!`, `File issue at https://github.com/microsoft/my-emitter/issues`, ``, `Error: This is bad`,