From c08a9ab25fcaccbd8a67fca7ade155caceac06a0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 7 Feb 2025 16:10:49 +0100 Subject: [PATCH] cli/new: rename types to use PortableTemplate prefix Signed-off-by: Patrik Oldsberg --- .../collection/collectTemplateParams.test.ts | 4 ++-- .../lib/new/collection/collectTemplateParams.ts | 8 ++++---- packages/cli/src/lib/new/collection/prompts.ts | 8 +++++--- .../src/lib/new/execution/executeTemplate.ts | 8 ++++---- .../cli/src/lib/new/execution/utils.test.ts | 17 ++++++++++------- packages/cli/src/lib/new/execution/utils.ts | 4 ++-- .../cli/src/lib/new/preparation/loadConfig.ts | 4 ++-- .../cli/src/lib/new/preparation/loadTemplate.ts | 6 +++--- .../selectTemplateInteractively.test.ts | 4 ++-- .../preparation/selectTemplateInteractively.ts | 6 +++--- packages/cli/src/lib/new/types.ts | 16 ++++++++-------- 11 files changed, 45 insertions(+), 40 deletions(-) diff --git a/packages/cli/src/lib/new/collection/collectTemplateParams.test.ts b/packages/cli/src/lib/new/collection/collectTemplateParams.test.ts index af1e6f4181..dfb54f846a 100644 --- a/packages/cli/src/lib/new/collection/collectTemplateParams.test.ts +++ b/packages/cli/src/lib/new/collection/collectTemplateParams.test.ts @@ -15,7 +15,7 @@ */ import inquirer from 'inquirer'; -import { NewConfig } from '../types'; +import { PortableTemplateConfig } from '../types'; import { collectTemplateParams } from './collectTemplateParams'; describe('collectTemplateParams', () => { @@ -24,7 +24,7 @@ describe('collectTemplateParams', () => { isUsingDefaultTemplates: false, templatePointers: [], globals: {}, - } satisfies NewConfig, + } satisfies PortableTemplateConfig, template: { id: 'test', templatePath: '/test', diff --git a/packages/cli/src/lib/new/collection/collectTemplateParams.ts b/packages/cli/src/lib/new/collection/collectTemplateParams.ts index 0c2f0e5d2b..a6e603a1cd 100644 --- a/packages/cli/src/lib/new/collection/collectTemplateParams.ts +++ b/packages/cli/src/lib/new/collection/collectTemplateParams.ts @@ -17,13 +17,13 @@ import inquirer from 'inquirer'; import { getCodeownersFilePath } from '../../codeowners'; import { paths } from '../../paths'; -import { NewConfig } from '../types'; +import { PortableTemplateConfig } from '../types'; import { customPrompt, getPromptsForRole, ownerPrompt } from './prompts'; -import { NewTemplate } from '../types'; +import { PortableTemplate } from '../types'; type CollectTemplateParamsOptions = { - config: NewConfig; - template: NewTemplate; + config: PortableTemplateConfig; + template: PortableTemplate; prefilledParams: Record; }; diff --git a/packages/cli/src/lib/new/collection/prompts.ts b/packages/cli/src/lib/new/collection/prompts.ts index d2ac8c2f08..12c9965ea4 100644 --- a/packages/cli/src/lib/new/collection/prompts.ts +++ b/packages/cli/src/lib/new/collection/prompts.ts @@ -15,7 +15,7 @@ */ import { DistinctQuestion } from 'inquirer'; -import { NewTemplatePrompt, TemplateRole } from '../types'; +import { PortableTemplatePrompt, PortableTemplateRole } from '../types'; import { parseOwnerIds } from '../../codeowners'; export function namePrompt(): DistinctQuestion { @@ -66,7 +66,9 @@ export function moduleIdIdPrompt(): DistinctQuestion { }; } -export function getPromptsForRole(role: TemplateRole): Array { +export function getPromptsForRole( + role: PortableTemplateRole, +): Array { switch (role) { case 'web-library': case 'node-library': @@ -106,7 +108,7 @@ export function ownerPrompt(): DistinctQuestion { }; } -export function customPrompt(prompt: NewTemplatePrompt): DistinctQuestion { +export function customPrompt(prompt: PortableTemplatePrompt): DistinctQuestion { return { type: 'input', name: prompt.id, diff --git a/packages/cli/src/lib/new/execution/executeTemplate.ts b/packages/cli/src/lib/new/execution/executeTemplate.ts index 1aba91444e..26f7dd7e09 100644 --- a/packages/cli/src/lib/new/execution/executeTemplate.ts +++ b/packages/cli/src/lib/new/execution/executeTemplate.ts @@ -27,12 +27,12 @@ import { createDirName, resolvePackageName } from './utils'; import { runAdditionalActions } from './additionalActions'; import { executePluginPackageTemplate } from './executePluginPackageTemplate'; import { TemporaryDirectoryManager } from './TemporaryDirectoryManager'; -import { NewConfig } from '../types'; -import { NewTemplate } from '../types'; +import { PortableTemplateConfig } from '../types'; +import { PortableTemplate } from '../types'; type ExecuteNewTemplateOptions = { - config: NewConfig; - template: NewTemplate; + config: PortableTemplateConfig; + template: PortableTemplate; params: Record; }; diff --git a/packages/cli/src/lib/new/execution/utils.test.ts b/packages/cli/src/lib/new/execution/utils.test.ts index 8147e9ebbb..9528186447 100644 --- a/packages/cli/src/lib/new/execution/utils.test.ts +++ b/packages/cli/src/lib/new/execution/utils.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ import { resolvePackageName, createDirName, Options } from './utils'; -import { NewTemplate } from '../types'; +import { PortableTemplate } from '../types'; describe('resolvePackageName', () => { it('should generate correct name without scope', () => { @@ -82,7 +82,7 @@ describe('createDirName', () => { it('should return name in the backend-module format if backendModulePrefix is set to true', () => { expect( createDirName( - { backendModulePrefix: true } as NewTemplate, + { backendModulePrefix: true } as PortableTemplate, { id: 'foo', moduleId: 'bar', @@ -94,7 +94,7 @@ describe('createDirName', () => { it('should throw an error if backendModulePrefix is configured as true but is missing moduleId', () => { expect(() => createDirName( - { backendModulePrefix: true } as NewTemplate, + { backendModulePrefix: true } as PortableTemplate, { id: 'foo', moduleId: '', @@ -105,13 +105,16 @@ describe('createDirName', () => { it('should append the suffix value if one is provided', () => { expect( - createDirName({ suffix: 'foo' } as NewTemplate, { id: 'bar' } as Options), + createDirName( + { suffix: 'foo' } as PortableTemplate, + { id: 'bar' } as Options, + ), ).toEqual('bar-foo'); }); it('should return id if neither backendModulePrefix nor suffix is specified', () => { - expect(createDirName({} as NewTemplate, { id: 'foo' } as Options)).toEqual( - 'foo', - ); + expect( + createDirName({} as PortableTemplate, { id: 'foo' } as Options), + ).toEqual('foo'); }); }); diff --git a/packages/cli/src/lib/new/execution/utils.ts b/packages/cli/src/lib/new/execution/utils.ts index 1fe693d828..4a9a1f3a53 100644 --- a/packages/cli/src/lib/new/execution/utils.ts +++ b/packages/cli/src/lib/new/execution/utils.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { NewTemplate } from '../types'; +import { PortableTemplate } from '../types'; export const resolvePackageName = (options: { baseName: string; @@ -38,7 +38,7 @@ export const resolvePackageName = (options: { return plugin ? `backstage-plugin-${baseName}` : baseName; }; -export function createDirName(template: NewTemplate, options: Options) { +export function createDirName(template: PortableTemplate, options: Options) { if (!options.id) { throw new Error(`id prompt is mandatory for all cli templates`); } diff --git a/packages/cli/src/lib/new/preparation/loadConfig.ts b/packages/cli/src/lib/new/preparation/loadConfig.ts index 489371d802..88ec2b45de 100644 --- a/packages/cli/src/lib/new/preparation/loadConfig.ts +++ b/packages/cli/src/lib/new/preparation/loadConfig.ts @@ -17,7 +17,7 @@ import fs from 'fs-extra'; import { paths } from '../../paths'; import { defaultTemplates } from '../defaultTemplates'; -import { NewConfig } from '../types'; +import { PortableTemplateConfig } from '../types'; import { z } from 'zod'; import { fromZodError } from 'zod-validation-error'; import { ForwardedError } from '@backstage/errors'; @@ -60,7 +60,7 @@ type LoadConfigOptions = { export async function loadConfig( options: LoadConfigOptions = {}, -): Promise { +): Promise { const pkgPath = options.packagePath ?? paths.resolveTargetRoot('package.json'); const pkgJson = await fs.readJson(pkgPath); diff --git a/packages/cli/src/lib/new/preparation/loadTemplate.ts b/packages/cli/src/lib/new/preparation/loadTemplate.ts index 9a0f50fc07..d465b74666 100644 --- a/packages/cli/src/lib/new/preparation/loadTemplate.ts +++ b/packages/cli/src/lib/new/preparation/loadTemplate.ts @@ -20,8 +20,8 @@ import { resolve as resolvePath } from 'path'; import { dirname } from 'node:path'; import { parse as parseYaml } from 'yaml'; import { paths } from '../../paths'; -import { NewTemplatePointer, TEMPLATE_ROLES } from '../types'; -import { NewTemplate } from '../types'; +import { PortableTemplatePointer, TEMPLATE_ROLES } from '../types'; +import { PortableTemplate } from '../types'; import { ForwardedError } from '@backstage/errors'; import { fromZodError } from 'zod-validation-error'; @@ -48,7 +48,7 @@ const templateDefinitionSchema = z export async function loadTemplate({ id, target, -}: NewTemplatePointer): Promise { +}: PortableTemplatePointer): Promise { if (target.match(/https?:\/\//)) { throw new Error('Remote templates are not supported yet'); } diff --git a/packages/cli/src/lib/new/preparation/selectTemplateInteractively.test.ts b/packages/cli/src/lib/new/preparation/selectTemplateInteractively.test.ts index 5346274d56..7226df4558 100644 --- a/packages/cli/src/lib/new/preparation/selectTemplateInteractively.test.ts +++ b/packages/cli/src/lib/new/preparation/selectTemplateInteractively.test.ts @@ -14,13 +14,13 @@ * limitations under the License. */ -import { NewConfig } from '../types'; +import { PortableTemplateConfig } from '../types'; import inquirer from 'inquirer'; import { withLogCollector } from '@backstage/test-utils'; import { selectTemplateInteractively } from './selectTemplateInteractively'; describe('selectTemplateInteractively', () => { - const mockConfig: NewConfig = { + const mockConfig: PortableTemplateConfig = { isUsingDefaultTemplates: false, templatePointers: [ { id: 'template1', target: 'path/to/template1' }, diff --git a/packages/cli/src/lib/new/preparation/selectTemplateInteractively.ts b/packages/cli/src/lib/new/preparation/selectTemplateInteractively.ts index 83630a4ff3..89c788e905 100644 --- a/packages/cli/src/lib/new/preparation/selectTemplateInteractively.ts +++ b/packages/cli/src/lib/new/preparation/selectTemplateInteractively.ts @@ -15,12 +15,12 @@ */ import inquirer from 'inquirer'; -import { NewConfig, NewTemplatePointer } from '../types'; +import { PortableTemplateConfig, PortableTemplatePointer } from '../types'; export async function selectTemplateInteractively( - config: NewConfig, + config: PortableTemplateConfig, preselectedTemplateId?: string, -): Promise { +): Promise { let selectedId = preselectedTemplateId; if (config.isUsingDefaultTemplates && selectedId === 'plugin') { diff --git a/packages/cli/src/lib/new/types.ts b/packages/cli/src/lib/new/types.ts index ed3a2a6e7a..2200df5ccb 100644 --- a/packages/cli/src/lib/new/types.ts +++ b/packages/cli/src/lib/new/types.ts @@ -14,11 +14,11 @@ * limitations under the License. */ -export type NewConfig = { +export type PortableTemplateConfig = { /** * The pointers to templates that can be used. */ - templatePointers: NewTemplatePointer[]; + templatePointers: PortableTemplatePointer[]; /** * Whether the default set of templates are being used or not. @@ -33,12 +33,12 @@ export type NewConfig = { }; }; -export type NewTemplatePointer = { +export type PortableTemplatePointer = { id: string; target: string; }; -export type NewTemplatePrompt = { +export type PortableTemplatePrompt = { id: string; prompt: string; validate?: string; @@ -58,14 +58,14 @@ export const TEMPLATE_ROLES = [ 'backend-plugin-module', ] as const; -export type TemplateRole = (typeof TEMPLATE_ROLES)[number]; +export type PortableTemplateRole = (typeof TEMPLATE_ROLES)[number]; -export interface NewTemplate { +export interface PortableTemplate { id: string; description?: string; templatePath: string; targetPath: string; - role: TemplateRole; - prompts?: NewTemplatePrompt[]; + role: PortableTemplateRole; + prompts?: PortableTemplatePrompt[]; additionalActions?: string[]; }