Source code for confab.validate

"""
Functions for validating user input to tasks.
"""

from fabric.api import abort, env
import os


[docs]def validate_templates_dir(templates_dir): """ Template directory must be defined and exist. """ if not templates_dir: abort('Please provide a valid templates directory') elif not os.path.isdir(templates_dir): abort('{templates_dir} is not a valid directory'.format(templates_dir=templates_dir))
[docs]def validate_data_dir(data_dir): """ Data directory must be defined and exist. """ if not data_dir: abort('Please provide a valid data_dir') elif not os.path.isdir(data_dir): abort('{data_dir} is not a valid directory'.format(data_dir=data_dir))
[docs]def validate_generated_dir(generated_dir): """ Generated directory must be defined and not be a regular file. """ if not generated_dir: abort('Please provide a valid generated_dir') elif os.path.exists(generated_dir) and not os.path.isdir(generated_dir): abort('{generated_dir} is not a valid directory'.format(generated_dir=generated_dir))
[docs]def validate_remotes_dir(remotes_dir): """ Remotes directory must be defined and not be a regular file. """ if not remotes_dir: abort('Please provide a valid remotes_dir') elif os.path.exists(remotes_dir) and not os.path.isdir(remotes_dir): abort('{remotes_dir} is not a valid directory'.format(remotes_dir=remotes_dir))
[docs]def validate_host(): """ Fabric host_string must be defined. """ if not env.host_string: abort('Please specify a host or a role')
[docs]def validate_all(templates_dir, data_dir, generated_dir, remotes_dir): """ Validate templates_dir, data_dir, generated_dir, remotes_dir, and host. """ validate_templates_dir(templates_dir) validate_data_dir(data_dir) validate_generated_dir(generated_dir) validate_remotes_dir(remotes_dir) validate_host()
[docs]def validate_generate(templates_dir, data_dir, generated_dir): """ Validate templates_dir, data_dir, generated_dir, and host. """ validate_templates_dir(templates_dir) validate_data_dir(data_dir) validate_generated_dir(generated_dir) validate_host()
[docs]def validate_pull(templates_dir, data_dir, remotes_dir): """ Validate templates_dir, data_dir, remotes_dir, and host. """ validate_templates_dir(templates_dir) validate_data_dir(data_dir) validate_remotes_dir(remotes_dir) validate_host()