Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

76 řádky
1.8KB

  1. from typing import Iterable
  2. from config import Package, Plugin
  3. def create_gradle_settings(repo: str) -> str:
  4. return """// Generated, do not edit
  5. rootProject.name = "gradle sync job"
  6. pluginManagement {
  7. repositories {
  8. maven {
  9. url=uri("http://""" + repo + """/releases")
  10. isAllowInsecureProtocol=true
  11. }
  12. }
  13. }
  14. """
  15. def create_gradle_build(kotlin_version: str, plugins: Iterable[Plugin], packages: Iterable[Package], repo: str) -> str:
  16. return """// Generated, do not edit
  17. plugins {
  18. """ + f'kotlin("jvm") version "{kotlin_version}"' + """
  19. """ + '\n '.join(p.gradle_spec for p in plugins) + """
  20. }
  21. """ + ("""
  22. repositories {
  23. maven {
  24. url=uri("http://""" + repo + """/releases")
  25. isAllowInsecureProtocol=true
  26. }
  27. }
  28. val deps = listOf<String>(
  29. """ + ',\n '.join(f'"{dep}"' for dep in sorted([str(p) for p in packages])) + """
  30. ).flatMap {
  31. listOf(it, it + ":sources", it + ":javadoc")
  32. }.map {
  33. configurations.create(it.replace(':', '_')) {
  34. isCanBeResolved = true
  35. isCanBeConsumed = false
  36. } to it
  37. }
  38. dependencies {
  39. deps.forEach { (conf, dep) ->
  40. conf(dep)
  41. }
  42. }
  43. tasks.register("downloadDependencies") {
  44. val logger = getLogger()
  45. doLast {
  46. deps.forEach { (conf, dep) ->
  47. logger.warn("$conf")
  48. try {
  49. conf.files
  50. } catch (e: Exception) {
  51. if (dep.endsWith(":sources")) {
  52. logger.info("Package '$dep' has no sources")
  53. } else if (dep.endsWith(":javadoc")) {
  54. logger.info("Package '$dep' has no javadoc")
  55. } else {
  56. logger.info("Error while fetching '$dep': $e")
  57. }
  58. }
  59. }
  60. }
  61. }
  62. """ if packages else """
  63. tasks.register("downloadDependencies") {}
  64. """)