Skip to content

Commit

Permalink
(feat): set ir-version override when running generators (#3212)
Browse files Browse the repository at this point in the history
* (fix): configure ir version overrides in generators.yml

* set ir version

* fixes compile

* fix compile
  • Loading branch information
dsinghvi committed Mar 19, 2024
1 parent 0452c95 commit 223c552
Show file tree
Hide file tree
Showing 11 changed files with 69 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ export interface GeneratorGroup {

export interface GeneratorInvocation {
name: string;
irVersionOverride: string | undefined;
version: string;
config: unknown;
outputMode: FernFiddle.remoteGen.OutputMode;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,8 @@ async function convertGenerator({
generator.output?.location === "local-file-system"
? resolve(dirname(absolutePathToGeneratorsConfiguration), generator.output.path)
: undefined,
language: getLanguageFromGeneratorName(generator.name)
language: getLanguageFromGeneratorName(generator.name),
irVersionOverride: generator["ir-version"] ?? undefined
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ export const GeneratorInvocationSchema = z.strictObject({
output: z.optional(GeneratorOutputSchema),
github: z.optional(GithubConfigurationSchema),
config: z.unknown(),
"ir-version": z.optional(z.string()),
// Feature flag used to enable better IR naming.
"smart-casing": z.optional(z.boolean()),
// Temporary way to unblock example serialization
Expand Down
5 changes: 4 additions & 1 deletion packages/cli/generation/ir-migrations/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
export { getMinimumVersionForGenerator } from "./getMinimumVersionForGenerator";
export { migrateIntermediateRepresentationForGenerator } from "./migrateIntermediateRepresentationForGenerator";
export {
migrateIntermediateRepresentationForGenerator,
migrateIntermediateRepresentationToVersionForGenerator
} from "./migrateIntermediateRepresentationForGenerator";
export { migrateIntermediateRepresentationThroughVersion } from "./migrateIntermediateRepresentationThroughVersion";
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,23 @@ export function migrateIntermediateRepresentationForGenerator({
});
return migrated.jsonify();
}

export function migrateIntermediateRepresentationToVersionForGenerator({
intermediateRepresentation,
context,
targetGenerator,
irVersion
}: {
intermediateRepresentation: IntermediateRepresentation;
context: TaskContext;
targetGenerator: GeneratorNameAndVersion;
irVersion: string;
}): Promise<unknown> {
const migrated = getIntermediateRepresentationMigrator().migrateThroughVersion({
version: irVersion,
intermediateRepresentation,
context,
targetGenerator
});
return migrated.jsonify();
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export async function runLocalGenerationForWorkspace({
workspaceTempDir,
keepDocker,
context: interactiveTaskContext,
irVersionOverride: undefined,
irVersionOverride: generatorInvocation.irVersionOverride,
outputVersionOverride: undefined,
writeSnippets: false,
writeUnitTests: false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@ import { FernToken } from "@fern-api/auth";
import { generatorsYml } from "@fern-api/configuration";
import { createFiddleService, getFiddleOrigin } from "@fern-api/core";
import { stringifyLargeObject } from "@fern-api/fs-utils";
import { migrateIntermediateRepresentationForGenerator } from "@fern-api/ir-migrations";
import {
migrateIntermediateRepresentationForGenerator,
migrateIntermediateRepresentationToVersionForGenerator
} from "@fern-api/ir-migrations";
import { IntermediateRepresentation } from "@fern-api/ir-sdk";
import { TaskContext } from "@fern-api/task-context";
import { APIWorkspace } from "@fern-api/workspace-loader";
Expand All @@ -26,7 +29,8 @@ export async function createAndStartJob({
context,
shouldLogS3Url,
token,
whitelabel
whitelabel,
irVersionOverride
}: {
workspace: APIWorkspace;
organization: string;
Expand All @@ -37,6 +41,7 @@ export async function createAndStartJob({
shouldLogS3Url: boolean;
token: FernToken;
whitelabel: FernFiddle.WhitelabelConfig | undefined;
irVersionOverride: string | undefined;
}): Promise<FernFiddle.remoteGen.CreateJobResponse> {
const job = await createJob({
workspace,
Expand All @@ -48,7 +53,7 @@ export async function createAndStartJob({
token,
whitelabel
});
await startJob({ intermediateRepresentation, job, context, generatorInvocation });
await startJob({ intermediateRepresentation, job, context, generatorInvocation, irVersionOverride });
return job;
}

Expand Down Expand Up @@ -188,21 +193,34 @@ async function startJob({
intermediateRepresentation,
generatorInvocation,
job,
context
context,
irVersionOverride
}: {
intermediateRepresentation: IntermediateRepresentation;
generatorInvocation: generatorsYml.GeneratorInvocation;
job: FernFiddle.remoteGen.CreateJobResponse;
context: TaskContext;
irVersionOverride: string | undefined;
}): Promise<void> {
const migratedIntermediateRepresentation = await migrateIntermediateRepresentationForGenerator({
intermediateRepresentation,
context,
targetGenerator: {
name: generatorInvocation.name,
version: generatorInvocation.version
}
});
const migratedIntermediateRepresentation =
irVersionOverride == null
? await migrateIntermediateRepresentationForGenerator({
intermediateRepresentation,
context,
targetGenerator: {
name: generatorInvocation.name,
version: generatorInvocation.version
}
})
: await migrateIntermediateRepresentationToVersionForGenerator({
intermediateRepresentation,
context,
irVersion: irVersionOverride,
targetGenerator: {
name: generatorInvocation.name,
version: generatorInvocation.version
}
});

const formData = new FormData();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ export async function runRemoteGenerationForAPIWorkspace({
audiences: generatorGroup.audiences,
shouldLogS3Url,
token,
whitelabel
whitelabel,
irVersionOverride: generatorInvocation.irVersionOverride
});
if (remoteTaskHandlerResponse != null && remoteTaskHandlerResponse.createdSnippets) {
snippetsProducedBy.push(generatorInvocation);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ export async function runRemoteGenerationForGenerator({
audiences,
shouldLogS3Url,
token,
whitelabel
whitelabel,
irVersionOverride
}: {
organization: string;
workspace: FernWorkspace;
Expand All @@ -28,6 +29,7 @@ export async function runRemoteGenerationForGenerator({
shouldLogS3Url: boolean;
token: FernToken;
whitelabel: FernFiddle.WhitelabelConfig | undefined;
irVersionOverride: string | undefined;
}): Promise<RemoteTaskHandler.Response | undefined> {
const intermediateRepresentation = await generateIntermediateRepresentation({
workspace,
Expand All @@ -46,7 +48,8 @@ export async function runRemoteGenerationForGenerator({
intermediateRepresentation,
shouldLogS3Url,
token,
whitelabel
whitelabel,
irVersionOverride
});
interactiveTaskContext.logger.debug(`Job ID: ${job.jobId}`);

Expand Down
3 changes: 2 additions & 1 deletion packages/seed/src/commands/test/runDockerForWorkspace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ export async function runDockerForWorkspace({
absolutePathToLocalOutput: absolutePathToOutput,
language,
smartCasing: false,
disableExamples: false
disableExamples: false,
irVersionOverride: irVersion
}
]
};
Expand Down
2 changes: 1 addition & 1 deletion seed/python-sdk/exhaustive/additional_init_exports
Submodule additional_init_exports updated from 68257a to 39ada5

0 comments on commit 223c552

Please sign in to comment.