Browse Source

Refactor ide-gradle templates

Refactor ide-gradle templates
commit_hash:58147076392cab3f86ba196c01f437e39173e48e
dimdim11 3 months ago
parent
commit
dc3e62419c

+ 3 - 3
build/export_generators/gradle/build.gradle.kts.jinja

@@ -1,6 +1,6 @@
 {%- set publish = target.publish -%}
 {%- set mainClass = target.app_main_class -%}
-{%- set hasJunit5Test = extra_targets|selectattr('junit5_test') -%}
+{%- set has_junit5_test = extra_targets|selectattr('junit5_test') -%}
 plugins {
 {%  if mainClass -%}
     `application`
@@ -34,7 +34,7 @@ java {
 }
 
 dependencies {
-{%  if hasJunit5Test -%}
+{%  if has_junit5_test -%}
     testImplementation("org.junit.jupiter:junit-jupiter:5.8.2")
     api("org.apache.commons:commons-math3:3.6.1")
     api("com.google.guava:guava:31.0.1-jre")
@@ -71,7 +71,7 @@ dependencies {
 {%  endfor -%}
 }
 
-{%  if hasJunit5Test -%}
+{%  if has_junit5_test -%}
 tasks.named<Test>("test") {
     useJUnitPlatform()
 }

+ 16 - 119
build/export_generators/ide-gradle/build.gradle.kts.jinja

@@ -1,124 +1,21 @@
-{%- set has_errorprone = target.consumer|selectattr('jar', 'startsWith', 'contrib/java/com/google/errorprone/error_prone_annotations')|length -%}
-{%- if has_errorprone -%}
-import net.ltgt.gradle.errorprone.CheckSeverity
-import net.ltgt.gradle.errorprone.errorprone
-
-{% endif -%}
-
-{%- include "[generator]/builddir.jinja" %}
-
-{%- macro OutDirs(runs, prefix, suffix) -%}
-{%-    if run.args|length and run.out_dir|length -%}
-{%-        for out_dir in run.out_dir -%}
-{#-            search all run arguments ended by /<out_dir> -#}
-{%-            set out_dirs = select_by_ends(run.args, "/" + out_dir) -%}
-{%-            if out_dirs|length %}
-{{ prefix }}{{ out_dirs|first }}{{ suffix }}
-{%-            endif -%}
-{%-        endfor -%}
-{%-    endif -%}
-{%- endmacro %}
-
-{%- set mainClass = target.app_main_class -%}
-{%- set publish = target.publish -%}
-{%- set with_kotlin = target.with_kotlin -%}
-{%- set kotlin_version = target.kotlin_version -%}
-{%- set hasJunit5Test = extra_targets|selectattr('junit5_test') -%}
-
-{%- if not target.required_jdk -%}
-{%-     set has_required_jdk = false -%}
-{#-     If no required JDK, set default JDK for Kotlin parts -#}
-{%-     set required_jdk = '17' -%}
-{%- else -%}
-{%-     set has_required_jdk = true -%}
-{%-     set required_jdk = target.required_jdk -%}
-{%- endif %}
-
-{%  include "[generator]/plugins.jinja" -%}
+{%- include "[generator]/vars.jinja" -%}
+{%- include "[generator]/import.jinja" -%}
+{%- include "[generator]/repositories.jinja" -%}
+{%- include "[generator]/builddir.jinja" -%}
+{%- include "[generator]/plugins.jinja" -%}
 {%- include "[generator]/kotlin_plugins.jinja" -%}
 {%- include "[generator]/publish.jinja" -%}
 {%- include "[generator]/preview.jinja" -%}
-
-{#- javac flags -#}
-{%- if target.javac.flags|length -%}
-{#-     skip errorprone options -#}
-{%-     set javac_flags = target.javac.flags|reject('startsWith', '-Xep:')|reject('startsWith', '-XepOpt:') -%}
-{%-     if javac_flags|length and javac_flags != ['-parameters'] %}
-
-tasks.withType<JavaCompile> {
-{%-         for javac_flag in javac_flags %}
-    options.compilerArgs.add("{{ javac_flag }}")
-{%-         endfor %}
-}
-{%      endif -%}
-{%- endif -%}
-
-{%- include "[generator]/errorprone.jinja" %}
-{% include "[generator]/bucket.jinja" %}
-val project_root = "{{ arcadia_root }}"
-
-{%  if mainClass -%}
-application {
-    mainClass.set("{{ mainClass }}")
-}
-
-{%  endif -%}
-java {
-    withSourcesJar()
-    withJavadocJar()
-}
-
-configurations.api {
-    isTransitive = false
-}
-
-configurations.implementation {
-    isTransitive = false
-}
-
-configurations.testImplementation {
-    isTransitive = false
-}
-
-{%- if has_test %}
-
-val testsJar by tasks.registering(Jar::class) {
-    dependsOn(JavaPlugin.COMPILE_TEST_JAVA_TASK_NAME)
-    archiveClassifier.set("tests")
-    from(sourceSets["test"].output)
-}
-
-artifacts.add(configurations.create("testArtifacts").name, testsJar)
-
-tasks.test {
-    testLogging {
-        showStandardStreams = true
-        events("passed", "skipped", "failed")
-    }
-}
-{%  endif -%}
-
-{%- include "[generator]/source_sets.jinja"  %}
-
-{%  include "[generator]/dependencies.jinja" -%}
-
-{%- if hasJunit5Test %}
-
-tasks.named<Test>("test") {
-    useJUnitPlatform()
-}
-{%  endif -%}
-
+{%- include "[generator]/configuration.jinja" -%}
+{%- include "[generator]/javac_flags.jinja" -%}
+{%- include "[generator]/errorprone.jinja" -%}
+{%- include "[generator]/source_sets.jinja" -%}
+{%- include "[generator]/test.jinja" -%}
+{%- include "[generator]/javadoc.jinja" -%}
 {%- include "[generator]/run_java_program.jinja" -%}
-
-{% include "extra-tests.gradle.kts" ignore missing %}
-{% if publish -%}
-{% include 'publish.gradle.kts' ignore missing -%}
-{% endif -%}
-{#- To disable redundant javadoc (it may fail the build) #}
-
-tasks.withType<Javadoc>().configureEach {
-    isEnabled = false
-}
-
+{%- include "[generator]/dependencies.jinja" -%}
+{%- include "extra-tests.gradle.kts" ignore missing -%}
+{%- if publish -%}
+{%-     include 'publish.gradle.kts' ignore missing -%}
+{%- endif -%}
 {%- include "[generator]/debug.jinja" ignore missing -%}

+ 12 - 171
build/export_generators/ide-gradle/build.gradle.kts.proto.jinja

@@ -1,172 +1,13 @@
-{%- set publish = target.publish -%}
-{%- set libraries = target.consumer|selectattr('type', 'eq', 'library') -%}
-import com.google.protobuf.gradle.*
-
-{% include "[generator]/builddir.jinja" %}
-
-val mainProtosDir = File(buildDir, "main_protos")
-{%- if libraries|length %}
-val mainExtractedIncludeProtosDir = File(buildDir, "extracted-include-protos/main")
-{%- endif %}
-
-plugins {
-    id("java-library")
-    id("com.google.protobuf") version "0.8.19"
-{%- if publish %}
-    `maven-publish`
-    `signing`
-{%- endif %}
-}
-{%- include "[generator]/publish.jinja" %}
-
-{% include "[generator]/bucket.jinja" %}
-val project_root = "{{ arcadia_root }}"
-
-sourceSets {
-    main {
-        java.srcDir("$buildDir/generated/sources/proto/main/java")
-{%- if target.proto_grpc %}
-        java.srcDir("$buildDir/generated/sources/proto/main/grpc")
-{%- endif %}
-    }
-    test {
-        java.srcDir("$buildDir/generated/sources/proto/test/java")
-{%- if target.proto_grpc %}
-        java.srcDir("$buildDir/generated/sources/proto/test/grpc")
-{%- endif %}
-    }
-}
-
-java {
-    withSourcesJar()
-    withJavadocJar()
-}
-
-configurations.api {
-    isTransitive = false
-}
-
-configurations.implementation {
-    isTransitive = false
-}
-
-configurations.testImplementation {
-    isTransitive = false
-}
-
-{%- if target.jar_source_set is defined -%}
-{%-     for source_set in target.jar_source_set -%}
-{%-         set srcdir_glob = split(source_set, ':') %}
-sourceSets.main.java.srcDirs += "{{ srcdir_glob[0] }}"
-{%      endfor -%}
-{%- endif %}
-
-dependencies {
-{%- for library in target.consumer if library.classpath -%}
-{%-     if library.prebuilt and library.jar and (library.type != "contrib" or target.handler.build_contribs) %}
-    implementation(files("$project_root/{{ library.jar }}"))
-{%-     else -%}
-{%-         set classpath = library.classpath -%}
-{%-         if classpath|replace('"','') == classpath -%}
-{%-             set classpath = '"' + classpath + '"' -%}
-{%-         endif %}
-{%-         if library.type != "contrib" %}
-    implementation
-{%-         else %}
-    api
-{%-         endif -%}({{ classpath }})
-{%-         if library.excludes.consumer is defined %} {
-{%              for exclude in library.excludes.consumer -%}
-{%                  set classpath = exclude.classpath|replace('"','') -%}
-{%                  set classpath_parts = split(classpath, ':') -%}
-        exclude(group = "{{ classpath_parts[0] }}", module = "{{ classpath_parts[1] }}")
-{%              endfor -%}
-    }
-{%-         endif -%}
-{%-     endif -%}
-{%- endfor -%}
-
-{%- if target.proto_namespace %}
-    protobuf(files(File(mainProtosDir, "{{ target.proto_namespace }}")))
-{%- else %}
-    protobuf(files(mainProtosDir))
-{%- endif %}
-}
-
-protobuf {
-    generatedFilesBaseDir = "$buildDir/generated/sources/proto"
-
-    protoc {
-        // Download from repositories
-        artifact = "com.google.protobuf:protoc:{%- if target.proto_compiler_version -%}{{ target.proto_compiler_version }}{%- else -%}3.22.5{%- endif -%}"
-    }
-{%- if target.proto_grpc %}
-
-    plugins {
-        id("grpc") {
-            artifact = "io.grpc:protoc-gen-grpc-java:{%- if target.proto_grpc_version -%}{{ target.proto_grpc_version }}{%- else -%}1.45.0{%- endif -%}"
-        }
-{%-     if target.proto_kotlin_grpc %}
-        id("grpckt") {
-            artifact = "io.grpc:protoc-gen-grpc-kotlin:{%- if target.proto_kotlin_grpc_version -%}{{ target.proto_kotlin_grpc_version }}{%- else -%}1.3.1{%- endif -%}:jdk8@jar"
-        }
-{%-     endif %}
-    }
-
-    generateProtoTasks {
-        all().forEach {
-            it.plugins {
-                id("grpc")
-{%-     if target.proto_kotlin_grpc %}
-                id("grpckt")
-{%-     endif %}
-            }
-{%-     if target.proto_kotlin_grpc %}
-            it.builtins {
-                create("kotlin")
-            }
-{%-     endif %}
-        }
-    }
-{%- endif %}
-}
-
-val prepareMainProtos = tasks.register<Copy>("prepareMainProtos") {
-    from("$project_root") {
-{#- list of all current project proto files -#}
-{%-     for proto in target.proto_files %}
-        include("{{ proto }}")
-{%-     endfor %}
-    }
-    into(mainProtosDir)
-}
-
-{%  if libraries|length -%}
-val extractMainLibrariesProtos = tasks.register<Copy>("extractMainLibrariesProtos") {
-    from("$project_root") {
-{#- list of all library directories -#}
-{%-     for library in libraries -%}
-{%-         set path_and_jar = rsplit(library.jar, '/', 2) %}
-        include("{{ path_and_jar[0] }}/**/*.proto")
-{%-     endfor %}
-    }
-    into(mainExtractedIncludeProtosDir)
-}
-
-{% endif -%}
-afterEvaluate {
-    tasks.getByName("extractProto").dependsOn(prepareMainProtos)
-{%- if libraries|length %}
-    tasks.getByName("extractProto").dependsOn(extractMainLibrariesProtos)
-{%- endif %}
-}
-
-{# To avoid problems when build project with proto #}
-tasks.getByName("sourcesJar").dependsOn("generateProto")
-
-{# To disable redundant javadoc (it may fail the build) #}
-tasks.withType<Javadoc>().configureEach {
-    isEnabled = false
-}
-
+{%- include "[generator]/proto_vars.jinja" -%}
+{%- include "[generator]/proto_import.jinja" -%}
+{%- include "[generator]/repositories.jinja" -%}
+{%- include "[generator]/proto_builddir.jinja" -%}
+{%- include "[generator]/proto_plugins.jinja" -%}
+{%- include "[generator]/publish.jinja" -%}
+{%- include "[generator]/proto_configuration.jinja" -%}
+{%- include "[generator]/proto_source_sets.jinja" -%}
+{%- include "[generator]/protobuf.jinja" -%}
+{%- include "[generator]/proto_prepare.jinja" -%}
+{%- include "[generator]/javadoc.jinja" -%}
+{%- include "[generator]/proto_dependencies.jinja" -%}
 {%- include "[generator]/debug.jinja" ignore missing -%}

+ 1 - 0
build/export_generators/ide-gradle/builddir.jinja

@@ -1,3 +1,4 @@
+{#- empty string #}
 val baseBuildDir = "{{ export_root }}/gradle.build/"
 buildDir = file(baseBuildDir + project.path.replaceFirst(":", "/").replace(":", "."))
 subprojects {

+ 25 - 0
build/export_generators/ide-gradle/configuration.jinja

@@ -0,0 +1,25 @@
+{#- empty string #}
+val project_root = "{{ arcadia_root }}"
+
+{%  if mainClass -%}
+application {
+    mainClass.set("{{ mainClass }}")
+}
+
+{%  endif -%}
+java {
+    withSourcesJar()
+    withJavadocJar()
+}
+
+configurations.api {
+    isTransitive = false
+}
+
+configurations.implementation {
+    isTransitive = false
+}
+
+configurations.testImplementation {
+    isTransitive = false
+}

+ 1 - 0
build/export_generators/ide-gradle/dependencies.jinja

@@ -1,3 +1,4 @@
+{#- empty string #}
 dependencies {
 {%- for library in target.consumer if library.classpath -%}
 {%-     if has_errorprone -%}

+ 0 - 1
build/export_generators/ide-gradle/errorprone.jinja

@@ -1,7 +1,6 @@
 {%- if has_errorprone -%}
 {%-     set ep_flags = target.javac.flags|select('startsWith', '-Xep:') -%}
 {%-     if ep_flags|length or ep_opts|length %}
-
 tasks.withType<JavaCompile> {
 {%-         if ep_flags|length %}
     options.errorprone.checks.set(

+ 5 - 0
build/export_generators/ide-gradle/import.jinja

@@ -0,0 +1,5 @@
+{%- if has_errorprone -%}
+import net.ltgt.gradle.errorprone.CheckSeverity
+import net.ltgt.gradle.errorprone.errorprone
+
+{% endif -%}

+ 12 - 0
build/export_generators/ide-gradle/javac_flags.jinja

@@ -0,0 +1,12 @@
+{%- if target.javac.flags|length -%}
+{#-     skip errorprone options -#}
+{%-     set javac_flags = target.javac.flags|reject('startsWith', '-Xep:')|reject('startsWith', '-XepOpt:') -%}
+{%-     if javac_flags|length and javac_flags != ['-parameters'] %}
+
+tasks.withType<JavaCompile> {
+{%-         for javac_flag in javac_flags %}
+    options.compilerArgs.add("{{ javac_flag }}")
+{%-         endfor %}
+}
+{%      endif -%}
+{%- endif -%}

+ 4 - 0
build/export_generators/ide-gradle/javadoc.jinja

@@ -0,0 +1,4 @@
+{#- To disable redundant javadoc (it may fail the build) #}
+tasks.withType<Javadoc>().configureEach {
+    isEnabled = false
+}

Some files were not shown because too many files changed in this diff