|
- from typing import Iterable
-
- from config import Package, Plugin
-
-
- def create_gradle_settings(repo: str) -> str:
- return """// Generated, do not edit
- rootProject.name = "gradle sync job"
-
- pluginManagement {
- repositories {
- maven {
- url=uri("http://""" + repo + """/releases")
- isAllowInsecureProtocol=true
- }
- }
- }
- """
-
-
- def create_gradle_build(kotlin_version: str, plugins: Iterable[Plugin], packages: Iterable[Package], repo: str) -> str:
- return """// Generated, do not edit
- plugins {
- """ + f'kotlin("jvm") version "{kotlin_version}"' + """
-
- """ + '\n '.join(p.gradle_spec for p in plugins) + """
- }
- """ + ("""
- repositories {
- maven {
- url=uri("http://""" + repo + """/releases")
- isAllowInsecureProtocol=true
- }
- }
-
- val deps = listOf<String>(
- """ + ',\n '.join(f'"{dep}"' for dep in sorted([str(p) for p in packages])) + """
- ).flatMap {
- listOf(it, it + ":sources", it + ":javadoc")
- }.map {
- configurations.create(it.replace(':', '_')) {
- isCanBeResolved = true
- isCanBeConsumed = false
- } to it
- }
-
- dependencies {
- deps.forEach { (conf, dep) ->
- conf(dep)
- }
- }
-
- tasks.register("downloadDependencies") {
- val logger = getLogger()
-
- doLast {
- deps.forEach { (conf, dep) ->
- logger.warn("$conf")
- try {
- conf.files
- } catch (e: Exception) {
- if (dep.endsWith(":sources")) {
- logger.info("Package '$dep' has no sources")
- } else if (dep.endsWith(":javadoc")) {
- logger.info("Package '$dep' has no javadoc")
- } else {
- logger.info("Error while fetching '$dep': $e")
- }
- }
- }
- }
- }
- """ if packages else """
- tasks.register("downloadDependencies") {}
- """)
|