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

com.bancvue.gradle.GradlePluginMixin.groovy Maven / Gradle / Ivy

/**
 * Copyright 2013 BancVue, LTD
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.bancvue.gradle

import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.artifacts.Configuration
import org.gradle.api.file.ConfigurableFileCollection
import org.slf4j.Logger

class GradlePluginMixin {

	static FilenameFilter JAR_FILTER = { dir, file -> file ==~ /(?i).*\.jar$/ } as FilenameFilter

	Project acquirePluginProject() {
		assertPropertyDefined('project')
		project
	}

	Logger acquirePluginLog() {
		assertPropertyDefined('log')
		log
	}

	void assertPropertyDefined(String propertyName) {
		if (!hasProperty(propertyName)) {
			throw new RuntimeException("Mixin requires property '${propertyName}' on target class")
		}
	}

	ConfigurableFileCollection createJarFileCollection(File dir) {
		File[] files = dir.listFiles(JAR_FILTER)

		if (!files) {
			acquirePluginLog().warn("Failed to create file collection, no jar files in dir=${dir}")
			return null
		}
		acquirePluginProject().files(files)
	}

	void createNamedConfigurationExtendingFrom(String configurationName, String extendsFromConfigurationName) {
		String extendsFromCompileConfigurationName = "${extendsFromConfigurationName}Compile"
		String extendsFromRuntimeConfigurationName = "${extendsFromConfigurationName}Runtime"
		createNamedConfigurationExtendingFrom(configurationName, extendsFromCompileConfigurationName, extendsFromRuntimeConfigurationName)
	}

	void createNamedConfigurationExtendingFrom(String configurationName, String extendsFromCompileConfigurationName, String extendsFromRuntimeConfigurationName) {
		Configuration extendsFromCompileConfiguration = acquireConfigurationByName(extendsFromCompileConfigurationName)
		Configuration extendsFromRuntimeConfiguration = acquireConfigurationByName(extendsFromRuntimeConfigurationName)

		acquirePluginProject().configurations {
			"${configurationName}" {}
			"${configurationName}Compile" {
				extendsFrom(extendsFromCompileConfiguration)
			}
			"${configurationName}Runtime" {
				extendsFrom(extendsFromRuntimeConfiguration)
			}
		}
	}

	Configuration acquireConfigurationByName(String extendsFromCompileConfigurationName) {
		acquirePluginProject().configurations.getByName(extendsFromCompileConfigurationName)
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy