renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
80 lines • 3.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.autodiscoverRepositories = autodiscoverRepositories;
exports.applyFilters = applyFilters;
const tslib_1 = require("tslib");
const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
const logger_1 = require("../../logger");
const platform_1 = require("../../modules/platform");
const string_match_1 = require("../../util/string-match");
// istanbul ignore next
function repoName(value) {
return String(is_1.default.string(value) ? value : value.repository).toLowerCase();
}
async function autodiscoverRepositories(config) {
const { autodiscoverFilter } = config;
if (config.platform === 'local') {
if (config.repositories?.length) {
logger_1.logger.debug({ repositories: config.repositories }, 'Found repositories when in local mode');
throw new Error('Invalid configuration: repositories list not supported when platform=local');
}
config.repositories = ['local'];
return config;
}
if (!config.autodiscover) {
if (!config.repositories?.length) {
logger_1.logger.warn('No repositories found - did you want to run with flag --autodiscover?');
}
return config;
}
// Autodiscover list of repositories
let discovered = await platform_1.platform.getRepos({
topics: config.autodiscoverTopics,
sort: config.autodiscoverRepoSort,
order: config.autodiscoverRepoOrder,
includeMirrors: config.includeMirrors,
namespaces: config.autodiscoverNamespaces,
projects: config.autodiscoverProjects,
});
if (!discovered?.length) {
// Soft fail (no error thrown) if no accessible repositories
logger_1.logger.debug('No repositories were autodiscovered');
return config;
}
logger_1.logger.debug(`Autodiscovered ${discovered.length} repositories`);
logger_1.logger.trace({ length: discovered.length, repositories: discovered }, `Autodiscovered repositories`);
if (autodiscoverFilter) {
logger_1.logger.debug({ autodiscoverFilter }, 'Applying autodiscoverFilter');
discovered = applyFilters(discovered, is_1.default.string(autodiscoverFilter) ? [autodiscoverFilter] : autodiscoverFilter);
if (!discovered.length) {
// Soft fail (no error thrown) if no accessible repositories match the filter
logger_1.logger.debug('None of the discovered repositories matched the filter');
return config;
}
}
logger_1.logger.info({ length: discovered.length, repositories: discovered }, `Autodiscovered repositories`);
// istanbul ignore if
if (config.repositories?.length) {
logger_1.logger.debug('Checking autodiscovered repositories against configured repositories');
for (const configuredRepo of config.repositories) {
const repository = repoName(configuredRepo);
let found = false;
for (let i = discovered.length - 1; i > -1; i -= 1) {
if (repository === repoName(discovered[i])) {
found = true;
logger_1.logger.debug({ repository }, 'Using configured repository settings');
// TODO: fix typings
discovered[i] = configuredRepo;
}
}
if (!found) {
logger_1.logger.warn({ repository }, 'Configured repository is in not in autodiscover list');
}
}
}
return { ...config, repositories: discovered };
}
function applyFilters(repos, filters) {
return repos.filter((repo) => (0, string_match_1.matchRegexOrGlobList)(repo, filters));
}
//# sourceMappingURL=autodiscover.js.map