From 051b1f7d8cd123336ba395d3ad858ad95ab71308 Mon Sep 17 00:00:00 2001 From: Pileks Date: Thu, 20 Oct 2022 21:50:57 +0200 Subject: [PATCH 1/2] CLI - building interfaces uses a hidden, "empty" build strategy --- packages/cli/lang/en.json | 1 + packages/cli/lang/es.json | 1 + packages/cli/src/commands/build.ts | 24 +++++++++++++++---- .../strategies/EmptyStrategy.ts | 9 +++++++ .../lib/build-strategies/strategies/index.ts | 1 + 5 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 packages/cli/src/lib/build-strategies/strategies/EmptyStrategy.ts diff --git a/packages/cli/lang/en.json b/packages/cli/lang/en.json index da8cdfd9ec..2176ec1947 100644 --- a/packages/cli/lang/en.json +++ b/packages/cli/lang/en.json @@ -20,6 +20,7 @@ "commands_build_options_s": "Strategy to use for building the wrapper", "commands_build_options_s_strategy": "strategy", "commands_build_options_l": "Log file to save console output to", + "commands_build_info_interface_no_strategy": "Interface projects do not use build strategies. Building without a strategy...", "commands_infra_description": "Modular Infrastructure-As-Code Orchestrator", "commands_infra_actions_subtitle": "Infra allows you to execute the following commands:", "commands_infra_options_options": "options", diff --git a/packages/cli/lang/es.json b/packages/cli/lang/es.json index da8cdfd9ec..2176ec1947 100644 --- a/packages/cli/lang/es.json +++ b/packages/cli/lang/es.json @@ -20,6 +20,7 @@ "commands_build_options_s": "Strategy to use for building the wrapper", "commands_build_options_s_strategy": "strategy", "commands_build_options_l": "Log file to save console output to", + "commands_build_info_interface_no_strategy": "Interface projects do not use build strategies. Building without a strategy...", "commands_infra_description": "Modular Infrastructure-As-Code Orchestrator", "commands_infra_actions_subtitle": "Infra allows you to execute the following commands:", "commands_infra_options_options": "options", diff --git a/packages/cli/src/commands/build.ts b/packages/cli/src/commands/build.ts index 6e77995d05..a3c3efdfd5 100644 --- a/packages/cli/src/commands/build.ts +++ b/packages/cli/src/commands/build.ts @@ -13,6 +13,7 @@ import { parseClientConfigOption, parseManifestFileOption, parseLogFileOption, + Logger, } from "../lib"; import { CodeGenerator } from "../lib/codegen"; import { @@ -21,6 +22,7 @@ import { SupportedStrategies, DockerImageBuildStrategy, LocalBuildStrategy, + EmptyBuildStrategy, } from "../lib/build-strategies"; import path from "path"; @@ -115,11 +117,20 @@ async function validateManifestModules(polywrapManifest: PolywrapManifest) { } } -function createBuildStrategy( +async function createBuildStrategy( strategy: BuildCommandOptions["strategy"], outputDir: string, - project: PolywrapProject -): BuildStrategy { + project: PolywrapProject, + logger: Logger +): Promise { + const isInterfaceProject = + (await project.getManifest()).project.type === "interface"; + + if (isInterfaceProject) { + logger.info(intlMsg.commands_build_info_interface_no_strategy()); + return new EmptyBuildStrategy({ outputDir, project }); + } + switch (strategy) { case SupportedStrategies.LOCAL: return new LocalBuildStrategy({ outputDir, project }); @@ -159,7 +170,12 @@ async function run(options: BuildCommandOptions) { const polywrapManifest = await project.getManifest(); await validateManifestModules(polywrapManifest); - const buildStrategy = createBuildStrategy(strategy, outputDir, project); + const buildStrategy = await createBuildStrategy( + strategy, + outputDir, + project, + logger + ); const schemaComposer = new SchemaComposer({ project, diff --git a/packages/cli/src/lib/build-strategies/strategies/EmptyStrategy.ts b/packages/cli/src/lib/build-strategies/strategies/EmptyStrategy.ts new file mode 100644 index 0000000000..a8bfffc6a1 --- /dev/null +++ b/packages/cli/src/lib/build-strategies/strategies/EmptyStrategy.ts @@ -0,0 +1,9 @@ +import { BuildStrategy } from "../BuildStrategy"; + +export class EmptyBuildStrategy extends BuildStrategy { + getStrategyName(): string { + return "empty"; + } + + public async buildSources(): Promise {} +} diff --git a/packages/cli/src/lib/build-strategies/strategies/index.ts b/packages/cli/src/lib/build-strategies/strategies/index.ts index e9f431e872..fb6b412d57 100644 --- a/packages/cli/src/lib/build-strategies/strategies/index.ts +++ b/packages/cli/src/lib/build-strategies/strategies/index.ts @@ -1,3 +1,4 @@ export * from "./DockerVMStrategy"; export * from "./LocalStrategy"; export * from "./DockerImageStrategy"; +export * from "./EmptyStrategy"; From 88f121122d89b057f47d4fd13e97c2fc566b71fe Mon Sep 17 00:00:00 2001 From: Pileks Date: Thu, 20 Oct 2022 22:12:28 +0200 Subject: [PATCH 2/2] lint --- .../cli/src/lib/build-strategies/strategies/EmptyStrategy.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/lib/build-strategies/strategies/EmptyStrategy.ts b/packages/cli/src/lib/build-strategies/strategies/EmptyStrategy.ts index a8bfffc6a1..6a4ce41182 100644 --- a/packages/cli/src/lib/build-strategies/strategies/EmptyStrategy.ts +++ b/packages/cli/src/lib/build-strategies/strategies/EmptyStrategy.ts @@ -5,5 +5,7 @@ export class EmptyBuildStrategy extends BuildStrategy { return "empty"; } - public async buildSources(): Promise {} + public async buildSources(): Promise { + return; + } }