mirror of
https://github.com/kevingruesser/bootstrap-vz.git
synced 2025-08-24 07:26:29 +00:00
47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
|
|
|
|
def log_check_call(command):
|
|
status = log_call(command)
|
|
if status != 0:
|
|
from subprocess import CalledProcessError
|
|
msg = ('Command \'{command}\' returned non-zero exit status '
|
|
'{status}'.format(command=command, status=status))
|
|
raise CalledProcessError(msg)
|
|
|
|
|
|
def log_call(command):
|
|
import subprocess
|
|
import select
|
|
|
|
import logging
|
|
command_log = command[0].replace('/', '.')
|
|
log = logging.getLogger(__name__ + command_log)
|
|
|
|
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
while True:
|
|
reads = [process.stdout.fileno(), process.stderr.fileno()]
|
|
ret = select.select(reads, [], [])
|
|
for fd in ret[0]:
|
|
if fd == process.stdout.fileno():
|
|
line = process.stdout.readline()
|
|
if line != '':
|
|
log.debug(line.strip())
|
|
if fd == process.stderr.fileno():
|
|
line = process.stderr.readline()
|
|
if line != '':
|
|
log.error(line.strip())
|
|
if process.poll() is not None:
|
|
return process.returncode
|
|
|
|
|
|
def sed_i(file_path, pattern, subst):
|
|
from tempfile import mkstemp
|
|
from shutil import move
|
|
from os import close
|
|
temp_fd, temp_path = mkstemp()
|
|
with open(temp_path, 'w') as new_file:
|
|
with open(file_path) as old_file:
|
|
for line in old_file:
|
|
new_file.write(line.replace(pattern, subst))
|
|
close(temp_fd)
|
|
move(temp_path, file_path)
|