25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

46 satır
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