UNPKG

@backstage/integration

Version:

Helpers for managing integrations towards external systems

60 lines (57 loc) 1.51 kB
import { basicIntegrations } from '../helpers.esm.js'; import { readGerritIntegrationConfigs } from './config.esm.js'; import { parseGitilesUrlRef, buildGerritEditUrl } from './core.esm.js'; class GerritIntegration { constructor(integrationConfig) { this.integrationConfig = integrationConfig; } static factory = ({ config }) => { const configs = readGerritIntegrationConfigs( config.getOptionalConfigArray("integrations.gerrit") ?? [] ); return basicIntegrations( configs.map((c) => new GerritIntegration(c)), (i) => i.config.host ); }; get type() { return "gerrit"; } get title() { return this.integrationConfig.host; } get config() { return this.integrationConfig; } resolveUrl(options) { const { url, base, lineNumber } = options; let updated; if (url.startsWith("/")) { const { basePath } = parseGitilesUrlRef(this.config, base); return basePath + url; } if (url) { updated = new URL(url, base); } else { updated = new URL(base); } if (lineNumber) { updated.hash = lineNumber.toString(); } return updated.toString(); } resolveEditUrl(url) { if (this.config.disableEditUrl) { return url; } const parsed = parseGitilesUrlRef(this.config, url); return buildGerritEditUrl( this.config, parsed.project, parsed.ref, parsed.path ); } } export { GerritIntegration }; //# sourceMappingURL=GerritIntegration.esm.js.map