Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

72 Zeilen
2.6KB

  1. import argparse
  2. import asyncio
  3. import logging
  4. from pathlib import Path
  5. from maven import get_effective_packages
  6. from config import parse_config, Configuration
  7. from gradle import create_gradle_build, create_gradle_settings
  8. logger = logging.getLogger(__name__)
  9. async def resolve_kotlin(ident: str, kotlin: Configuration, output_dir: Path, mirrors: list[str], gradle_repo: str):
  10. resolved_packages = [
  11. resolved
  12. for package in kotlin.packages
  13. for resolved in await get_effective_packages(package, mirrors)
  14. ]
  15. path = output_dir / f"{ident}-kotlin-{kotlin.kotlin_version}"
  16. path.mkdir()
  17. logger.debug(f'Creating {path}')
  18. logger.debug('Generating build.gradle.kts')
  19. gradle_build = create_gradle_build(kotlin.kotlin_version, kotlin.plugins, resolved_packages, gradle_repo)
  20. (path / 'build.gradle.kts').write_text(gradle_build)
  21. logger.debug('Generating settings.gradle.kts')
  22. gradle_settings = create_gradle_settings(gradle_repo)
  23. (path / 'settings.gradle.kts').write_text(gradle_settings)
  24. async def main(package_list: Path, output_dir: Path, gradle_repo: str) -> None:
  25. config = parse_config(package_list)
  26. if not config:
  27. print('Error in configuration')
  28. if not config.configurations:
  29. print('No configurations defined, nothing to do.')
  30. elif not config.mirrors:
  31. print('No mirrors defined. Add maven.mirrors in the config file.')
  32. else:
  33. for i, configuration in enumerate(config.configurations):
  34. logger.info(f'Resolving kotlin {configuration.kotlin_version}')
  35. try:
  36. await resolve_kotlin(str(i), configuration, output_dir, config.mirrors, gradle_repo)
  37. except:
  38. logger.exception(f'Error resolving kotlin version {configuration.kotlin_version}')
  39. if __name__ == '__main__':
  40. parser = argparse.ArgumentParser()
  41. parser.add_argument('-v', '--verbose', dest='verbosity', action='count', default=0)
  42. parser.add_argument('--repo', type=str, help="The repository gradle should use", required=True)
  43. parser.add_argument('--output-dir', type=Path, help="The directory to put the generated gradle files in",
  44. default=Path('..'), required=False)
  45. parser.add_argument('package_list', type=Path, help="The list of packages to download")
  46. args = parser.parse_args()
  47. if args.verbosity == 0:
  48. log_level = 'WARNING'
  49. elif args.verbosity == 1:
  50. log_level = 'INFO'
  51. else:
  52. log_level = 'DEBUG'
  53. logging.basicConfig(level=log_level)
  54. asyncio.run(
  55. main(args.package_list, args.output_dir, args.repo)
  56. )