All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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