
org.akhikhl.wuff.Config.groovy Maven / Gradle / Ivy
/*
* wuff
*
* Copyright 2014 Andrey Hihlovskiy.
*
* See the file "LICENSE" for copying and usage permission.
*/
package org.akhikhl.wuff
import org.gradle.api.Project
/**
* Holds plugin configuration.
* @author akhikhl
*/
class Config {
Config parentConfig
File localMavenRepositoryDir
File wuffDir
String selectedEclipseVersion = null
Map> lazyVersions = [:]
private Map versionConfigs = null
Set languagePacks = new LinkedHashSet()
List lazyWrappedLibs = []
private WrappedLibsConfig wrappedLibs = null
boolean filterPluginXml = false
boolean filterManifest = false
boolean filterProperties = false
boolean filterHtml = false
void eclipseVersion(String versionString, Closure closure) {
List closureList = lazyVersions[versionString]
if(closureList == null)
closureList = lazyVersions[versionString] = []
closureList.add(closure)
versionConfigs = null
}
EclipseVersionConfig getSelectedVersionConfig() {
getVersionConfigs()[selectedEclipseVersion]
}
Map getVersionConfigs() {
if(versionConfigs == null) {
versionConfigs = [:]
lazyVersions.each { String versionString, List closureList ->
def versionConfig = versionConfigs[versionString] = new EclipseVersionConfig()
for(Closure closure in closureList) {
closure = closure.rehydrate(versionConfig, closure.owner, closure.thisObject)
closure.resolveStrategy = Closure.DELEGATE_FIRST
closure()
}
}
}
return versionConfigs
}
WrappedLibsConfig getWrappedLibs() {
if(wrappedLibs == null) {
wrappedLibs = new WrappedLibsConfig()
for(Closure closure in lazyWrappedLibs) {
closure = closure.rehydrate(wrappedLibs, closure.owner, closure.thisObject)
closure.resolveStrategy = Closure.DELEGATE_FIRST
closure()
}
}
return wrappedLibs
}
void languagePack(String language) {
languagePacks.add(language)
}
protected static void merge(Config target, Config source) {
if(source.parentConfig)
merge(target, source.parentConfig)
if(source.localMavenRepositoryDir != null)
target.localMavenRepositoryDir = source.localMavenRepositoryDir
if(source.wuffDir != null)
target.wuffDir = source.wuffDir
if(source.selectedEclipseVersion != null)
target.selectedEclipseVersion = source.selectedEclipseVersion
source.lazyVersions.each { String versionString, List sourceClosureList ->
List targetClosureList = target.lazyVersions[versionString]
if(targetClosureList == null)
targetClosureList = target.lazyVersions[versionString] = []
targetClosureList.addAll(sourceClosureList)
}
target.lazyWrappedLibs.addAll(source.lazyWrappedLibs)
if(source.filterPluginXml)
target.filterPluginXml = true
if(source.filterManifest)
target.filterManifest = true
if(source.filterProperties)
target.filterProperties = true
if(source.filterHtml)
target.filterHtml = true
}
void wrappedLibs(Closure closure) {
wrappedLibs = null
lazyWrappedLibs.add(closure)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy