|
1 | | -import { |
2 | | - CacheManager, |
3 | | - createServiceBuilder, |
4 | | - DatabaseManager, |
5 | | - getRootLogger, |
6 | | - loadBackendConfig, |
7 | | - notFoundHandler, |
8 | | - ServerTokenManager, |
9 | | - SingleHostDiscovery, |
10 | | - useHotMemoize, |
11 | | -} from '@backstage/backend-common'; |
12 | | -import { UrlReaders } from '@backstage/backend-defaults/urlReader'; |
13 | | -import { TaskScheduler } from '@backstage/backend-tasks'; |
14 | | -import { Config } from '@backstage/config'; |
15 | | -import { DefaultIdentityClient } from '@backstage/plugin-auth-node'; |
16 | | -import { ServerPermissionClient } from '@backstage/plugin-permission-node'; |
17 | | -import Router from 'express-promise-router'; |
18 | | -import auth from './plugins/auth'; |
19 | | -import catalog from './plugins/catalog'; |
20 | | -import gitlab from './plugins/gitlab'; |
21 | | -import proxy from './plugins/proxy'; |
22 | | -import scaffolder from './plugins/scaffolder'; |
23 | | -import search from './plugins/search'; |
24 | | -import techdocs from './plugins/techdocs'; |
25 | | -import { PluginEnvironment } from './types'; |
26 | | - |
27 | | -function makeCreateEnv(config: Config) { |
28 | | - const root = getRootLogger(); |
29 | | - const reader = UrlReaders.default({ logger: root, config }); |
30 | | - const discovery = SingleHostDiscovery.fromConfig(config); |
31 | | - const cacheManager = CacheManager.fromConfig(config); |
32 | | - const databaseManager = DatabaseManager.fromConfig(config, { logger: root }); |
33 | | - const tokenManager = ServerTokenManager.noop(); |
34 | | - const taskScheduler = TaskScheduler.fromConfig(config); |
35 | | - |
36 | | - const identity = DefaultIdentityClient.create({ |
37 | | - discovery, |
38 | | - }); |
39 | | - const permissions = ServerPermissionClient.fromConfig(config, { |
40 | | - discovery, |
41 | | - tokenManager, |
42 | | - }); |
43 | | - |
44 | | - root.info(`Created UrlReader ${reader}`); |
45 | | - |
46 | | - return (plugin: string): PluginEnvironment => { |
47 | | - const logger = root.child({ type: 'plugin', plugin }); |
48 | | - const database = databaseManager.forPlugin(plugin); |
49 | | - const cache = cacheManager.forPlugin(plugin); |
50 | | - const scheduler = taskScheduler.forPlugin(plugin); |
51 | | - return { |
52 | | - logger, |
53 | | - database, |
54 | | - cache, |
55 | | - config, |
56 | | - reader, |
57 | | - discovery, |
58 | | - tokenManager, |
59 | | - scheduler, |
60 | | - permissions, |
61 | | - identity, |
62 | | - }; |
63 | | - }; |
64 | | -} |
65 | | - |
66 | | -async function main() { |
67 | | - const config = await loadBackendConfig({ |
68 | | - argv: process.argv, |
69 | | - logger: getRootLogger(), |
70 | | - }); |
71 | | - const createEnv = makeCreateEnv(config); |
72 | | - |
73 | | - const catalogEnv = useHotMemoize(module, () => createEnv('catalog')); |
74 | | - const scaffolderEnv = useHotMemoize(module, () => createEnv('scaffolder')); |
75 | | - const authEnv = useHotMemoize(module, () => createEnv('auth')); |
76 | | - const proxyEnv = useHotMemoize(module, () => createEnv('proxy')); |
77 | | - const techdocsEnv = useHotMemoize(module, () => createEnv('techdocs')); |
78 | | - const searchEnv = useHotMemoize(module, () => createEnv('search')); |
79 | | - const gitlabEnv = useHotMemoize(module, () => createEnv('gitlab')); |
80 | | - |
81 | | - const apiRouter = Router(); |
82 | | - apiRouter.use('/catalog', await catalog(catalogEnv)); |
83 | | - apiRouter.use('/scaffolder', await scaffolder(scaffolderEnv)); |
84 | | - apiRouter.use('/auth', await auth(authEnv)); |
85 | | - apiRouter.use('/techdocs', await techdocs(techdocsEnv)); |
86 | | - apiRouter.use('/proxy', await proxy(proxyEnv)); |
87 | | - apiRouter.use('/search', await search(searchEnv)); |
88 | | - apiRouter.use('/gitlab', await gitlab(gitlabEnv)); |
89 | | - |
90 | | - // Add backends ABOVE this line; this 404 handler is the catch-all fallback |
91 | | - apiRouter.use(notFoundHandler()); |
92 | | - |
93 | | - const service = createServiceBuilder(module) |
94 | | - .loadConfig(config) |
95 | | - .addRouter('/api', apiRouter); |
96 | | - |
97 | | - await service.start().catch(err => { |
98 | | - console.log(err); |
99 | | - process.exit(1); |
100 | | - }); |
101 | | -} |
102 | | - |
103 | | -module.hot?.accept(); |
104 | | -main().catch(error => { |
105 | | - console.error('Backend failed to start up', error); |
106 | | - process.exit(1); |
107 | | -}); |
| 1 | +import { legacyPlugin } from '@backstage/backend-common'; |
| 2 | +import { createBackend } from '@backstage/backend-defaults'; |
| 3 | + |
| 4 | +const backend = createBackend(); |
| 5 | +backend.add(legacyPlugin('auth', import('./plugins/auth'))); |
| 6 | +backend.add(legacyPlugin('catalog', import('./plugins/catalog'))); |
| 7 | +backend.add(legacyPlugin('gitlab', import('./plugins/gitlab'))); |
| 8 | +backend.add(legacyPlugin('proxy', import('./plugins/proxy'))); |
| 9 | +backend.add(legacyPlugin('scaffolder', import('./plugins/scaffolder'))); |
| 10 | +backend.add(legacyPlugin('search', import('./plugins/search'))); |
| 11 | +backend.add(legacyPlugin('techdocs', import('./plugins/techdocs'))); |
| 12 | + |
| 13 | +backend.start(); |
0 commit comments