mglib/mglib/wrapper.py

50 lines
1.1 KiB
Python

import logging
import subprocess
logger = logging.getLogger(__name__)
class Wrapper:
def __init__(self, exec_name, check=True, dry_run=False):
self.exec_name = exec_name
self.check = check,
# usefull for debugging purpose
self.dry_run = dry_run
def get_cmd(self):
cmd = []
if self.exec_name:
cmd.extend([self.exec_name])
return cmd
def call_no_args(self):
cmd = self.get_cmd()
self.run(cmd)
def run(self, cmd):
command_to_run = ' '.join(cmd)
if (self.dry_run):
logger.debug(f"Dry run: {command_to_run}")
logger.debug(f"subprocess: {command_to_run}")
ret = subprocess.run(
cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
encoding="utf-8"
)
if ret.returncode != 0:
logger.error((
f"returncode={ret.returncode}"
f" stdout={ret.stdout}"
f" stderr={ret.stderr}"
))
return ret