@backstage/integration
Version:
Helpers for managing integrations towards external systems
60 lines (57 loc) • 1.51 kB
JavaScript
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