From 2ee6feed293c190f527be2038e99d05b769323a7 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 8 Feb 2025 15:53:49 +0100 Subject: [PATCH] cli/new: move package info and template globals to input resolution Signed-off-by: Patrik Oldsberg --- .../new/execution/executePortableTemplate.ts | 15 +++-------- .../collectPortableTemplateInput.ts | 26 ++++++++++++++----- .../resolvePackageParams.test.ts} | 11 ++------ .../resolvePackageParams.ts} | 15 ++++++----- packages/cli/src/lib/new/types.ts | 6 +++++ 5 files changed, 38 insertions(+), 35 deletions(-) rename packages/cli/src/lib/new/{execution/resolvePackageInfo.test.ts => preparation/resolvePackageParams.test.ts} (91%) rename packages/cli/src/lib/new/{execution/resolvePackageInfo.ts => preparation/resolvePackageParams.ts} (82%) diff --git a/packages/cli/src/lib/new/execution/executePortableTemplate.ts b/packages/cli/src/lib/new/execution/executePortableTemplate.ts index 196637df18..281fddc72e 100644 --- a/packages/cli/src/lib/new/execution/executePortableTemplate.ts +++ b/packages/cli/src/lib/new/execution/executePortableTemplate.ts @@ -26,7 +26,6 @@ import { executePluginPackageTemplate } from './executePluginPackageTemplate'; import { TemporaryDirectoryManager } from './TemporaryDirectoryManager'; import { PortableTemplateConfig, PortableTemplateInput } from '../types'; import { PortableTemplate } from '../types'; -import { resolvePackageInfo } from './resolvePackageInfo'; type ExecuteNewTemplateOptions = { config: PortableTemplateConfig; @@ -37,13 +36,11 @@ type ExecuteNewTemplateOptions = { export async function executePortableTemplate( options: ExecuteNewTemplateOptions, ) { - const { config, template, input } = options; + const { template, input } = options; const tmpDirManager = TemporaryDirectoryManager.create(); - const packageInfo = resolvePackageInfo(input); - - const targetDir = paths.resolveTargetRoot(packageInfo.packagePath); + const targetDir = paths.resolveTargetRoot(input.packageParams.packagePath); let modified = false; try { @@ -59,13 +56,7 @@ export async function executePortableTemplate( targetDir, templateDir: template.templatePath, templateValues: template.templateValues, - values: { - packageName: packageInfo.packageName, - privatePackage: input.globals.private, - packageVersion: input.globals.baseVersion, - license: input.globals.license, - ...input.params, - }, + values: input.params, }, ); diff --git a/packages/cli/src/lib/new/preparation/collectPortableTemplateInput.ts b/packages/cli/src/lib/new/preparation/collectPortableTemplateInput.ts index 4c0c2d04dc..798494c65f 100644 --- a/packages/cli/src/lib/new/preparation/collectPortableTemplateInput.ts +++ b/packages/cli/src/lib/new/preparation/collectPortableTemplateInput.ts @@ -27,6 +27,7 @@ import { PortableTemplateRole, } from '../types'; import { PortableTemplate } from '../types'; +import { resolvePackageParams } from './resolvePackageParams'; const RESERVED_PROMPT_NAMES = ['name', 'pluginId', 'moduleId', 'owner']; @@ -70,17 +71,28 @@ export async function collectPortableTemplateInput( ...promptAnswers, }; + const roleParams = { + role: template.role, + name: answers.name, + pluginId: answers.pluginId, + moduleId: answers.moduleId, + } as PortableTemplateInputRoleParams; + + const packageParams = resolvePackageParams(roleParams, config.globals); + return { - roleParams: { - role: template.role, - name: answers.name, - pluginId: answers.pluginId, - moduleId: answers.moduleId, - } as PortableTemplateInputRoleParams, + roleParams, + packageParams, builtInParams: { owner: answers.owner, } as PortableTemplateInputBuiltInParams, - params: answers, + params: { + ...answers, + packageName: packageParams.packageName, + privatePackage: config.globals.private, + packageVersion: config.globals.baseVersion, + license: config.globals.license, + }, globals: config.globals, }; } diff --git a/packages/cli/src/lib/new/execution/resolvePackageInfo.test.ts b/packages/cli/src/lib/new/preparation/resolvePackageParams.test.ts similarity index 91% rename from packages/cli/src/lib/new/execution/resolvePackageInfo.test.ts rename to packages/cli/src/lib/new/preparation/resolvePackageParams.test.ts index 30223171c4..9f1fea056b 100644 --- a/packages/cli/src/lib/new/execution/resolvePackageInfo.test.ts +++ b/packages/cli/src/lib/new/preparation/resolvePackageParams.test.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { resolvePackageInfo } from './resolvePackageInfo'; +import { resolvePackageParams } from './resolvePackageParams'; const baseGlobals = { baseVersion: '0.0.0', @@ -96,13 +96,6 @@ describe.each([ ], ] as const)('resolvePackageInfo', (roleParams, packageInfo) => { it(`should generate correct info with default config for ${roleParams.role}`, () => { - expect( - resolvePackageInfo({ - builtInParams: {}, - roleParams, - params: {}, - globals: baseGlobals, - }), - ).toEqual(packageInfo); + expect(resolvePackageParams(roleParams, baseGlobals)).toEqual(packageInfo); }); }); diff --git a/packages/cli/src/lib/new/execution/resolvePackageInfo.ts b/packages/cli/src/lib/new/preparation/resolvePackageParams.ts similarity index 82% rename from packages/cli/src/lib/new/execution/resolvePackageInfo.ts rename to packages/cli/src/lib/new/preparation/resolvePackageParams.ts index bb6aba272f..aebd67eb04 100644 --- a/packages/cli/src/lib/new/execution/resolvePackageInfo.ts +++ b/packages/cli/src/lib/new/preparation/resolvePackageParams.ts @@ -16,7 +16,7 @@ import { join as joinPath } from 'path'; import { - PortableTemplateInput, + PortableTemplateGlobals, PortableTemplateInputRoleParams, } from '../types'; @@ -25,14 +25,15 @@ export type PortableTemplatePackageInfo = { packagePath: string; }; -export function resolvePackageInfo( - input: PortableTemplateInput, +export function resolvePackageParams( + roleParams: PortableTemplateInputRoleParams, + globals: PortableTemplateGlobals, ): PortableTemplatePackageInfo { - const baseName = getBaseNameForRole(input.roleParams); - const isPlugin = input.roleParams.role.includes('plugin'); - const pluginInfix = isPlugin ? input.globals.pluginInfix : ''; + const baseName = getBaseNameForRole(roleParams); + const isPlugin = roleParams.role.includes('plugin'); + const pluginInfix = isPlugin ? globals.pluginInfix : ''; return { - packageName: `${input.globals.packagePrefix}${pluginInfix}${baseName}`, + packageName: `${globals.packagePrefix}${pluginInfix}${baseName}`, packagePath: joinPath(isPlugin ? 'plugins' : 'packages', baseName), }; } diff --git a/packages/cli/src/lib/new/types.ts b/packages/cli/src/lib/new/types.ts index 353caea1f6..82382b602d 100644 --- a/packages/cli/src/lib/new/types.ts +++ b/packages/cli/src/lib/new/types.ts @@ -105,9 +105,15 @@ export type PortableTemplateInputBuiltInParams = { owner?: string; }; +export type PortableTemplateInputPackageParams = { + packageName: string; + packagePath: string; +}; + export type PortableTemplateInput = { roleParams: PortableTemplateInputRoleParams; builtInParams: PortableTemplateInputBuiltInParams; + packageParams: PortableTemplateInputPackageParams; params: PortableTemplateParams; globals: PortableTemplateGlobals; };