|
- import logging
- from dataclasses import dataclass
- from typing import Optional
-
- from .packages import Package
-
- logger = logging.getLogger(__name__)
-
-
- @dataclass
- class Plugin:
- id: str
- version: Optional[str]
-
- @property
- def gradle_spec(self):
- return f'id("{self.id}") version "{self.version}"' if self.version else self.id
-
- @property
- def package(self):
- return Package(self.id, self.id + '.gradle.plugin', self.version)
-
- def __str__(self):
- return f'{self.id}:{self.version}' if self.version else self.id
-
- def __hash__(self):
- return hash((self.id, self.version))
-
-
- def handle_plugins(section: dict[str, str | list[str] | None]) -> list[Plugin]:
- result = []
-
- for entry in section:
- versions = section[entry]
-
- if isinstance(versions, str):
- result.append(Plugin(entry, versions))
- elif isinstance(versions, list):
- result.extend([Plugin(entry, v) for v in versions])
- elif versions is None:
- result.append(Plugin(entry, None))
- else:
- logger.warning(f'Invalid plugin version "{versions}" for {entry}')
-
- return result
|