blob: 72d94d41e0e7f54ef37178d95d3a5c1f07d6bdc7 [file] [log] [blame]
#!/usr/bin/env python
r"""
This module provides valuable argument processing functions like
gen_get_options and sprint_args.
"""
import sys
import os
import gen_print as gp
###############################################################################
def svalid_value(var_value,
invalid_values=[],
valid_values=[],
var_name=""):
r"""
Return an empty string if var_value is a valid value. Otherwise, return
an error string.
Description of arguments:
var_value The value being validated.
invalid_values A list of invalid values. If var_value is
equal to any of these, it is invalid.
Note that if you specify anything for
invalid_values (below), the valid_values
list is not even processed.
valid_values A list of invalid values. var_value must
be equal to one of these values to be
considered valid.
var_name The name of the variable whose value is
passed in var_value. This parameter is
normally unnecessary as this function can
figure out the var_name. This is provided
for Robot callers. In this scenario, we
are unable to get the variable name
ourselves.
"""
success_message = ""
error_message = ""
stack_frame_ix = 3
len_valid_values = len(valid_values)
len_invalid_values = len(invalid_values)
if len_valid_values > 0 and len_invalid_values > 0:
error_message += "Programmer error - You must provide either an" +\
" invalid_values list or a valid_values" +\
" list but NOT both.\n" +\
gp.sprint_var(invalid_values) +\
gp.sprint_var(valid_values)
return error_message
show_blanks = 1
if len_valid_values > 0:
# Processing the valid_values list.
if var_value in valid_values:
return success_message
if var_name == "":
var_name = gp.get_arg_name(0, 1, stack_frame_ix)
error_message += "The following variable has an invalid" +\
" value:\n" +\
gp.sprint_varx(var_name, var_value, show_blanks) +\
"\nIt must be one of the following values:\n" +\
gp.sprint_varx("valid_values", valid_values,
show_blanks)
return error_message
if len_invalid_values == 0:
# Assign default value.
invalid_values = [""]
# Assertion: We have an invalid_values list. Processing it now.
if var_value not in invalid_values:
return success_message
if var_name == "":
var_name = gp.get_arg_name(0, 1, stack_frame_ix)
error_message += "The following variable has an invalid value:\n" +\
gp.sprint_varx(var_name, var_value, show_blanks) +\
"\nIt must NOT be one of the following values:\n" +\
gp.sprint_varx("invalid_values", invalid_values,
show_blanks)
return error_message
###############################################################################
###############################################################################
def valid_value(var_value,
invalid_values=[],
valid_values=[],
var_name=""):
r"""
Return True if var_value is a valid value. Otherwise, return False and
print an error message to stderr.
Description of arguments:
(See description of arguments for svalid_value (above)).
"""
error_message = svalid_value(var_value, invalid_values, valid_values,
var_name)
if not error_message == "":
gp.print_error_report(error_message)
return False
return True
###############################################################################
###############################################################################
def svalid_integer(var_value,
var_name=""):
r"""
Return an empty string if var_value is a valid integer. Otherwise, return
an error string.
Description of arguments:
var_value The value being validated.
var_name The name of the variable whose value is
passed in var_value. This parameter is
normally unnecessary as this function can
figure out the var_name. This is provided
for Robot callers. In this scenario, we
are unable to get the variable name
ourselves.
"""
success_message = ""
error_message = ""
try:
if type(int(str(var_value), 0)) is int:
return success_message
except ValueError:
pass
# If we get to this point, the validation has failed.
if var_name is "":
stack_index = 3
var_name = gp.get_arg_name(0, 1, stack_index)
show_blanks = 1
error_message += "Invalid integer value:\n" +\
gp.sprint_varx(var_name, var_value, show_blanks)
return error_message
###############################################################################
###############################################################################
def valid_integer(var_value,
var_name=""):
r"""
Return True if var_value is a valid integer. Otherwise, return False and
print an error message to stderr.
Description of arguments:
(See description of arguments for svalid_value (above)).
"""
error_message = svalid_integer(var_value, var_name)
if not error_message == "":
gp.print_error_report(error_message)
return False
return True
###############################################################################
###############################################################################
def svalid_dir_path(var_value,
var_name=""):
r"""
Return an empty string if var_value is a valid directory path. Otherwise,
return an error string.
Description of arguments:
var_value The value being validated.
var_name The name of the variable whose value is
passed in var_value. This parameter is
normally unnecessary as this function can
figure out the var_name. This is provided
for Robot callers. In this scenario, we
are unable to get the variable name
ourselves.
"""
error_message = ""
if not os.path.isdir(str(var_value)):
if var_name is "":
stack_index = 3
var_name = gp.get_arg_name(0, 1, stack_index)
error_message += "The following directory does not exist:\n" +\
gp.sprint_varx(var_name, var_value)
return error_message
###############################################################################
###############################################################################
def valid_dir_path(var_value,
var_name=""):
r"""
Return True if var_value is a valid integer. Otherwise, return False and
print an error message to stderr.
Description of arguments:
(See description of arguments for svalid_value (above)).
"""
error_message = svalid_dir_path(var_value, var_name)
if not error_message == "":
gp.print_error_report(error_message)
return False
return True
###############################################################################
###############################################################################
def svalid_file_path(var_value,
var_name=""):
r"""
Return an empty string if var_value is a valid file path. Otherwise,
return an error string.
Description of arguments:
var_value The value being validated.
var_name The name of the variable whose value is
passed in var_value. This parameter is
normally unnecessary as this function can
figure out the var_name. This is provided
for Robot callers. In this scenario, we
are unable to get the variable name
ourselves.
"""
error_message = ""
if not os.path.isfile(str(var_value)):
if var_name is "":
stack_index = 3
var_name = gp.get_arg_name(0, 1, stack_index)
error_message += "Invalid file (does not exist):\n" +\
gp.sprint_varx(var_name, var_value)
return error_message
###############################################################################
###############################################################################
def valid_file_path(var_value,
var_name=""):
r"""
Return True if var_value is a valid integer. Otherwise, return False and
print an error message to stderr.
Description of arguments:
(See description of arguments for svalid_value (above)).
"""
error_message = svalid_file_path(var_value, var_name)
if not error_message == "":
gp.print_error_report(error_message)
return False
return True
###############################################################################