bootstrap-vz/bootstrapvz/common/tasks/host.py

32 lines
1 KiB
Python
Raw Normal View History

2013-07-10 10:49:45 +02:00
from base import Task
from common import phases
from common.exceptions import TaskError
class CheckExternalCommands(Task):
description = 'Checking availability of external commands'
2013-07-10 10:49:45 +02:00
phase = phases.preparation
@classmethod
def run(cls, info):
2013-07-10 10:49:45 +02:00
from common.tools import log_check_call
from subprocess import CalledProcessError
import re
missing_packages = []
for command, package in info.host_dependencies.items():
2013-07-10 10:49:45 +02:00
try:
log_check_call(['type ' + command], shell=True)
2013-07-10 10:49:45 +02:00
except CalledProcessError:
if re.match('^https?:\/\/', package):
msg = ('The command `{command}\' is not available, '
'you can download the software at `{package}\'.'
.format(command=command, package=package))
else:
msg = ('The command `{command}\' is not available, '
'it is located in the package `{package}\'.'
.format(command=command, package=package))
missing_packages.append(msg)
if len(missing_packages) > 0:
msg = '\n'.join(missing_packages)
raise TaskError(msg)