Skip to content

Commit

Permalink
Custom generated class name
Browse files Browse the repository at this point in the history
  • Loading branch information
hendraanggrian committed Dec 9, 2018
1 parent 0182c21 commit 06df8e1
Show file tree
Hide file tree
Showing 20 changed files with 34 additions and 27 deletions.
4 changes: 2 additions & 2 deletions build.gradle.kts
Expand Up @@ -21,10 +21,10 @@ allprojects {
}

tasks {
register("clean", Delete::class) {
register<Delete>("clean") {
delete(rootProject.buildDir)
}
register("wrapper", Wrapper::class) {
named<Wrapper>("wrapper") {
gradleVersion = VERSION_GRADLE
distributionType = Wrapper.DistributionType.ALL
}
Expand Down
2 changes: 1 addition & 1 deletion buildSrc/src/releases.kt
Expand Up @@ -2,7 +2,7 @@ const val RELEASE_USER = "hendraanggrian"
const val RELEASE_REPO = "generating"
const val RELEASE_GROUP = "com.$RELEASE_USER.$RELEASE_REPO"
const val RELEASE_ARTIFACT = "buildconfig-gradle-plugin"
const val RELEASE_VERSION = "0.3"
const val RELEASE_VERSION = "0.4"
const val RELEASE_DESC = "BuildConfig gradle plugin for Java projects"
const val RELEASE_WEBSITE = "https://github.com/$RELEASE_USER/$RELEASE_ARTIFACT"

Expand Down
6 changes: 3 additions & 3 deletions buildSrc/src/versions.kt
@@ -1,10 +1,10 @@
const val VERSION_GRADLE = "4.10.2"
const val VERSION_KOTLIN = "1.2.61"
const val VERSION_GRADLE = "5.0"
const val VERSION_KOTLIN = "1.3.10"

internal const val VERSION_JAVAPOET = "1.11.1"
internal const val VERSION_DOKKA = "0.9.17"
internal const val VERSION_BINTRAY = "1.8.4"
internal const val VERSION_BINTRAY_RELEASE = "0.8.1"
internal const val VERSION_BINTRAY_RELEASE = "0.9"
internal const val VERSION_GIT_PUBLISH = "0.3.3"
internal const val VERSION_KTLINT = "0.29.0"
internal const val VERSION_JUNIT = "4.12"
Expand Up @@ -26,7 +26,7 @@ class BuildConfigPlugin : Plugin<Project> {
override fun apply(project: Project) {
val generateBuildConfig by project.tasks.registering(BuildConfigTask::class) {
group = GROUP_NAME
outputDir = project.buildDir.resolve("generated/buildconfig/src/main")
outputDirectory = project.buildDir.resolve("generated/buildconfig/src/main")
}
project.afterEvaluate {
generateBuildConfig {
Expand All @@ -43,7 +43,7 @@ class BuildConfigPlugin : Plugin<Project> {

val generateBuildConfigTask = generateBuildConfig.get()
dependsOn(generateBuildConfigTask)
source(generateBuildConfigTask.outputDir)
source(generateBuildConfigTask.outputDirectory)
}

val compileBuildConfigTask = compileBuildConfig.get()
Expand All @@ -59,6 +59,7 @@ class BuildConfigPlugin : Plugin<Project> {

require(project.plugins.hasPlugin("org.gradle.idea")) { "plugin 'idea' must be applied" }

@Suppress("UnstableApiUsage")
project.configurations.register("providedBuildConfig") {
dependencies += project.dependencies.create(compiledClasses)
project.extensions
Expand Down
Expand Up @@ -26,6 +26,11 @@ open class BuildConfigTask : DefaultTask() {
*/
@Input var packageName: String = ""

/**
* Class name of BuildConfig, may be modified
*/
@Input var className: String = "BuildConfig"

/**
* Customize `BuildConfig.NAME` value.
* Default is project name.
Expand Down Expand Up @@ -76,19 +81,19 @@ open class BuildConfigTask : DefaultTask() {

@Input val fields: MutableSet<BuildConfigField<*>> = mutableSetOf()

@OutputDirectory lateinit var outputDir: File
@OutputDirectory lateinit var outputDirectory: File

@TaskAction
@Throws(IOException::class)
fun generate() {
logger.log(LogLevel.INFO, "Deleting old BuildConfig")
outputDir.deleteRecursively()
logger.log(LogLevel.INFO, "Deleting old $className")
outputDirectory.deleteRecursively()

logger.log(LogLevel.INFO, "Preparing new BuildConfig")
outputDir.mkdirs()
logger.log(LogLevel.INFO, "Preparing new $className")
outputDirectory.mkdirs()

logger.log(LogLevel.INFO, "Writing new BuildConfig")
JavaFile.builder(packageName, TypeSpec.classBuilder("BuildConfig")
logger.log(LogLevel.INFO, "Writing new $className")
JavaFile.builder(packageName, TypeSpec.classBuilder(className)
.addModifiers(PUBLIC, FINAL)
.addMethod(MethodSpec.constructorBuilder().addModifiers(PRIVATE).build())
.addField(String::class.java, NAME, appName)
Expand All @@ -105,7 +110,7 @@ open class BuildConfigTask : DefaultTask() {
.build())
.addFileComment("Generated at ${LocalDateTime.now().format(ofPattern("MM-dd-yyyy 'at' h.mm.ss a"))}")
.build()
.writeTo(outputDir)
.writeTo(outputDirectory)
}

/**
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
3 changes: 2 additions & 1 deletion buildconfig-integration-tests/custom/build.gradle
Expand Up @@ -3,7 +3,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath files('../buildconfig-gradle-plugin-0.3.jar')
classpath files('../buildconfig-gradle-plugin-0.4.jar')
classpath 'com.squareup:javapoet:1.11.1'
}
}
Expand All @@ -21,6 +21,7 @@ dependencies {

tasks.getByName('generateBuildConfig') {
packageName 'my.website'
className 'CustomBuildConfig'

appName 'Hello world!'
groupId 'my.website'
Expand Down
@@ -1,4 +1,4 @@
import my.website.BuildConfig;
import my.website.CustomBuildConfig;
import org.junit.Test;

import static org.junit.Assert.assertEquals;
Expand All @@ -7,9 +7,9 @@ public class BuildConfigTest {

@Test
public void main() {
assertEquals(BuildConfig.NAME, "Hello world!");
assertEquals(BuildConfig.GROUP, "my.website");
assertEquals(BuildConfig.VERSION, "2.0");
assertEquals(BuildConfig.DEBUG, true);
assertEquals(CustomBuildConfig.NAME, "Hello world!");
assertEquals(CustomBuildConfig.GROUP, "my.website");
assertEquals(CustomBuildConfig.VERSION, "2.0");
assertEquals(CustomBuildConfig.DEBUG, true);
}
}
2 changes: 1 addition & 1 deletion buildconfig-integration-tests/extra-fields/build.gradle
Expand Up @@ -3,7 +3,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath files('../buildconfig-gradle-plugin-0.3.jar')
classpath files('../buildconfig-gradle-plugin-0.4.jar')
classpath 'com.squareup:javapoet:1.11.1'
}
}
Expand Down
2 changes: 1 addition & 1 deletion buildconfig-integration-tests/simple/build.gradle
Expand Up @@ -3,7 +3,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath files('../buildconfig-gradle-plugin-0.3.jar')
classpath files('../buildconfig-gradle-plugin-0.4.jar')
classpath 'com.squareup:javapoet:1.11.1'
}
}
Expand Down
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
2 changes: 1 addition & 1 deletion gradlew
Expand Up @@ -28,7 +28,7 @@ APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`

# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
DEFAULT_JVM_OPTS='"-Xmx64m"'

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
Expand Down
2 changes: 1 addition & 1 deletion gradlew.bat
Expand Up @@ -14,7 +14,7 @@ set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%

@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DEFAULT_JVM_OPTS="-Xmx64m"

@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
Expand Down

0 comments on commit 06df8e1

Please sign in to comment.