scaffolder: port to new composability API

This commit is contained in:
Patrik Oldsberg
2021-02-01 23:54:51 +01:00
parent 6c07b5c6e5
commit 5c300a25a7
6 changed files with 63 additions and 12 deletions
+27 -2
View File
@@ -14,7 +14,32 @@
* limitations under the License.
*/
import React from 'react';
import { createDevApp } from '@backstage/dev-utils';
import { plugin } from '../src/plugin';
import { discoveryApiRef } from '@backstage/core';
import { CatalogClient } from '@backstage/catalog-client';
import { catalogApiRef } from '@backstage/plugin-catalog-react';
import { TemplateIndexPage, TemplatePage } from '../src/plugin';
import { ScaffolderApi, scaffolderApiRef } from '../src';
createDevApp().registerPlugin(plugin).render();
createDevApp()
.registerApi({
api: catalogApiRef,
deps: { discoveryApi: discoveryApiRef },
factory: ({ discoveryApi }) => new CatalogClient({ discoveryApi }),
})
.registerApi({
api: scaffolderApiRef,
deps: { discoveryApi: discoveryApiRef },
factory: ({ discoveryApi }) => new ScaffolderApi({ discoveryApi }),
})
.addPage({
path: '/create',
title: 'Create',
element: <TemplateIndexPage />,
})
.addPage({
path: '/create/:templateName',
element: <TemplatePage />,
})
.render();
+1
View File
@@ -54,6 +54,7 @@
"@backstage/cli": "^0.5.0",
"@backstage/dev-utils": "^0.1.8",
"@backstage/test-utils": "^0.1.6",
"@backstage/catalog-client": "^0.3.5",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^10.4.1",
"@testing-library/user-event": "^12.0.7",
+6 -1
View File
@@ -14,6 +14,11 @@
* limitations under the License.
*/
export { plugin } from './plugin';
export {
scaffolderPlugin,
scaffolderPlugin as plugin,
TemplateIndexPage,
TemplatePage,
} from './plugin';
export { ScaffolderApi, scaffolderApiRef } from './api';
export { rootRoute, templateRoute } from './routes';
+2 -2
View File
@@ -14,10 +14,10 @@
* limitations under the License.
*/
import { plugin } from './plugin';
import { scaffolderPlugin } from './plugin';
describe('scaffolder', () => {
it('should export plugin', () => {
expect(plugin).toBeDefined();
expect(scaffolderPlugin).toBeDefined();
});
});
+26 -5
View File
@@ -18,13 +18,14 @@ import {
createPlugin,
createApiFactory,
discoveryApiRef,
createRoutableExtension,
} from '@backstage/core';
import { ScaffolderPage } from './components/ScaffolderPage';
import { TemplatePage } from './components/TemplatePage';
import { ScaffolderPage as ScaffolderPageComponent } from './components/ScaffolderPage';
import { TemplatePage as TemplatePageComponent } from './components/TemplatePage';
import { rootRoute, templateRoute } from './routes';
import { scaffolderApiRef, ScaffolderApi } from './api';
export const plugin = createPlugin({
export const scaffolderPlugin = createPlugin({
id: 'scaffolder',
apis: [
createApiFactory({
@@ -34,7 +35,27 @@ export const plugin = createPlugin({
}),
],
register({ router }) {
router.addRoute(rootRoute, ScaffolderPage);
router.addRoute(templateRoute, TemplatePage);
router.addRoute(rootRoute, ScaffolderPageComponent);
router.addRoute(templateRoute, TemplatePageComponent);
},
routes: {
templateIndex: rootRoute,
template: templateRoute,
},
});
export const TemplateIndexPage = scaffolderPlugin.provide(
createRoutableExtension({
component: () =>
import('./components/ScaffolderPage').then(m => m.ScaffolderPage),
mountPoint: rootRoute,
}),
);
export const TemplatePage = scaffolderPlugin.provide(
createRoutableExtension({
component: () =>
import('./components/TemplatePage').then(m => m.TemplatePage),
mountPoint: templateRoute,
}),
);
+1 -2
View File
@@ -16,12 +16,11 @@
import { createRouteRef } from '@backstage/core';
export const rootRoute = createRouteRef({
icon: () => null,
path: '/create',
title: 'Create new entity',
});
export const templateRoute = createRouteRef({
icon: () => null,
path: '/create/:templateName',
title: 'Entity creation',
});