Updated scaffolder module template to add to backend

Signed-off-by: Andre Wanlin <awanlin@spotify.com>
This commit is contained in:
Andre Wanlin
2024-09-08 15:06:41 -05:00
parent 6dca65f95b
commit 8d231b60a6
3 changed files with 60 additions and 5 deletions
@@ -79,12 +79,12 @@ export const backendPlugin = createFactory<Options>({
},
);
});
await addToBackend(name, {
type: 'plugin',
});
}
await addToBackend(name, {
type: 'plugin',
});
if (options.owner) {
await addCodeownersEntry(`/plugins/${id}`, options.owner);
}
@@ -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'),
@@ -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<Options>({
},
});
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);
}