From 22d8703a264849a996c1b8c31dd43431c86d8d61 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 4 Apr 2023 11:51:51 +0200 Subject: [PATCH] cli: resolve config paths upfront Signed-off-by: Patrik Oldsberg --- .../cli/src/commands/build/buildBackend.ts | 10 +----- packages/cli/src/commands/build/command.ts | 33 ++++++++++++------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/packages/cli/src/commands/build/buildBackend.ts b/packages/cli/src/commands/build/buildBackend.ts index f82567de3c..5d42aa18d4 100644 --- a/packages/cli/src/commands/build/buildBackend.ts +++ b/packages/cli/src/commands/build/buildBackend.ts @@ -18,7 +18,6 @@ import os from 'os'; import fs from 'fs-extra'; import { resolve as resolvePath } from 'path'; import tar, { CreateOptions } from 'tar'; -import { paths } from '../../lib/paths'; import { createDistWorkspace } from '../../lib/packager'; import { getEnvironmentParallelism } from '../../lib/parallel'; import { buildPackage, Output } from '../../lib/builder'; @@ -43,18 +42,11 @@ export async function buildBackend(options: BuildBackendOptions) { outputs: new Set([Output.cjs]), }); - const resolvedConfigPaths = configPaths?.map(p => { - let path = paths.resolveTarget(p); - if (!fs.pathExistsSync(path)) { - path = paths.resolveOwnRoot(p); - } - return path; - }); const tmpDir = await fs.mkdtemp(resolvePath(os.tmpdir(), 'backstage-bundle')); try { await createDistWorkspace([pkg.name], { targetDir: tmpDir, - configPaths: resolvedConfigPaths, + configPaths, buildDependencies: !skipBuildDependencies, buildExcludes: [pkg.name], parallelism: getEnvironmentParallelism(), diff --git a/packages/cli/src/commands/build/command.ts b/packages/cli/src/commands/build/command.ts index 7330d9891f..dcbf65331d 100644 --- a/packages/cli/src/commands/build/command.ts +++ b/packages/cli/src/commands/build/command.ts @@ -20,23 +20,32 @@ import { findRoleFromCommand, getRoleInfo } from '../../lib/role'; import { paths } from '../../lib/paths'; import { buildFrontend } from './buildFrontend'; import { buildBackend } from './buildBackend'; +import { isValidUrl } from '../../lib/urls'; export async function command(opts: OptionValues): Promise { const role = await findRoleFromCommand(opts); - if (role === 'frontend') { - return buildFrontend({ - targetDir: paths.targetDir, - configPaths: opts.config as string[], - writeStats: Boolean(opts.stats), - }); - } - if (role === 'backend') { - return buildBackend({ - targetDir: paths.targetDir, - configPaths: opts.config as string[], - skipBuildDependencies: Boolean(opts.skipBuildDependencies), + if (role === 'frontend' || role === 'backend') { + const configPaths = (opts.config as string[]).map(arg => { + if (isValidUrl(arg)) { + return arg; + } + return paths.resolveTarget(arg); }); + + if (role === 'frontend') { + return buildFrontend({ + targetDir: paths.targetDir, + configPaths, + writeStats: Boolean(opts.stats), + }); + } else { + return buildBackend({ + targetDir: paths.targetDir, + configPaths, + skipBuildDependencies: Boolean(opts.skipBuildDependencies), + }); + } } const roleInfo = getRoleInfo(role);