1+ import groovy.xml.XmlSlurper
2+ import groovy.xml.slurpersupport.GPathResult
3+ import groovy.xml.slurpersupport.NodeChild
4+
5+ plugins {
6+ `version- catalog`
7+ `maven- publish`
8+ }
9+
10+ group = " org.scijava"
11+ version = " 0.1"
12+
13+ catalog.versionCatalog {
14+
15+ operator fun GPathResult.div (child : String ) = children().find { (it!! as NodeChild ).name() == child } as GPathResult
16+
17+ val effXml = XmlSlurper ().parse(projectDir.resolve(" eff.xml" ))
18+ val deps = effXml / " dependencyManagement" / " dependencies"
19+ val bundles = mutableMapOf<String , ArrayList <String >>()
20+ val skip = listOf (" mpicbg" to " mpicbg_" )
21+ val cache = mutableSetOf<String >() // skip duplicates, such as org.bytedeco:ffmpeg
22+ for (dep in deps.children()) {
23+ val node = dep as NodeChild
24+ val g = node / " groupId"
25+ val a = node / " artifactId"
26+ val v = node / " version"
27+ val gav = " $g :$a :$v "
28+
29+ if ((" $g " to " $a " ) in skip || gav in cache)
30+ continue
31+
32+ cache + = gav
33+
34+ // println(gav)
35+ val camel = " $a " .split(' -' , ' _' )
36+ .joinToString(" " ) { if (it.isEmpty()) " " else it[0 ].uppercase() + it.substring(1 ).lowercase() }
37+ .replaceFirstChar { it.lowercase() }
38+
39+ fun getAlias (group : String = "$g".substringAfterLast('.')) =
40+ " $group ." + when {
41+ camel.startsWith(group) -> camel.substringAfter(group).replaceFirstChar { it.lowercase() }.ifEmpty { group }
42+ else -> camel
43+ }.also { bundles.getOrPut(group, ::ArrayList ) + = it }
44+
45+ val alias = when (" $g " ) {
46+ in listOf (" org.scijava" , " net.imagej" , " net.imglib2" , " sc.fiji" , " org.janelia.saalfeldlab" ) -> getAlias()
47+ " io.scif" -> getAlias(" scifio" )
48+ else -> " $g .$camel "
49+ }
50+
51+ println (" $alias ($gav )" )
52+ library(alias, gav)
53+ }
54+ for ((alias, aliases) in bundles)
55+ bundle(alias, aliases)
56+ }
57+
58+ publishing.publications {
59+ repositories.maven {
60+ name = " sciJava"
61+ credentials(PasswordCredentials ::class )
62+ url = uri(" https://maven.scijava.org/content/repositories/releases" )
63+ }
64+ create<MavenPublication >(" sciJavaCatalog" ) {
65+ from(components[" versionCatalog" ])
66+ }
67+ }
0 commit comments