import type { QuelleTyp } from 'bibliothek-types';
import type { Bezugsquelle } from './basis';
import { DirektLinkQuelle } from './direkt-link';
import { GithubQuelle } from './github';
import { WingetQuelle } from './winget';
import { SvnQuelle } from './svn';
import { GitBuildQuelle } from './git-build';

export type { Abgleichauftrag, Bezugsquelle, QuellenAbgleich } from './basis';

// Registry der automatisch abgleichbaren Bezugsquellen. Eine neue Quellenart
// hinzufügen = hier einen Eintrag ergänzen. `manuell` fehlt bewusst: dort wird
// die Datei von Hand hinterlegt, es gibt nichts abzugleichen.
const registry: Partial<Record<QuelleTyp, Bezugsquelle>> = {
  direkt: new DirektLinkQuelle(),
  github: new GithubQuelle(),
  winget: new WingetQuelle(),
  svn: new SvnQuelle(),
  git: new GitBuildQuelle(),
};

/** Liefert den Handler für einen Quell-Typ (oder undefined, falls unbekannt). */
export function bezugsquelleFuer(typ: QuelleTyp): Bezugsquelle | undefined {
  return registry[typ];
}
