From 9b768a18a0fc7424d8165e614e7fe51e9c7e8439 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Thu, 13 Apr 2023 08:40:20 -0700 Subject: [PATCH 1/6] Fix running emitter from file --- packages/compiler/core/program.ts | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/compiler/core/program.ts b/packages/compiler/core/program.ts index 4a5cb08d5e8..c5b8d2471e6 100644 --- a/packages/compiler/core/program.ts +++ b/packages/compiler/core/program.ts @@ -11,9 +11,9 @@ import { createDiagnostic } from "./messages.js"; import { ModuleResolutionResult, NodePackage, - ResolveModuleHost, ResolvedModule, resolveModule, + ResolveModuleHost, } from "./module-resolver.js"; import { CompilerOptions } from "./options.js"; import { isImportStatement, parse, parseStandaloneTypeReference } from "./parser.js"; @@ -30,9 +30,9 @@ import { JsSourceFileNode, LiteralType, Namespace, - NoTarget, Node, NodeFlags, + NoTarget, ProjectionApplication, Projector, SourceFile, @@ -46,9 +46,9 @@ import { TypeSpecScriptNode, } from "./types.js"; import { - ExternalError, deepEquals, doIO, + ExternalError, findProjectRoot, isDefined, loadFile, @@ -692,11 +692,12 @@ 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] ?? {}; if (emitterOutputDir === undefined) { + console.log("herre", metadata, module); emitterOutputDir = [options.outputDir, metadata.name].filter(isDefined).join("/"); } if (libDefinition?.requireImports) { @@ -734,13 +735,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) { From 8450a97afe44d2425cd5a23afb7c4724d2d9f080 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Thu, 13 Apr 2023 08:41:27 -0700 Subject: [PATCH 2/6] Changelog --- .../fix-run-emitter-from-file_2023-04-13-15-41.json | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 common/changes/@typespec/compiler/fix-run-emitter-from-file_2023-04-13-15-41.json 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 From 8ab14e796e452b050da400870c76bce50faab02f Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Thu, 13 Apr 2023 08:42:35 -0700 Subject: [PATCH 3/6] Remove console --- packages/compiler/core/program.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/compiler/core/program.ts b/packages/compiler/core/program.ts index c5b8d2471e6..b85ca104c4a 100644 --- a/packages/compiler/core/program.ts +++ b/packages/compiler/core/program.ts @@ -697,7 +697,6 @@ export async function compile( let { "emitter-output-dir": emitterOutputDir, ...emitterOptions } = emittersOptions[metadata.name ?? emitterNameOrPath] ?? {}; if (emitterOutputDir === undefined) { - console.log("herre", metadata, module); emitterOutputDir = [options.outputDir, metadata.name].filter(isDefined).join("/"); } if (libDefinition?.requireImports) { From 0ed58c6a10086c97d702bdfb3a9fa0eae9a1f6f9 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Mon, 17 Apr 2023 08:18:14 -0700 Subject: [PATCH 4/6] Fix tests --- .../node_modules/@typespec/my-emitter/package.json | 2 +- packages/compiler/test/e2e/scenarios/scenarios.e2e.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) 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..f6d5f67ba97 100644 --- a/packages/compiler/test/e2e/scenarios/scenarios.e2e.ts +++ b/packages/compiler/test/e2e/scenarios/scenarios.e2e.ts @@ -1,7 +1,7 @@ import { rejects } from "assert"; import { dirname, resolve } from "path"; import { fileURLToPath } from "url"; -import { NodeHost, Program, compile, resolvePath } from "../../../core/index.js"; +import { compile, NodeHost, Program, resolvePath } from "../../../core/index.js"; import { CompilerOptions } from "../../../core/options.js"; import { expectDiagnosticEmpty, expectDiagnostics } from "../../../testing/expect.js"; @@ -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`, From 5521a1309748f745cd833eb1ec28e396f4c17010 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Mon, 17 Apr 2023 09:06:09 -0700 Subject: [PATCH 5/6] Format --- packages/compiler/test/e2e/scenarios/scenarios.e2e.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/compiler/test/e2e/scenarios/scenarios.e2e.ts b/packages/compiler/test/e2e/scenarios/scenarios.e2e.ts index f6d5f67ba97..c9d0c1d4df9 100644 --- a/packages/compiler/test/e2e/scenarios/scenarios.e2e.ts +++ b/packages/compiler/test/e2e/scenarios/scenarios.e2e.ts @@ -1,7 +1,7 @@ import { rejects } from "assert"; import { dirname, resolve } from "path"; import { fileURLToPath } from "url"; -import { compile, NodeHost, Program, resolvePath } from "../../../core/index.js"; +import { NodeHost, Program, compile, resolvePath } from "../../../core/index.js"; import { CompilerOptions } from "../../../core/options.js"; import { expectDiagnosticEmpty, expectDiagnostics } from "../../../testing/expect.js"; From a1067ce58603e0da171acaa487b677cb90e055cd Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Mon, 17 Apr 2023 10:04:38 -0700 Subject: [PATCH 6/6] format --- packages/compiler/core/program.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/compiler/core/program.ts b/packages/compiler/core/program.ts index b85ca104c4a..6a82f174ae2 100644 --- a/packages/compiler/core/program.ts +++ b/packages/compiler/core/program.ts @@ -11,9 +11,9 @@ import { createDiagnostic } from "./messages.js"; import { ModuleResolutionResult, NodePackage, + ResolveModuleHost, ResolvedModule, resolveModule, - ResolveModuleHost, } from "./module-resolver.js"; import { CompilerOptions } from "./options.js"; import { isImportStatement, parse, parseStandaloneTypeReference } from "./parser.js"; @@ -30,9 +30,9 @@ import { JsSourceFileNode, LiteralType, Namespace, + NoTarget, Node, NodeFlags, - NoTarget, ProjectionApplication, Projector, SourceFile, @@ -46,9 +46,9 @@ import { TypeSpecScriptNode, } from "./types.js"; import { + ExternalError, deepEquals, doIO, - ExternalError, findProjectRoot, isDefined, loadFile,