@@ -2,6 +2,7 @@ import de.itemis.mps.gradle.*
2
2
import de.itemis.mps.gradle.tasks.MpsMigrate
3
3
import de.itemis.mps.gradle.tasks.Remigrate
4
4
import de.itemis.mps.gradle.downloadJBR.DownloadJbrForPlatform
5
+ import groovy.transform.TupleConstructor
5
6
import groovy.xml.XmlSlurper
6
7
import java.time.LocalDate
7
8
import java.time.format.DateTimeFormatter
@@ -143,38 +144,52 @@ dependencies {
143
144
junitAnt ' org.apache.ant:ant-junit:1.10.6'
144
145
}
145
146
147
+ @TupleConstructor
148
+ class BundledDep {
149
+ String name
150
+ List<String > entries
151
+ String libSolutionName
152
+ Closure configClosure = { transitive = false }
153
+ // in case a legacy dependency has a broken artifact name, e.g. w/o extension
154
+ String jarNameOverride
155
+ String getConfigName () {
156
+ name + ' _bundled'
157
+ }
158
+ String getResolveTaskName () {
159
+ ' resolve_' + this . configName
160
+ }
161
+ BundledDep overrideArtifactName (String artifactName ) {
162
+ this . jarNameOverride = artifactName
163
+ this
164
+ }
165
+ }
166
+
146
167
def bundledDeps = [
147
- [ ' pcollections' , ' org.pcollections:pcollections:4.0.1' , ' org.iets3.core.expr.base.collections.stubs' ] ,
148
- [ ' bigMath' , ' ch.obermuhlner:big-math:2.3.2' , ' org.iets3.core.expr.math.interpreter' ] ,
149
- [ ' functionalJava' , ' org.functionaljava:functionaljava:4.8.1' , ' org.iets3.core.expr.genjava.functionalJava' ] ,
150
- [ ' cpsSuite' , ' io.takari.junit:takari-cpsuite:1.2.7' , ' org.iets3.opensource.build.gentests.rt' , ' takari-cpsuite.jar' ]
168
+ new BundledDep ( ' pcollections' , [ ' org.pcollections:pcollections:4.0.1' ] , ' org.iets3.core.expr.base.collections.stubs' ) ,
169
+ new BundledDep ( ' bigMath' , [ ' ch.obermuhlner:big-math:2.3.2' ] , ' org.iets3.core.expr.math.interpreter' ) ,
170
+ new BundledDep ( ' functionalJava' , [ ' org.functionaljava:functionaljava:4.8.1' ] , ' org.iets3.core.expr.genjava.functionalJava' ) ,
171
+ new BundledDep ( ' cpsSuite' , [ ' io.takari.junit:takari-cpsuite:1.2.7' ] , ' org.iets3.opensource.build.gentests.rt' ) . overrideArtifactName( ' takari-cpsuite.jar' )
151
172
]
152
173
153
- bundledDeps. each { bundledDep ->
154
- def depName = bundledDep[0 ] + ' _bundled'
155
- def depNotation = bundledDep[1 ]
156
- def bundledSolutionName = bundledDep[2 ]
157
- // in case a dependency has a broken artifact name, e.g. w/o extension
158
- def jarNameOverride = bundledDep[3 ]
159
-
174
+ bundledDeps. each { dep ->
160
175
configurations {
161
- create(depName )
176
+ create(dep . configName )
162
177
}
163
178
dependencies {
164
- add(depName, depNotation) {
165
- transitive = false
179
+ dep . entries . each { entry ->
180
+ add(dep . configName, entry, dep . configClosure)
166
181
}
167
182
}
168
- tasks. create(" resolve_ $d epName " , Sync . class) {
169
- from configurations. getByName(depName )
170
- into file(" code/languages/org.iets3.opensource/solutions/$b undledSolutionName /lib" )
183
+ tasks. create(dep . resolveTaskName , Sync . class) {
184
+ from configurations. getByName(dep . configName )
185
+ into file(" code/languages/org.iets3.opensource/solutions/${ dep.libSolutionName } /lib" )
171
186
172
187
// Strip version numbers from file names
173
188
rename { filename ->
174
- def ra = configurations. getByName(depName ). resolvedConfiguration. resolvedArtifacts. find { ResolvedArtifact ra -> ra. file. name == filename }
189
+ def ra = configurations. getByName(dep . configName ). resolvedConfiguration. resolvedArtifacts. find { ResolvedArtifact ra -> ra. file. name == filename }
175
190
String finalName
176
- if (jarNameOverride != null ) {
177
- finalName = jarNameOverride
191
+ if (dep . jarNameOverride != null ) {
192
+ finalName = dep . jarNameOverride
178
193
} else if (ra. classifier != null ) {
179
194
finalName = " ${ ra.name} -${ ra.classifier} .${ ra.extension} "
180
195
} else {
@@ -202,7 +217,7 @@ task resolveLanguageLibs(type: Sync) {
202
217
}
203
218
204
219
task resolveDependencies (dependsOn : [' downloadJbr' , resolveMps, resolveLanguageLibs])
205
- resolveDependencies. dependsOn << tasks . findAll {it. name . endsWith( ' _bundled ' ) }
220
+ resolveDependencies. dependsOn << bundledDeps . collect {it. resolveTaskName }
206
221
207
222
ext. mpsHomeDir = resolveMps. destinationDir
208
223
0 commit comments