Experiment with moving creation of artifacts dir to gradle
ci/woodpecker/push/pages Pipeline was successful Details
ci/woodpecker/push/gradle Pipeline was successful Details

This commit is contained in:
Johannes Frohnmeyer 2022-12-03 15:53:40 +01:00
parent 9736937fed
commit 61d8aff1b4
Signed by: Johannes
GPG Key ID: E76429612C2929F4
3 changed files with 56 additions and 35 deletions

View File

@ -21,7 +21,7 @@ val Project.codegenDir get() = buildDir.resolve("generated/sources/jfCodegen")
fun SourceSet.generate(project: Project, generate: Action<ContentGenerator>) {
val generators = project.extra["codeGenerators"] as LinkedHashMap<String, ContentGenerator.Generated>
val exists = generators.containsKey(name)
val generator = ContentGenerator().run(generate)
val generator = ContentGenerator().runAction(generate)
generators[name] = if (exists) generators[name]!!.merge(generator.finalize()) else generator.finalize()
if (!exists) {
java.srcDir(project.codegenDir.resolve("java/$name"))
@ -91,9 +91,9 @@ class ContentGenerator {
// Extensions for TypeSpec.Builder
fun TypeSpec.Builder.javadoc(`import`: String) = addJavadoc(import)
fun TypeSpec.Builder.javadoc(generate: Action<CodeBlock.Builder>) = addJavadoc(CodeBlock.builder().run(generate).build())
fun TypeSpec.Builder.annotation(annotation: Class<*>, generate: Action<AnnotationSpec.Builder>? = null) = addAnnotation(AnnotationSpec.builder(annotation).run(generate).build())
fun TypeSpec.Builder.annotation(annotation: ClassName, generate: Action<AnnotationSpec.Builder>? = null) = addAnnotation(AnnotationSpec.builder(annotation).run(generate).build())
fun TypeSpec.Builder.javadoc(generate: Action<CodeBlock.Builder>) = addJavadoc(CodeBlock.builder().runAction(generate).build())
fun TypeSpec.Builder.annotation(annotation: Class<*>, generate: Action<AnnotationSpec.Builder>? = null) = addAnnotation(AnnotationSpec.builder(annotation).runAction(generate).build())
fun TypeSpec.Builder.annotation(annotation: ClassName, generate: Action<AnnotationSpec.Builder>? = null) = addAnnotation(AnnotationSpec.builder(annotation).runAction(generate).build())
fun TypeSpec.Builder.modifiers(vararg modifiers: Modifier) = addModifiers(*modifiers)
fun TypeSpec.Builder.typeVariable(typeVariable: TypeVariableName) = addTypeVariable(typeVariable)
fun TypeSpec.Builder.superInterface(superInterface: TypeName) = addSuperinterface(superInterface)
@ -103,8 +103,8 @@ fun TypeSpec.Builder.superInterface(superInterface: TypeMirror) = addSuperinterf
fun TypeSpec.Builder.superInterface(superInterface: TypeMirror, avoidNestedTypeNameClashes: Boolean) = addSuperinterface(superInterface, avoidNestedTypeNameClashes)
fun TypeSpec.Builder.enumConstant(name: String) = addEnumConstant(name)
fun TypeSpec.Builder.enumConstant(name: String, typeSpec: TypeSpec) = addEnumConstant(name, typeSpec)
fun TypeSpec.Builder.field(type: Type, name: String, vararg modifiers: Modifier, generate: Action<FieldSpec.Builder>? = null) = addField(FieldSpec.builder(type, name, *modifiers).run(generate).build())
fun TypeSpec.Builder.field(type: TypeName, name: String, vararg modifiers: Modifier, generate: Action<FieldSpec.Builder>? = null) = addField(FieldSpec.builder(type, name, *modifiers).run(generate).build())
fun TypeSpec.Builder.field(type: Type, name: String, vararg modifiers: Modifier, generate: Action<FieldSpec.Builder>? = null) = addField(FieldSpec.builder(type, name, *modifiers).runAction(generate).build())
fun TypeSpec.Builder.field(type: TypeName, name: String, vararg modifiers: Modifier, generate: Action<FieldSpec.Builder>? = null) = addField(FieldSpec.builder(type, name, *modifiers).runAction(generate).build())
fun TypeSpec.Builder.field(name: String, value: Boolean, vararg modifiers: Modifier) = field(Boolean::class.java, name, *modifiers) { initializer("$value") }
fun TypeSpec.Builder.field(name: String, value: Short, vararg modifiers: Modifier) = field(Short::class.java, name, *modifiers) { initializer("$value") }
fun TypeSpec.Builder.field(name: String, value: Int, vararg modifiers: Modifier) = field(Int::class.java, name, *modifiers) { initializer("$value") }
@ -112,50 +112,50 @@ fun TypeSpec.Builder.field(name: String, value: Long, vararg modifiers: Modifier
fun TypeSpec.Builder.field(name: String, value: Float, vararg modifiers: Modifier) = field(Float::class.java, name, *modifiers) { initializer("${value}f") }
fun TypeSpec.Builder.field(name: String, value: Double, vararg modifiers: Modifier) = field(Double::class.java, name, *modifiers) { initializer("$value") }
fun TypeSpec.Builder.field(name: String, value: String, vararg modifiers: Modifier) = field(String::class.java, name, *modifiers) { initializer("\$S", value) }
fun TypeSpec.Builder.static(generate: Action<CodeBlock.Builder>) = addStaticBlock(CodeBlock.builder().run(generate).build())
fun TypeSpec.Builder.initializer(generate: Action<CodeBlock.Builder>) = addInitializerBlock(CodeBlock.builder().run(generate).build())
fun TypeSpec.Builder.method(name: String, generate: Action<MethodSpec.Builder>) = addMethod(MethodSpec.methodBuilder(name).run(generate).build())
fun TypeSpec.Builder.override(element: ExecutableElement, generate: Action<MethodSpec.Builder>) = addMethod(MethodSpec.overriding(element).run(generate).build())
fun TypeSpec.Builder.override(element: ExecutableElement, enclosing: DeclaredType, types: Types, generate: Action<MethodSpec.Builder>) = addMethod(MethodSpec.overriding(element, enclosing, types).run(generate).build())
fun TypeSpec.Builder.constructor(generate: Action<MethodSpec.Builder>) = addMethod(MethodSpec.constructorBuilder().run(generate).build())
fun TypeSpec.Builder.innerEnum(name: String, generate: Action<TypeSpec.Builder>) = addType(TypeSpec.enumBuilder(name).run(generate).build())
fun TypeSpec.Builder.innerInterface(name: String, generate: Action<TypeSpec.Builder>) = addType(TypeSpec.interfaceBuilder(name).run(generate).build())
fun TypeSpec.Builder.innerClass(name: String, generate: Action<TypeSpec.Builder>) = addType(TypeSpec.classBuilder(name).run(generate).build())
fun TypeSpec.Builder.innerAnnotation(name: String, generate: Action<TypeSpec.Builder>) = addType(TypeSpec.annotationBuilder(name).run(generate).build())
fun TypeSpec.Builder.innerEnum(name: ClassName, generate: Action<TypeSpec.Builder>) = addType(TypeSpec.enumBuilder(name).run(generate).build())
fun TypeSpec.Builder.innerInterface(name: ClassName, generate: Action<TypeSpec.Builder>) = addType(TypeSpec.interfaceBuilder(name).run(generate).build())
fun TypeSpec.Builder.innerClass(name: ClassName, generate: Action<TypeSpec.Builder>) = addType(TypeSpec.classBuilder(name).run(generate).build())
fun TypeSpec.Builder.innerAnnotation(name: ClassName, generate: Action<TypeSpec.Builder>) = addType(TypeSpec.annotationBuilder(name).run(generate).build())
fun TypeSpec.Builder.static(generate: Action<CodeBlock.Builder>) = addStaticBlock(CodeBlock.builder().runAction(generate).build())
fun TypeSpec.Builder.initializer(generate: Action<CodeBlock.Builder>) = addInitializerBlock(CodeBlock.builder().runAction(generate).build())
fun TypeSpec.Builder.method(name: String, generate: Action<MethodSpec.Builder>) = addMethod(MethodSpec.methodBuilder(name).runAction(generate).build())
fun TypeSpec.Builder.override(element: ExecutableElement, generate: Action<MethodSpec.Builder>) = addMethod(MethodSpec.overriding(element).runAction(generate).build())
fun TypeSpec.Builder.override(element: ExecutableElement, enclosing: DeclaredType, types: Types, generate: Action<MethodSpec.Builder>) = addMethod(MethodSpec.overriding(element, enclosing, types).runAction(generate).build())
fun TypeSpec.Builder.constructor(generate: Action<MethodSpec.Builder>) = addMethod(MethodSpec.constructorBuilder().runAction(generate).build())
fun TypeSpec.Builder.innerEnum(name: String, generate: Action<TypeSpec.Builder>) = addType(TypeSpec.enumBuilder(name).runAction(generate).build())
fun TypeSpec.Builder.innerInterface(name: String, generate: Action<TypeSpec.Builder>) = addType(TypeSpec.interfaceBuilder(name).runAction(generate).build())
fun TypeSpec.Builder.innerClass(name: String, generate: Action<TypeSpec.Builder>) = addType(TypeSpec.classBuilder(name).runAction(generate).build())
fun TypeSpec.Builder.innerAnnotation(name: String, generate: Action<TypeSpec.Builder>) = addType(TypeSpec.annotationBuilder(name).runAction(generate).build())
fun TypeSpec.Builder.innerEnum(name: ClassName, generate: Action<TypeSpec.Builder>) = addType(TypeSpec.enumBuilder(name).runAction(generate).build())
fun TypeSpec.Builder.innerInterface(name: ClassName, generate: Action<TypeSpec.Builder>) = addType(TypeSpec.interfaceBuilder(name).runAction(generate).build())
fun TypeSpec.Builder.innerClass(name: ClassName, generate: Action<TypeSpec.Builder>) = addType(TypeSpec.classBuilder(name).runAction(generate).build())
fun TypeSpec.Builder.innerAnnotation(name: ClassName, generate: Action<TypeSpec.Builder>) = addType(TypeSpec.annotationBuilder(name).runAction(generate).build())
fun TypeSpec.Builder.origin(origin: Element) = addOriginatingElement(origin)
// Extensions for AnnotationSpec.Builder
fun AnnotationSpec.Builder.member(name: String, format: String, vararg args: Any) = addMember(name, format, args)
fun AnnotationSpec.Builder.member(name: String, generate: Action<CodeBlock.Builder>) = addMember(name, CodeBlock.builder().run(generate).build())
fun AnnotationSpec.Builder.member(name: String, generate: Action<CodeBlock.Builder>) = addMember(name, CodeBlock.builder().runAction(generate).build())
// Extensions for FieldSpec.Builder
fun FieldSpec.Builder.initializer(generate: Action<CodeBlock.Builder>) = initializer(CodeBlock.builder().run(generate).build())
fun FieldSpec.Builder.initializer(generate: Action<CodeBlock.Builder>) = initializer(CodeBlock.builder().runAction(generate).build())
// Extensions for MethodSpec.Builder
fun MethodSpec.Builder.javadoc(`import`: String) = addJavadoc(import)
fun MethodSpec.Builder.javadoc(generate: Action<CodeBlock.Builder>) = addJavadoc(CodeBlock.builder().run(generate).build())
fun MethodSpec.Builder.annotation(annotation: Class<*>, generate: Action<AnnotationSpec.Builder>? = null) = addAnnotation(AnnotationSpec.builder(annotation).run(generate).build())
fun MethodSpec.Builder.annotation(annotation: ClassName, generate: Action<AnnotationSpec.Builder>? = null) = addAnnotation(AnnotationSpec.builder(annotation).run(generate).build())
fun MethodSpec.Builder.javadoc(generate: Action<CodeBlock.Builder>) = addJavadoc(CodeBlock.builder().runAction(generate).build())
fun MethodSpec.Builder.annotation(annotation: Class<*>, generate: Action<AnnotationSpec.Builder>? = null) = addAnnotation(AnnotationSpec.builder(annotation).runAction(generate).build())
fun MethodSpec.Builder.annotation(annotation: ClassName, generate: Action<AnnotationSpec.Builder>? = null) = addAnnotation(AnnotationSpec.builder(annotation).runAction(generate).build())
fun MethodSpec.Builder.modifiers(vararg modifiers: Modifier) = addModifiers(*modifiers)
fun MethodSpec.Builder.typeVariable(typeVariable: TypeVariableName) = addTypeVariable(typeVariable)
fun MethodSpec.Builder.parameter(type: Type, name: String, vararg modifiers: Modifier, generate: Action<ParameterSpec.Builder>) = addParameter(ParameterSpec.builder(type, name, *modifiers).run(generate).build())
fun MethodSpec.Builder.parameter(type: TypeName, name: String, vararg modifiers: Modifier, generate: Action<ParameterSpec.Builder>) = addParameter(ParameterSpec.builder(type, name, *modifiers).run(generate).build())
fun MethodSpec.Builder.parameter(type: Type, name: String, vararg modifiers: Modifier, generate: Action<ParameterSpec.Builder>) = addParameter(ParameterSpec.builder(type, name, *modifiers).runAction(generate).build())
fun MethodSpec.Builder.parameter(type: TypeName, name: String, vararg modifiers: Modifier, generate: Action<ParameterSpec.Builder>) = addParameter(ParameterSpec.builder(type, name, *modifiers).runAction(generate).build())
fun MethodSpec.Builder.exception(exception: Type) = addException(exception)
fun MethodSpec.Builder.exception(exception: TypeName) = addException(exception)
fun MethodSpec.Builder.code(generate: Action<CodeBlock.Builder>) = addCode(CodeBlock.builder().run(generate).build())
fun MethodSpec.Builder.defaultValue(generate: Action<CodeBlock.Builder>) = defaultValue(CodeBlock.builder().run(generate).build())
fun MethodSpec.Builder.code(generate: Action<CodeBlock.Builder>) = addCode(CodeBlock.builder().runAction(generate).build())
fun MethodSpec.Builder.defaultValue(generate: Action<CodeBlock.Builder>) = defaultValue(CodeBlock.builder().runAction(generate).build())
// Extensions for ParameterSpec.Builder
fun ParameterSpec.Builder.javadoc(`import`: String) = addJavadoc(import)
fun ParameterSpec.Builder.javadoc(generate: Action<CodeBlock.Builder>) = addJavadoc(CodeBlock.builder().run(generate).build())
fun ParameterSpec.Builder.annotation(annotation: Class<*>, generate: Action<AnnotationSpec.Builder>? = null) = addAnnotation(AnnotationSpec.builder(annotation).run(generate).build())
fun ParameterSpec.Builder.annotation(annotation: ClassName, generate: Action<AnnotationSpec.Builder>? = null) = addAnnotation(AnnotationSpec.builder(annotation).run(generate).build())
fun ParameterSpec.Builder.javadoc(generate: Action<CodeBlock.Builder>) = addJavadoc(CodeBlock.builder().runAction(generate).build())
fun ParameterSpec.Builder.annotation(annotation: Class<*>, generate: Action<AnnotationSpec.Builder>? = null) = addAnnotation(AnnotationSpec.builder(annotation).runAction(generate).build())
fun ParameterSpec.Builder.annotation(annotation: ClassName, generate: Action<AnnotationSpec.Builder>? = null) = addAnnotation(AnnotationSpec.builder(annotation).runAction(generate).build())
fun ParameterSpec.Builder.modifiers(vararg modifiers: Modifier) = addModifiers(*modifiers)
// Extensions for CodeBlock.Builder
fun CodeBlock.Builder.controlFlow(controlFlow: String, vararg args: Any, generate: Action<CodeBlock.Builder>) = beginControlFlow(controlFlow, *args).run(generate).endControlFlow()
fun CodeBlock.Builder.indent(generate: Action<CodeBlock.Builder>) = indent().run(generate).unindent()
fun CodeBlock.Builder.controlFlow(controlFlow: String, vararg args: Any, generate: Action<CodeBlock.Builder>) = beginControlFlow(controlFlow, *args).runAction(generate).endControlFlow()
fun CodeBlock.Builder.indent(generate: Action<CodeBlock.Builder>) = indent().runAction(generate).unindent()

View File

@ -24,6 +24,10 @@ var Project.changelog: String
get() = if (extra.has("changelog")) extra["changelog"].toString() else ""
set(value) = extra.set("changelog", value)
var Project.flavour: String
get() = prop("flavour", "").trim()
set(value) = setProperty("flavour", value)
val TaskContainer.deployDebug: Task get() = findByName("deployDebug") ?: register("deployDebug").get().dependsOn(named<DefaultTask>("build").get())
val TaskContainer.deployRelease: Task get() = findByName("deployRelease") ?: register("deployRelease").get().dependsOn(deployDebug)
@ -32,7 +36,7 @@ fun Project.prop(name: String, default: String? = null): String =
else default
// Utility to run actions on values
fun <T> T.run(action: Action<T>?): T {
fun <T> T.runAction(action: Action<T>?): T {
action?.execute(this!!)
return this
}

View File

@ -90,5 +90,22 @@ subprojects {
}
}
val moveArtifacts by tasks.registering(Copy::class) {
val suffix = if (flavour.isEmpty()) "" else "-$flavour"
val sources = mapOf("latest$suffix.jar" to tasks.remapJar, "latest$suffix-dev.jar" to tasks.shadowJar)
for (source in sources) {
from(source.value.map { it.archiveFile }) {
this.rename { source.key }
}
dependsOn(source.value)
}
into(buildDir.resolve("artifacts"))
}
tasks.deployDebug.dependsOn(moveArtifacts)
if (hasProperty("curseforge_id")) apply(plugin = "jfmod.curseforge")
if (hasProperty("modrinth_id")) apply(plugin = "jfmod.modrinth")