chane logic for repo sign

This commit is contained in:
Evgenii Alekseev 2021-03-08 14:55:47 +03:00
parent 6f67641f4c
commit 026c896fb7
3 changed files with 11 additions and 14 deletions

View File

@ -20,7 +20,7 @@
import logging import logging
import os import os
from typing import List, Optional from typing import List
from ahriman.core.exceptions import BuildFailed from ahriman.core.exceptions import BuildFailed
from ahriman.core.util import check_output from ahriman.core.util import check_output
@ -29,23 +29,19 @@ from ahriman.models.repository_paths import RepositoryPaths
class RepoWrapper: class RepoWrapper:
def __init__(self, name: str, paths: RepositoryPaths, pgp_key: Optional[str]) -> None: def __init__(self, name: str, paths: RepositoryPaths, sign_args: List[str]) -> None:
self.logger = logging.getLogger('build_details') self.logger = logging.getLogger('build_details')
self.name = name self.name = name
self.paths = paths self.paths = paths
self.pgp_key = pgp_key self.sign_args = sign_args
@property @property
def repo_path(self) -> str: def repo_path(self) -> str:
return os.path.join(self.paths.repository, f'{self.name}.db.tar.gz') return os.path.join(self.paths.repository, f'{self.name}.db.tar.gz')
def _with_sign(self, cmd: List[str]) -> List[str]:
return (cmd + ['-s', '-k', self.pgp_key]) if self.pgp_key else cmd
def add(self, path: str) -> None: def add(self, path: str) -> None:
cmd = self._with_sign(['repo-add'])
check_output( check_output(
*cmd, '-R', self.repo_path, path, 'repo-add', *self.sign_args, '-R', self.repo_path, path,
exception=BuildFailed(path), exception=BuildFailed(path),
cwd=self.paths.repository, cwd=self.paths.repository,
logger=self.logger) logger=self.logger)
@ -55,9 +51,8 @@ class RepoWrapper:
sign_path = f'{path}.sig' sign_path = f'{path}.sig'
if os.path.exists(sign_path): if os.path.exists(sign_path):
os.remove(sign_path) os.remove(sign_path)
cmd = self._with_sign(['repo-remove'])
check_output( check_output(
*cmd, self.repo_path, package, 'repo-remove', *self.sign_args, self.repo_path, package,
exception=BuildFailed(path), exception=BuildFailed(path),
cwd=self.paths.repository, cwd=self.paths.repository,
logger=self.logger) logger=self.logger)

View File

@ -47,7 +47,7 @@ class Repository:
self.paths.create_tree() self.paths.create_tree()
self.sign = GPGWrapper(config) self.sign = GPGWrapper(config)
self.wrapper = RepoWrapper(self.name, self.paths, self.sign.repository_sign_key) self.wrapper = RepoWrapper(self.name, self.paths, self.sign.repository_sign_args)
def _clear_build(self) -> None: def _clear_build(self) -> None:
for package in os.listdir(self.paths.sources): for package in os.listdir(self.paths.sources):

View File

@ -20,7 +20,7 @@
import logging import logging
import os import os
from typing import List, Optional from typing import List
from ahriman.core.configuration import Configuration from ahriman.core.configuration import Configuration
from ahriman.core.exceptions import BuildFailed from ahriman.core.exceptions import BuildFailed
@ -37,8 +37,10 @@ class GPGWrapper:
self.sign = SignSettings.from_option(config.get('sign', 'enabled')) self.sign = SignSettings.from_option(config.get('sign', 'enabled'))
@property @property
def repository_sign_key(self) -> Optional[str]: def repository_sign_args(self) -> List[str]:
return self.key if self.sign == SignSettings.SignRepository else None if self.sign != SignSettings.SignRepository:
return []
return ['--sign', '--key', self.key] if self.key else ['--sign']
def process(self, path: str) -> List[str]: def process(self, path: str) -> List[str]:
check_output( check_output(