No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

46 líneas
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