(
request: StackStormNfpmPackageFieldsRequest,
)
| 216 | |
| 217 | @rule |
| 218 | async def inject_package_fields( |
| 219 | request: StackStormNfpmPackageFieldsRequest, |
| 220 | ) -> InjectedNfpmPackageFields: |
| 221 | target = request.target |
| 222 | address = target.address |
| 223 | |
| 224 | version_file = "st2common/st2common/__init__.py" |
| 225 | extracted_version = await Get( |
| 226 | StackStormVersion, |
| 227 | StackStormVersionRequest( |
| 228 | version_file=version_file, |
| 229 | description_of_origin=f"StackStorm version file: {version_file}", |
| 230 | ), |
| 231 | ) |
| 232 | |
| 233 | version: str = extracted_version.value |
| 234 | is_dev = "dev" in version |
| 235 | if is_dev and "-dev" not in version: |
| 236 | # nfpm parses this into version[-version_prerelease][+version_metadata] |
| 237 | # that dash is required to be a valid semver version (3.9dev => 3.9-dev). |
| 238 | version = version.replace("dev", "-dev") |
| 239 | |
| 240 | # this is specific to distro-version (EL8, EL9, Ubuntu Focal, Ubuntu Jammy, ...) |
| 241 | next_release = await packagecloud_get_next_release( |
| 242 | PackageCloudNextReleaseRequest( |
| 243 | nfpm_arch=target[NfpmArchField].value, |
| 244 | distro_id=target[DistroIDField].value, |
| 245 | package_name=target[NfpmPackageNameField].value, |
| 246 | package_version=version, |
| 247 | production=not is_dev, |
| 248 | ) |
| 249 | ) |
| 250 | release = 1 if next_release.value is None else next_release.value |
| 251 | |
| 252 | fields: list[Field] = [ |
| 253 | NfpmVersionSchemaField("semver", address=address), |
| 254 | NfpmVersionField(version, address=address), |
| 255 | NfpmVersionReleaseField(release, address=address), |
| 256 | ] |
| 257 | return InjectedNfpmPackageFields(fields, address=address) |
| 258 | |
| 259 | |
| 260 | def rules(): |
nothing calls this directly
no test coverage detected