From 8d231b60a684116be532f6a28856dd3aa09a8cdd Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Sun, 8 Sep 2024 15:06:41 -0500 Subject: [PATCH 1/2] Updated scaffolder module template to add to backend Signed-off-by: Andre Wanlin --- .../src/lib/new/factories/backendPlugin.ts | 8 ++-- .../new/factories/scaffolderModule.test.ts | 37 +++++++++++++++++++ .../src/lib/new/factories/scaffolderModule.ts | 20 +++++++++- 3 files changed, 60 insertions(+), 5 deletions(-) diff --git a/packages/cli/src/lib/new/factories/backendPlugin.ts b/packages/cli/src/lib/new/factories/backendPlugin.ts index 9129a66075..050d05f0df 100644 --- a/packages/cli/src/lib/new/factories/backendPlugin.ts +++ b/packages/cli/src/lib/new/factories/backendPlugin.ts @@ -79,12 +79,12 @@ export const backendPlugin = createFactory({ }, ); }); - - await addToBackend(name, { - type: 'plugin', - }); } + await addToBackend(name, { + type: 'plugin', + }); + if (options.owner) { await addCodeownersEntry(`/plugins/${id}`, options.owner); } diff --git a/packages/cli/src/lib/new/factories/scaffolderModule.test.ts b/packages/cli/src/lib/new/factories/scaffolderModule.test.ts index c4b9d78fc1..60dade618a 100644 --- a/packages/cli/src/lib/new/factories/scaffolderModule.test.ts +++ b/packages/cli/src/lib/new/factories/scaffolderModule.test.ts @@ -26,6 +26,14 @@ import { import { scaffolderModule } from './scaffolderModule'; import { createMockDirectory } from '@backstage/backend-test-utils'; +const backendIndexTsContent = ` +import { createBackend } from '@backstage/backend-defaults'; + +const backend = createBackend(); + +backend.start(); +`; + describe('scaffolderModule factory', () => { const mockDir = createMockDirectory(); @@ -41,6 +49,14 @@ describe('scaffolderModule factory', () => { it('should create a scaffolder backend module package', async () => { mockDir.setContent({ + packages: { + backend: { + 'package.json': JSON.stringify({}), + src: { + 'index.ts': backendIndexTsContent, + }, + }, + }, plugins: {}, }); @@ -84,8 +100,29 @@ describe('scaffolderModule factory', () => { 'copying module.ts', 'Installing:', `moving plugins${sep}scaffolder-backend-module-test`, + 'backend adding dependency', + 'backend adding module', ]); + await expect( + fs.readFile(mockDir.resolve('packages/backend/src/index.ts'), 'utf8'), + ).resolves.toBe(` +import { createBackend } from '@backstage/backend-defaults'; + +const backend = createBackend(); + +backend.add(import('backstage-plugin-scaffolder-backend-module-test')); +backend.start(); +`); + + await expect( + fs.readJson(mockDir.resolve('packages/backend/package.json')), + ).resolves.toEqual({ + dependencies: { + 'backstage-plugin-scaffolder-backend-module-test': '^1.0.0', + }, + }); + await expect( fs.readJson( mockDir.resolve('plugins/scaffolder-backend-module-test/package.json'), diff --git a/packages/cli/src/lib/new/factories/scaffolderModule.ts b/packages/cli/src/lib/new/factories/scaffolderModule.ts index 4c279a49d4..6cea7a36ff 100644 --- a/packages/cli/src/lib/new/factories/scaffolderModule.ts +++ b/packages/cli/src/lib/new/factories/scaffolderModule.ts @@ -14,11 +14,12 @@ * limitations under the License. */ +import fs from 'fs-extra'; import chalk from 'chalk'; import { paths } from '../../paths'; import { addCodeownersEntry, getCodeownersFilePath } from '../../codeowners'; import { CreateContext, createFactory } from '../types'; -import { Task } from '../../tasks'; +import { addPackageDependency, addToBackend, Task } from '../../tasks'; import { ownerPrompt } from './common/prompts'; import { executePluginPackageTemplate } from './common/tasks'; import { resolvePackageName } from './common/util'; @@ -82,6 +83,23 @@ export const scaffolderModule = createFactory({ }, }); + if (await fs.pathExists(paths.resolveTargetRoot('packages/backend'))) { + await Task.forItem('backend', 'adding dependency', async () => { + await addPackageDependency( + paths.resolveTargetRoot('packages/backend/package.json'), + { + dependencies: { + [name]: `^${ctx.defaultVersion}`, + }, + }, + ); + }); + } + + await addToBackend(name, { + type: 'module', + }); + if (options.owner) { await addCodeownersEntry(`/plugins/${slug}`, options.owner); } From 8069f4a1a966463b468e91a1b8246cfd932c5855 Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Sun, 8 Sep 2024 15:09:40 -0500 Subject: [PATCH 2/2] Added changeset Signed-off-by: Andre Wanlin --- .changeset/forty-eyes-return.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/forty-eyes-return.md diff --git a/.changeset/forty-eyes-return.md b/.changeset/forty-eyes-return.md new file mode 100644 index 0000000000..b3d8355702 --- /dev/null +++ b/.changeset/forty-eyes-return.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Update Scaffolder module template to add itself to the backend