Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

80 wiersze
2.9KB

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