add token & improve artifact validation

This commit is contained in:
Michael Jerger 2023-08-11 16:16:03 +02:00
parent 3cfb453454
commit 2217e5c8d1

View file

@ -1,4 +1,4 @@
from typing import Optional, List from typing import Optional, List, Dict
from pathlib import Path from pathlib import Path
from .common import ( from .common import (
Validateable, Validateable,
@ -25,6 +25,7 @@ class Release(Validateable):
self.release_artifact_server_url = inp.get("release_artifact_server_url") self.release_artifact_server_url = inp.get("release_artifact_server_url")
self.release_organisation = inp.get("release_organisation") self.release_organisation = inp.get("release_organisation")
self.release_repository_name = inp.get("release_repository_name") self.release_repository_name = inp.get("release_repository_name")
self.release_artifact_token = inp.get("release_artifact_token")
def update_release_type(self, release_type: ReleaseType): def update_release_type(self, release_type: ReleaseType):
self.release_type = release_type self.release_type = release_type
@ -62,21 +63,24 @@ class Release(Validateable):
) )
return result return result
def validate_for_artifact(self):
result = []
result += self.__validate_is_not_empty__("release_artifact_server_url")
result += self.__validate_is_not_empty__("release_organisation")
result += self.__validate_is_not_empty__("release_repository_name")
result += self.__validate_is_not_empty__("release_artifacts")
result += self.__validate_is_not_empty__("release_artifact_token")
return result
def build_files(self) -> List[str]: def build_files(self) -> List[str]:
result = [self.release_primary_build_file] result = [self.release_primary_build_file]
result += self.release_secondary_build_files result += self.release_secondary_build_files
return result return result
def forgejo_release_api_endpoint(self): def forgejo_release_api_endpoint(self):
if ( validation = self.validate_for_artifact()
self.release_artifact_server_url is None if validation != []:
or self.release_organisation is None raise RuntimeError(f"not valid for creating artifacts: {validation}")
or self.release_repository_name is None
):
raise RuntimeError(
"when doing artifact release, release_artifact_server_url, "
+ "release_organisation, release_repository_name may not be None."
)
server_url = self.release_artifact_server_url.removeprefix("/").removesuffix( server_url = self.release_artifact_server_url.removeprefix("/").removesuffix(
"/" "/"
@ -84,3 +88,12 @@ class Release(Validateable):
organisation = self.release_organisation.removeprefix("/").removesuffix("/") organisation = self.release_organisation.removeprefix("/").removesuffix("/")
repository = self.release_repository_name.removeprefix("/").removesuffix("/") repository = self.release_repository_name.removeprefix("/").removesuffix("/")
return f"{server_url}/api/v1/repos/{organisation}/{repository}/releases" return f"{server_url}/api/v1/repos/{organisation}/{repository}/releases"
@classmethod
def get_mapping_default(cls) -> List[Dict[str, str]]:
return [
{
"gopass_path": "server/meissa/repo/buero-rw",
"name": "release_artifact_token",
}
]