diff --git a/packages/backend/package.json b/packages/backend/package.json index 7a0ad95e67..516208bf3b 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -19,6 +19,8 @@ "dependencies": { "@backstage/backend-common": "^0.1.1-alpha.9", "@backstage/catalog-model": "^0.1.1-alpha.9", + "@backstage/config": "^0.1.1-alpha.9", + "@backstage/config-loader": "^0.1.1-alpha.9", "@backstage/plugin-auth-backend": "^0.1.1-alpha.9", "@backstage/plugin-catalog-backend": "^0.1.1-alpha.9", "@backstage/plugin-identity-backend": "^0.1.1-alpha.9", diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 0a9d852222..df0d08fa7d 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -27,6 +27,8 @@ import { getRootLogger, useHotMemoize, } from '@backstage/backend-common'; +import { ConfigReader, AppConfig } from '@backstage/config'; +import { loadConfig } from '@backstage/config-loader'; import knex from 'knex'; import auth from './plugins/auth'; import catalog from './plugins/catalog'; @@ -35,20 +37,26 @@ import scaffolder from './plugins/scaffolder'; import sentry from './plugins/sentry'; import { PluginEnvironment } from './types'; -function createEnv(plugin: string): PluginEnvironment { - const logger = getRootLogger().child({ type: 'plugin', plugin }); - const database = knex({ - client: 'sqlite3', - connection: ':memory:', - useNullAsDefault: true, - }); - database.client.pool.on('createSuccess', (_eventId: any, resource: any) => { - resource.run('PRAGMA foreign_keys = ON', () => {}); - }); - return { logger, database }; +function makeCreateEnv(loadedConfigs: AppConfig[]) { + const config = ConfigReader.fromConfigs(loadedConfigs); + + return (plugin: string): PluginEnvironment => { + const logger = getRootLogger().child({ type: 'plugin', plugin }); + const database = knex({ + client: 'sqlite3', + connection: ':memory:', + useNullAsDefault: true, + }); + database.client.pool.on('createSuccess', (_eventId: any, resource: any) => { + resource.run('PRAGMA foreign_keys = ON', () => {}); + }); + return { logger, database, config }; + }; } async function main() { + const createEnv = makeCreateEnv(await loadConfig()); + const catalogEnv = useHotMemoize(module, () => createEnv('catalog')); const scaffolderEnv = useHotMemoize(module, () => createEnv('scaffolder')); const authEnv = useHotMemoize(module, () => createEnv('auth')); diff --git a/packages/backend/src/types.ts b/packages/backend/src/types.ts index ce681a6bdd..f7df3d05c6 100644 --- a/packages/backend/src/types.ts +++ b/packages/backend/src/types.ts @@ -16,8 +16,10 @@ import Knex from 'knex'; import { Logger } from 'winston'; +import { Config } from '@backstage/config'; export type PluginEnvironment = { logger: Logger; database: Knex; + config: Config; };