diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e69de29 diff --git a/locale/fr/LC_MESSAGES/rougail_user_data_questionary.po b/locale/fr/LC_MESSAGES/rougail_user_data_questionary.po new file mode 100644 index 0000000..905927b --- /dev/null +++ b/locale/fr/LC_MESSAGES/rougail_user_data_questionary.po @@ -0,0 +1,29 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2025-11-06 06:11+0100\n" +"PO-Revision-Date: 2025-11-06 06:11+0100\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 3.7\n" + +#: src/rougail/user_data_questionary/config.py:31 +msgid "Define values interactivly" +msgstr "Définir des valeurs interactivement" + +#: src/rougail/user_data_questionary/config.py:39 +msgid "Ask values only for mandatories variables without any value" +msgstr "Demander des valeurs uniquement pour des variables obligatoires sans valeur" + +#: src/rougail/user_data_questionary/config.py:44 +msgid "Show secrets instead of obscuring them" +msgstr "Afficher les secrets plutôt que des obscurcir." diff --git a/locale/rougail_user_data_questionary.pot b/locale/rougail_user_data_questionary.pot new file mode 100644 index 0000000..6355930 --- /dev/null +++ b/locale/rougail_user_data_questionary.pot @@ -0,0 +1,29 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2025-11-06 06:11+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + + +#: src/rougail/user_data_questionary/config.py:31 +msgid "Define values interactivly" +msgstr "" + +#: src/rougail/user_data_questionary/config.py:39 +msgid "Ask values only for mandatories variables without any value" +msgstr "" + +#: src/rougail/user_data_questionary/config.py:44 +msgid "Show secrets instead of obscuring them" +msgstr "" + diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..d608d4d --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,44 @@ +[build-system] +build-backend = "flit_core.buildapi" +requires = ["flit_core >=3.8.0,<4"] + +[project] +name = "rougail.user_data_questionary" +version = "0.0.0" +authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}] +readme = "README.md" +description = "Rougail user_data questionary" +requires-python = ">=3.11" +license = {file = "LICENSE"} +classifiers = [ + "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", + "Programming Language :: Python", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3", + "Operating System :: OS Independent", + "Natural Language :: English", + "Natural Language :: French", + +] +dependencies = [ + "rougail-base >= 1.1,<2", + "questionary ~= 2.1.0", +] + +[project.urls] +Home = "https://forge.cloud.silique.fr/stove/rougail-user-data-questionary" + +[tool.commitizen] +name = "cz_conventional_commits" +tag_format = "$version" +version_scheme = "pep440" +version_provider = "pep621" +version_files = [ + "src/rougail/user_data_questionary/__version__.py", + "pyproject.toml:version" +] +update_changelog_on_bump = true +changelog_merge_prerelease = true diff --git a/src/rougail/user_data_questionary/__init__.py b/src/rougail/user_data_questionary/__init__.py index 66c1324..52c9e77 100644 --- a/src/rougail/user_data_questionary/__init__.py +++ b/src/rougail/user_data_questionary/__init__.py @@ -1,2 +1,5 @@ from .data import RougailUserDataQuestionary +from .__version__ import __version__ + +RougailUserData = RougailUserDataQuestionary __all__ = ('RougailUserDataQuestionary',) diff --git a/src/rougail/user_data_questionary/__version__.py b/src/rougail/user_data_questionary/__version__.py new file mode 100644 index 0000000..6c8e6b9 --- /dev/null +++ b/src/rougail/user_data_questionary/__version__.py @@ -0,0 +1 @@ +__version__ = "0.0.0" diff --git a/src/rougail/user_data_questionary/cli.py b/src/rougail/user_data_questionary/cli.py index 14ac605..e69de29 100644 --- a/src/rougail/user_data_questionary/cli.py +++ b/src/rougail/user_data_questionary/cli.py @@ -1,35 +0,0 @@ -""" -Cli code for Rougail-user-data-questionary - -Silique (https://www.silique.fr) -Copyright (C) 2024 - -distribued with GPL-2 or later license - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -""" -from .data import RougailUserDataQuestionary - - -def run(rougailconfig, - config, - user_datas, - ): - RougailUserDataQuestionary(config, - rougailconfig=rougailconfig, - ).run() - - -__all__ = ('run',) diff --git a/src/rougail/user_data_questionary/config.py b/src/rougail/user_data_questionary/config.py index f496eda..24ab5ab 100644 --- a/src/rougail/user_data_questionary/config.py +++ b/src/rougail/user_data_questionary/config.py @@ -1,8 +1,6 @@ """ -Config file for Rougail-user-data-questionary - Silique (https://www.silique.fr) -Copyright (C) 2024 +Copyright (C) 2024-2025 distribued with GPL-2 or later license @@ -20,32 +18,33 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA """ -def get_rougail_config(*, - backward_compatibility=True, - ) -> dict: - options = """ + +from .i18n import _ + + +def get_rougail_config( + *, + backward_compatibility=True, +) -> dict: + options = f""" questionary: - description: Define value interactivly + description: {_("Define values interactivly")} disabled: - type: jinja jinja: | - {% if 'questionary' not in step.user_data %} + {{% if step.user_data is not propertyerror and 'questionary' not in step.user_data %}} disabled - {% endif %} + {{% endif %}} + mandatory: - description: Ask values only for mandatories variables without any value - negative_description: Ask values all variables + description: {_("Ask values only for mandatories variables without any value")} alternative_name: qm default: false + show_secrets: - description: Show secrets instead of obscuring them - negative_description: Obscuring secrets instead of show them + description: {_("Show secrets instead of obscuring them")} alternative_name: qs type: boolean - default: - type: variable - variable: __.exporter.show_secrets - optional: true + default: false """ 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 a6459ab..d520393 100644 --- a/src/rougail/user_data_questionary/data.py +++ b/src/rougail/user_data_questionary/data.py @@ -1,35 +1,41 @@ -#!/usr/bin/env python3 """ Silique (https://www.silique.fr) -Copyright (C) 2024 - +Copyright (C) 2024-2025 + distribued with GPL-2 or later license - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software 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, password, Validator, ValidationError, print as qprint +from rougail.tiramisu import CONVERT_OPTION +from rougail.config import RougailConfig +from rougail.error import ExtentionError +from tiramisu.error import ValueOptionError + + class RougailUserDataQuestionary: - def __init__(self, - config: 'Config', - *, - rougailconfig: RougailConfig=None, - ): + interactive_user_datas = True + + def __init__( + self, + config: "Config", + *, + rougailconfig: "RougailConfig" = None, + ): + # this is the tiramisu config object self.config = config if rougailconfig is None: rougailconfig = RougailConfig @@ -39,12 +45,14 @@ class RougailUserDataQuestionary: 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') + raise ExtentionError('questionary is not set in step.user_data') self.rougailconfig = rougailconfig self.errors = [] self.warnings = [] - def run(self): + def run( + self, + ) -> None: self.config.property.read_write() if self.rougailconfig['questionary.mandatory']: current_titles = [] @@ -68,6 +76,17 @@ class RougailUserDataQuestionary: else: self.parse(self.config) self.config.property.read_only() + return {'errors': [], + 'warnings': [], + } + return [ + { + "source": 'Questionary', + "errors": self.errors, + "warnings": self.warnings, + "values": values, + } + ] def parse(self, config, title_level=0): for option in config: @@ -93,6 +112,7 @@ class RougailUserDataQuestionary: 'func': type_obj, } RougailValidator.ismulti = ismulti + ori_default = default if option_type == 'choice': question_funtion = select RougailValidator.default = default @@ -108,11 +128,13 @@ class RougailUserDataQuestionary: if ismulti: kwargs['multiline'] = True if default: - kwargs['default'] = "\n".join(default) + kwargs['default'] = "\n".join([str(d) for d in default]) elif default is not None: + if isinstance(default, (int, float)): + default = str(default) kwargs['default'] = default value = RougailValidator().convert_value(question_funtion(*args, **kwargs).ask(), False) - if isdefault and value == default: + if isdefault and value == ori_default: option.value.reset() else: option.value.set(value) diff --git a/src/rougail/user_data_questionary/i18n.py b/src/rougail/user_data_questionary/i18n.py new file mode 100644 index 0000000..38be47a --- /dev/null +++ b/src/rougail/user_data_questionary/i18n.py @@ -0,0 +1,26 @@ +""" +Silique (https://www.silique.fr) +Copyright (C) 2025 + +This program is free software: you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License as published by the +Free Software Foundation, either version 3 of the License, or (at your +option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +details. + +You should have received a copy of the GNU Lesser General Public License +along with this program. If not, see . +""" + +from gettext import translation +from pathlib import Path + +t = translation( + "rougail_user_data_questionary", str(Path(__file__).parent / "locale"), fallback=True +) + +_ = t.gettext diff --git a/src/rougail/user_data_questionary/locale/fr/LC_MESSAGES/rougail_user_data_questionary.mo b/src/rougail/user_data_questionary/locale/fr/LC_MESSAGES/rougail_user_data_questionary.mo new file mode 100644 index 0000000..31d4d7e Binary files /dev/null and b/src/rougail/user_data_questionary/locale/fr/LC_MESSAGES/rougail_user_data_questionary.mo differ