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.

46 Zeilen
1.1KB

  1. import logging
  2. from dataclasses import dataclass
  3. from typing import Optional
  4. from .packages import Package
  5. logger = logging.getLogger(__name__)
  6. @dataclass
  7. class Plugin:
  8. id: str
  9. version: Optional[str]
  10. @property
  11. def gradle_spec(self):
  12. return f'id("{self.id}") version "{self.version}"' if self.version else self.id
  13. @property
  14. def package(self):
  15. return Package(self.id, self.id + '.gradle.plugin', self.version)
  16. def __str__(self):
  17. return f'{self.id}:{self.version}' if self.version else self.id
  18. def __hash__(self):
  19. return hash((self.id, self.version))
  20. def handle_plugins(section: dict[str, str | list[str] | None]) -> list[Plugin]:
  21. result = []
  22. for entry in section:
  23. versions = section[entry]
  24. if isinstance(versions, str):
  25. result.append(Plugin(entry, versions))
  26. elif isinstance(versions, list):
  27. result.extend([Plugin(entry, v) for v in versions])
  28. elif versions is None:
  29. result.append(Plugin(entry, None))
  30. else:
  31. logger.warning(f'Invalid plugin version "{versions}" for {entry}')
  32. return result