fix: better error message

This commit is contained in:
egarette@silique.fr 2025-04-09 14:20:56 +02:00
parent 71a05d631c
commit 54bdf4861c
12 changed files with 137 additions and 47 deletions

View file

@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2025-02-17 09:25+0100\n"
"PO-Revision-Date: 2025-02-17 09:28+0100\n"
"POT-Creation-Date: 2025-04-09 14:13+0200\n"
"PO-Revision-Date: 2025-04-09 14:14+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: fr\n"
@ -20,15 +20,24 @@ msgstr ""
msgid "\"bitwarden\" is not set in step.user_data"
msgstr "\"bitwarden\" n'est pas dans step.user_data"
#: src/rougail/user_data_bitwarden/data.py:83
msgid "please unlock Bitwarden password database"
msgstr "veuillez déverrouiller la base de donnée de mot de passe Bitwarden"
#: src/rougail/user_data_bitwarden/data.py:74
msgid "\"rbw\" or \"bw\""
msgstr "\"rbw\" ou \"bw\""
#: src/rougail/user_data_bitwarden/data.py:84
msgid "cannot find Bitwarden command (rbw or bw) please install it"
msgstr "ne peut trouver la commande Bitwarden (rbw ou bw) veuillez l'installer"
#: src/rougail/user_data_bitwarden/data.py:76
msgid "\"{0}\""
msgstr "\"{0}\""
#: src/rougail/user_data_bitwarden/data.py:126
#: src/rougail/user_data_bitwarden/data.py:78
msgid "please unlock Bitwarden password database with {0}"
msgstr ""
"veuillez déverrouiller la base de donnée de mot de passe Bitwarden avec {0}"
#: src/rougail/user_data_bitwarden/data.py:79
msgid "cannot find Bitwarden command {0} please install it"
msgstr "ne peut trouver la commande Bitwarden {0} veuillez l'installer"
#: src/rougail/user_data_bitwarden/data.py:153
msgid ""
"the value for \"{0}\" at index {1} is already set while it should be filled "
"in by Bitwarden"
@ -36,7 +45,7 @@ msgstr ""
"la valeur de \"{0}\" à l'index {1} est déjà renseigné alors que celle doit "
"devrait être renseigné par Bitwarden"
#: src/rougail/user_data_bitwarden/data.py:128
#: src/rougail/user_data_bitwarden/data.py:155
msgid ""
"the value for \"{0}\" is already set while it should be filled in by "
"Bitwarden"
@ -44,32 +53,46 @@ msgstr ""
"la valeur de \"{0}\" est déjà renseignée alors que celle doit devrait être "
"renseignée par Bitwarden"
#: src/rougail/user_data_bitwarden/data.py:157
#: src/rougail/user_data_bitwarden/data.py:185
msgid "the default value for \"{0}\" must be the Bitwarden item name"
msgstr ""
"la valeur par défaut pour \"{0}\" doit être un nom d'élément de Bitwarden"
#: src/rougail/user_data_bitwarden/data.py:166
#: src/rougail/user_data_bitwarden/data.py:198
msgid "cannot execute the \"{0}\" commandline from Bitwarden for \"{1}\": {2}"
msgstr ""
"ne peut exécuter la ligne de commande \"{0}\" pour Bitwarden pour \"{1}\": "
"{2}"
#: src/rougail/user_data_bitwarden/data.py:169
msgid "cannot find {0} \"{1}\" from Bitwarden for \"{2}\""
msgstr "ne peut trouver {0} \"{1}\" pour Bitwarden pour \"{2}\""
#: src/rougail/user_data_bitwarden/data.py:201
msgid "item \"{0}\" in Bitwarden is not found for \"{1}\""
msgstr "l'élément \"{0}\" dans Bitwarden n'est pas trouvé pour \"{1}\""
#: src/rougail/user_data_bitwarden/data.py:176
msgid ""
"several items found with name \"{0}\" from Bitwarden for \"{1}\": \"{2}\""
#: src/rougail/user_data_bitwarden/data.py:208
msgid "several items found with name \"{0}\" in Bitwarden for \"{1}\": \"{2}\""
msgstr ""
"plusieurs éléments trouvés avec le nom \"{0}\" pour Bitwarden pour \"{1}\": "
"plusieurs éléments trouvés avec le nom \"{0}\" dans Bitwarden pour \"{1}\": "
"\"{2}\""
#: src/rougail/user_data_bitwarden/data.py:186
#: src/rougail/user_data_bitwarden/data.py:219
msgid "unexpected datas \"{0}\" from Bitwarden for \"{1}\": {2}"
msgstr "données inattendues \"{0}\" pour Bitwarden pour \"{1}\": {2}"
#: src/rougail/user_data_bitwarden/data.py:224
msgid "password"
msgstr "de mot de passe"
#: src/rougail/user_data_bitwarden/data.py:226
msgid "username"
msgstr "de nom d'utilisateur"
#: src/rougail/user_data_bitwarden/data.py:227
msgid "item \"{0}\" in Bitwarden has no {1} for \"{2}\""
msgstr "l'élément \"{0}\" dans Bitwarden n'a pas {1} for \"{2}\""
#~ msgid "cannot find {0} \"{1}\" from Bitwarden for \"{2}\""
#~ msgstr "ne peut trouver {0} \"{1}\" pour Bitwarden pour \"{2}\""
#~ msgid ""
#~ "only \"unix_user\" or \"secret\" variable type can have \"bitwarden\" "
#~ "attribute, but \"{0}\" has type \"{1}\""

View file

@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2025-02-17 09:28+0100\n"
"POT-Creation-Date: 2025-04-09 14:14+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -19,39 +19,59 @@ msgstr ""
msgid "\"bitwarden\" is not set in step.user_data"
msgstr ""
#: src/rougail/user_data_bitwarden/data.py:83
msgid "please unlock Bitwarden password database"
#: src/rougail/user_data_bitwarden/data.py:74
msgid "\"rbw\" or \"bw\""
msgstr ""
#: src/rougail/user_data_bitwarden/data.py:84
msgid "cannot find Bitwarden command (rbw or bw) please install it"
#: src/rougail/user_data_bitwarden/data.py:76
msgid "\"{0}\""
msgstr ""
#: src/rougail/user_data_bitwarden/data.py:126
#: src/rougail/user_data_bitwarden/data.py:78
msgid "please unlock Bitwarden password database with {0}"
msgstr ""
#: src/rougail/user_data_bitwarden/data.py:79
msgid "cannot find Bitwarden command {0} please install it"
msgstr ""
#: src/rougail/user_data_bitwarden/data.py:153
msgid "the value for \"{0}\" at index {1} is already set while it should be filled in by Bitwarden"
msgstr ""
#: src/rougail/user_data_bitwarden/data.py:128
#: src/rougail/user_data_bitwarden/data.py:155
msgid "the value for \"{0}\" is already set while it should be filled in by Bitwarden"
msgstr ""
#: src/rougail/user_data_bitwarden/data.py:157
#: src/rougail/user_data_bitwarden/data.py:185
msgid "the default value for \"{0}\" must be the Bitwarden item name"
msgstr ""
#: src/rougail/user_data_bitwarden/data.py:166
#: src/rougail/user_data_bitwarden/data.py:198
msgid "cannot execute the \"{0}\" commandline from Bitwarden for \"{1}\": {2}"
msgstr ""
#: src/rougail/user_data_bitwarden/data.py:169
msgid "cannot find {0} \"{1}\" from Bitwarden for \"{2}\""
#: src/rougail/user_data_bitwarden/data.py:201
msgid "item \"{0}\" in Bitwarden is not found for \"{1}\""
msgstr ""
#: src/rougail/user_data_bitwarden/data.py:176
msgid "several items found with name \"{0}\" from Bitwarden for \"{1}\": \"{2}\""
#: src/rougail/user_data_bitwarden/data.py:208
msgid "several items found with name \"{0}\" in Bitwarden for \"{1}\": \"{2}\""
msgstr ""
#: src/rougail/user_data_bitwarden/data.py:186
#: src/rougail/user_data_bitwarden/data.py:219
msgid "unexpected datas \"{0}\" from Bitwarden for \"{1}\": {2}"
msgstr ""
#: src/rougail/user_data_bitwarden/data.py:224
msgid "password"
msgstr ""
#: src/rougail/user_data_bitwarden/data.py:226
msgid "username"
msgstr ""
#: src/rougail/user_data_bitwarden/data.py:227
msgid "item \"{0}\" in Bitwarden has no {1} for \"{2}\""
msgstr ""

View file

@ -198,22 +198,31 @@ class RougailUserDataBitwarden:
self.errors.append(_('cannot execute the "{0}" commandline from Bitwarden for "{1}": {2}').format(self.bitwarden_command_line, path, exc))
return None, None
if not data:
self.errors.append(_('cannot find {0} "{1}" from Bitwarden for "{2}"').format(type_, key_bitwarden, path))
self.errors.append(_('item "{0}" in Bitwarden is not found for "{1}"').format(key_bitwarden, path))
return None, None
if len(data) != 1:
names = [d["name"] for d in data]
if allow_multiple:
ret = []
return names, [self.get_value(key_bitwarden, path, type_, d) for d in data]
self.errors.append(_('several items found with name "{0}" from Bitwarden for "{1}": "{2}"').format(key_bitwarden, path, "\", \"".join(names)))
self.errors.append(_('several items found with name "{0}" in Bitwarden for "{1}": "{2}"').format(key_bitwarden, path, "\", \"".join(names)))
return None, None
return data[0]['name'], self.get_value(key_bitwarden, path, type_, data[0])
def get_value(self, key_bitwarden: str, path: str, type_: str, data: dict) -> str:
try:
if type_ == 'secret':
return data['login']['password']
return data['login']['username']
value = data['login']['password']
else:
value = data['login']['username']
except Exception as exc:
self.errors.append(_('unexpected datas "{0}" from Bitwarden for "{1}": {2}').format(key_bitwarden, path, exc))
return None
value = None
else:
if value is None:
if type_ == 'secret':
bw_type = _('password')
else:
bw_type = _('username')
self.errors.append(_('item "{0}" in Bitwarden has no {1} for "{2}"').format(key_bitwarden, bw_type, path))
return value

View file

@ -1,6 +1,6 @@
{
"errors": [
"cannot find secret \"1_secret_unknown - environment - service - user\" from Bitwarden for \"rougail.secret\""
"item \"1_secret_unknown - environment - service - user\" in Bitwarden is not found for \"rougail.secret\""
],
"warnings": []
}
}

View file

@ -1,6 +1,6 @@
{
"errors": [
"several items found with name \"4_several_secrets - environment - service - user\" from Bitwarden for \"rougail.secret\": \"4_several_secrets - environment - service - user_1\", \"4_several_secrets - environment - service - user_2\""
"several items found with name \"4_several_secrets - environment - service - user\" in Bitwarden for \"rougail.secret\": \"4_several_secrets - environment - service - user_1\", \"4_several_secrets - environment - service - user_2\""
],
"warnings": []
}

View file

@ -1,6 +1,6 @@
{
"errors": [
"several items found with name \"3_leadership_secret - ENVIRONMENT - SERVICE - USER\" from Bitwarden for \"rougail.secret\": \"3_leadership_secret - environment - service - user_1\", \"3_leadership_secret - environment - service - user_2\""
"several items found with name \"3_leadership_secret - ENVIRONMENT - SERVICE - USER\" in Bitwarden for \"rougail.secret\": \"3_leadership_secret - environment - service - user_1\", \"3_leadership_secret - environment - service - user_2\""
],
"warnings": []
}

View file

@ -0,0 +1,6 @@
{
"errors": [
"item \"6_no_username - environment - service - user_1\" in Bitwarden has no username for \"rougail.username\""
],
"warnings": []
}

View file

@ -0,0 +1,4 @@
{
"rougail.username": null,
"rougail.secret": "ET6RrpdZv5bNZu"
}

View file

@ -1,4 +0,0 @@
{
"errors": [],
"warnings": []
}

View file

@ -0,0 +1,22 @@
---
version: 1.1
username:
description: the username
type: unix_user
secret_manager:
host: test
project: 6_no_username
environment: environment
service: service
user: user_1
secret:
description: the secret
type: secret
secret_manager:
host: test
project: 6_no_username
environment: environment
service: service
user: user_1

View file

@ -169,6 +169,16 @@ def test_dictionaries_5_secret_calc_bw():
_test_dictionaries(test_dir / '5_secret_calc', 'bw')
def test_dictionaries_6_no_username_rbw():
"tests the output"
_test_dictionaries(test_dir / '6_no_username', 'rbw')
def test_dictionaries_6_no_username_bw():
"tests the output"
_test_dictionaries(test_dir / '6_no_username', 'bw')
def test_dictionaries_8_multi_variable_rbw():
"tests the output"
with raises(DictConsistencyError) as err: