in src/flagutil.js [43:104]
exports.computeReposFromFlag = function (flagValue, opts) {
opts = opts || {};
const includeSvn = opts.includeSvn;
const includeModules = opts.includeModules;
if (!flagValue) {
console.log('No repos specified - using repo in CWD');
flagValue = '.';
}
const values = flagValue === true ? [] : Array.isArray(flagValue) ? flagValue : [flagValue];
let ret = [];
const addedIds = {};
const addedRepos = {};
function addRepo (repo) {
if (!addedIds[repo.id]) {
addedIds[repo.id] = true;
// If we're not requesting modules be included, then we want to de-dup in the case where two repos have the
// same repoName (because one or both is actually a sub-module). This probably means we're doing a repo level
// operation, so it doesn't matter which we keep, but we'll prefer the one that represents the base repo.
if (includeModules) {
ret.push(repo);
} else {
const existingRepo = addedRepos[repo.repoName];
if (!existingRepo || !repo.isModule) {
if (existingRepo) {
ret[ret.indexOf(existingRepo)] = repo;
} else {
ret.push(repo);
}
addedRepos[repo.repoName] = repo;
}
}
}
}
values.forEach(function (value) {
if (value === '.') {
value = repoutil.resolveCwdRepo();
}
const repo = repoutil.getRepoById(value);
const group = repoutil.repoGroups[value];
if (repo) {
addRepo(repo);
} else if (group) {
group.forEach(addRepo);
} else {
apputil.fatal('Invalid repo value: ' + value + '\nUse the list-repos command to see value values.');
}
});
if (!includeSvn) {
let hadSvn = false;
ret = ret.filter(function (r) {
hadSvn = hadSvn || !!r.svn;
return !r.svn;
});
if (hadSvn && !(values.length === 1 && values[0] === 'auto')) {
console.warn('Skipping one or more non-git repos');
}
}
return ret;
};