diff --git a/src/rougail/user_data_questionary/config.py b/src/rougail/user_data_questionary/config.py index 89e122a..f496eda 100644 --- a/src/rougail/user_data_questionary/config.py +++ b/src/rougail/user_data_questionary/config.py @@ -34,8 +34,18 @@ questionary: {% endif %} mandatory: description: Ask values only for mandatories variables without any value + negative_description: Ask values all variables alternative_name: qm default: false + show_secrets: + description: Show secrets instead of obscuring them + negative_description: Obscuring secrets instead of show them + alternative_name: qs + type: boolean + default: + type: variable + variable: __.exporter.show_secrets + optional: true """ return {'name': 'questionary', 'process': 'user data', diff --git a/src/rougail/user_data_questionary/data.py b/src/rougail/user_data_questionary/data.py index 7843116..a6459ab 100644 --- a/src/rougail/user_data_questionary/data.py +++ b/src/rougail/user_data_questionary/data.py @@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA from rougail.object_model import CONVERT_OPTION from rougail.config import RougailConfig from tiramisu.error import ValueOptionError -from questionary import text, select, confirm, Validator, ValidationError, print as qprint +from questionary import text, select, confirm, password, Validator, ValidationError, print as qprint class RougailUserDataQuestionary: def __init__(self, @@ -33,6 +33,13 @@ class RougailUserDataQuestionary: self.config = config if rougailconfig is None: rougailconfig = RougailConfig + user_data = rougailconfig['step.user_data'] + if 'questionary' not in user_data: + user_data.append('questionary') + rougailconfig['step.user_data'] = user_data + user_data = rougailconfig['step.user_data'] + if 'questionary' not in user_data: + raise Exception('questionary is not set in step.user_data') self.rougailconfig = rougailconfig self.errors = [] self.warnings = [] @@ -92,6 +99,8 @@ class RougailUserDataQuestionary: kwargs['choices'] = option.value.list() elif option_type == 'boolean': question_funtion = confirm + elif option_type == 'secret' and not self.rougailconfig['questionary.show_secrets']: + question_funtion = password else: question_funtion = text kwargs['validate'] = RougailValidator