From 5fe58e95cd6d98002e4e0483444371752dd27a53 Mon Sep 17 00:00:00 2001 From: erik Date: Fri, 21 Apr 2023 14:38:35 +0200 Subject: [PATCH] Deprecate SystemApi in Favour of ExecutionApi --- .../release_mixin/infrastructure_api.py | 59 +++++++++---------- src/test/python/release_mixin/helper.py | 7 +-- 2 files changed, 30 insertions(+), 36 deletions(-) diff --git a/src/main/python/ddadevops/infrastructure/release_mixin/infrastructure_api.py b/src/main/python/ddadevops/infrastructure/release_mixin/infrastructure_api.py index 57cc506..042bc95 100644 --- a/src/main/python/ddadevops/infrastructure/release_mixin/infrastructure_api.py +++ b/src/main/python/ddadevops/infrastructure/release_mixin/infrastructure_api.py @@ -2,10 +2,10 @@ import json import re import subprocess as sub from abc import ABC, abstractmethod -from typing import Optional, Union +from typing import Optional from pathlib import Path from os import environ -import logging +from ..infrastructure import ExecutionApi # TODO: jem, zam - 2023_04_18: Discuss if we can move more functionality to domain? class FileHandler(ABC): @@ -188,7 +188,7 @@ class SystemApi(): self.stderr = [""] self.exitcode = 0 - def run(self, args: list[str]): + def run(self, args: list[str]): #TODO Make stateless sanitized_args = [] for arg in args: str_arg = str(arg) @@ -208,14 +208,9 @@ class SystemApi(): else: self.stderr = None - self.exitcode = stream.returncode - def run_checked(self, *args): self.run(args) - logging.warning(f"err: {self.stderr}") - logging.warning(f"exit: {self.exitcode}") - if len(self.stderr) > 0: raise Exception(f"Command failed with: {self.stderr}") @@ -223,61 +218,61 @@ class SystemApi(): class GitApi(): def __init__(self): - self.system_api = SystemApi() + self.execution_api = ExecutionApi() def get_latest_n_commits(self, n: int): - self.system_api.run_checked( - 'git', 'log', '--oneline', '--format="%s %b"', f'-n {n}') - return self.system_api.stdout + self.execution_api.execute( + f'git log --oneline --format="%s %b" -n {n}') + return self.execution_api.stdout def get_latest_commit(self): output = self.get_latest_n_commits(1) return " ".join(output) def tag_annotated(self, annotation: str, message: str, count: int): - self.system_api.run_checked( + self.execution_api.execute( 'git', 'tag', '-a', annotation, '-m', message, f'HEAD~{count}') - return self.system_api.stdout + return self.execution_api.stdout def tag_annotated_second_last(self, annotation: str, message:str): self.tag_annotated(annotation, message, 1) - return self.system_api.stdout + return self.execution_api.stdout def get_latest_tag(self): - self.system_api.run_checked('git', 'describe', '--tags', '--abbrev=0') - return self.system_api.stdout + self.execution_api.execute('git', 'describe', '--tags', '--abbrev=0') + return self.execution_api.stdout def get_current_branch(self): - self.system_api.run_checked('git', 'branch', '--show-current') - return ''.join(self.system_api.stdout).rstrip() + self.execution_api.execute('git', 'branch', '--show-current') + return ''.join(self.execution_api.stdout).rstrip() def init(self, default_branch: str = "main"): - self.system_api.run_checked('git', 'init', '-b', default_branch) + self.execution_api.execute('git', 'init', '-b', default_branch) def set_user_config(self, email: str, name: str): - self.system_api.run_checked('git', 'config', 'user.email', email) - self.system_api.run_checked('git', 'config', 'user.name', name) + self.execution_api.execute('git', 'config', 'user.email', email) + self.execution_api.execute('git', 'config', 'user.name', name) def add_file(self, file_path: Path): - self.system_api.run_checked('git', 'add', file_path) - return self.system_api.stdout + self.execution_api.execute('git', 'add', file_path) + return self.execution_api.stdout def add_remote(self, origin: str, url: str): - self.system_api.run_checked('git', 'remote', 'add', origin, url) - return self.system_api.stdout + self.execution_api.execute('git', 'remote', 'add', origin, url) + return self.execution_api.stdout def commit(self, commit_message: str): - self.system_api.run_checked( + self.execution_api.execute( 'git', 'commit', '-m', commit_message) - return self.system_api.stdout + return self.execution_api.stdout def push(self): - self.system_api.run_checked('git', 'push') - return self.system_api.stdout + self.execution_api.execute('git', 'push') + return self.execution_api.stdout def checkout(self, branch: str): - self.system_api.run_checked('git', 'checkout', branch) - return self.system_api.stdout + self.execution_api.execute('git', 'checkout', branch) + return self.execution_api.stdout class EnvironmentApi(): diff --git a/src/test/python/release_mixin/helper.py b/src/test/python/release_mixin/helper.py index 5c41a79..c9843ca 100644 --- a/src/test/python/release_mixin/helper.py +++ b/src/test/python/release_mixin/helper.py @@ -1,6 +1,5 @@ from pathlib import Path -from src.main.python.ddadevops.infrastructure.release_mixin import SystemApi - +from src.main.python.ddadevops.infrastructure import ExecutionApi class Helper(): def __init__(self, file_name = 'config.json'): @@ -9,5 +8,5 @@ class Helper(): self.TEST_FILE_PATH = self.TEST_FILE_ROOT / self.TEST_FILE_NAME def copy_files(self, source: Path, target: Path): - api = SystemApi() - api.run_checked('cp', source, target) + api = ExecutionApi() + api.execute(f"cp {source} {target}")