diff --git a/lib/manager/index.ts b/lib/manager/index.ts index c76274c7403cf5364091eb7aafe5cfec57284d57..fad24b290f55132e1a5c0eefe5e061f2528a2fc3 100644 --- a/lib/manager/index.ts +++ b/lib/manager/index.ts @@ -22,8 +22,27 @@ import { LANGUAGE_RUST, } from '../constants/languages'; import { loadModules } from '../util/modules'; +import { logger } from '../logger'; -const managers = loadModules<ManagerApi>(__dirname); +// istanbul ignore next +function validateManager(manager): boolean { + if (!manager.defaultConfig) { + logger.fatal(`manager is missing defaultConfig`); + return false; + } + if (!manager.updateDependency) { + logger.fatal(`manager is missing updateDependency`); + return false; + } + if (!manager.extractPackageFile && !manager.extractAllPackageFiles) { + logger.fatal( + `manager must support extractPackageFile or extractAllPackageFiles` + ); + } + return true; +} + +const managers = loadModules<ManagerApi>(__dirname, validateManager); const managerList = Object.keys(managers); diff --git a/lib/util/modules.ts b/lib/util/modules.ts index f61deada3527dd8f7defdbf77c284b5128aa05f0..5cb6440c9c362aef1028c0e0ed0e770a69a1e432 100644 --- a/lib/util/modules.ts +++ b/lib/util/modules.ts @@ -22,7 +22,7 @@ function relatePath(here: string, there: string): string { export function loadModules<T>( dirname: string, - validate?: (x: unknown) => x is T + validate?: (x: unknown) => boolean ): Record<string, T> { const result: Record<string, T> = {};