Skip to content

Commit dd36fe1

Browse files
committed
allow to use tag in -runrepos in .bndrun
example: -runrepos: \ Workspace,\ @resolve this adds the Workspace repo and all other repos tagged with the tag 'resolve' I used the '@' character as a marker for tags (for now). initially I wanted to use '#' but this is a comment in a .bndrun file. With this i got a successful resolution as before Signed-off-by: Christoph Rueger <[email protected]>
1 parent 359a405 commit dd36fe1

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

biz.aQute.resolve/src/biz/aQute/resolve/BndrunResolveContext.java

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@
5454
import aQute.bnd.service.Registry;
5555
import aQute.bnd.service.RepositoryPlugin;
5656
import aQute.bnd.service.Strategy;
57+
import aQute.bnd.service.Tagged;
5758
import aQute.bnd.service.resolve.hook.ResolverHook;
59+
import aQute.lib.collections.MultiMap;
5860
import aQute.lib.converter.Converter;
5961
import aQute.lib.strings.Strings;
6062
import aQute.lib.utf8properties.UTF8Properties;
@@ -360,6 +362,7 @@ private Processor loadRepositories() throws Exception {
360362

361363
// Map the repository names...
362364

365+
MultiMap<String, Repository> reposTagMap = new MultiMap<>();
363366
Map<String, Repository> repoNameMap = new HashMap<>(allRepos.size());
364367
for (Repository repo : allRepos) {
365368
String name;
@@ -369,14 +372,29 @@ private Processor loadRepositories() throws Exception {
369372
name = repo.toString();
370373
}
371374
repoNameMap.put(name, repo);
375+
376+
// tags
377+
if (repo instanceof Tagged taggedRepo) {
378+
Set<String> tags = taggedRepo.getTags();
379+
for (String tag : tags) {
380+
reposTagMap.add(tag, repo);
381+
}
382+
}
372383
}
373384

374385
// Create the result list
375386
orderedRepositories = new ArrayList<>();
376387
for (String repoName : repoNames.keySet()) {
377-
Repository repo = repoNameMap.get(repoName);
378-
if (repo != null)
379-
orderedRepositories.add(repo);
388+
// tags prefixed with '@' e.g. '@baseline'
389+
if (repoName.startsWith("@")) {
390+
List<Repository> repos = reposTagMap.get(repoName.substring(1));
391+
if (repos != null)
392+
orderedRepositories.addAll(repos);
393+
} else {
394+
Repository repo = repoNameMap.get(repoName);
395+
if (repo != null)
396+
orderedRepositories.add(repo);
397+
}
380398
}
381399
}
382400

0 commit comments

Comments
 (0)