Compare commits

..

No commits in common. "a17ae75c593b09c096cd4c4f66ab71e04ac7371c" and "71a05d631c32f95b80cb141e45dbe5f434ebb73e" have entirely different histories.

14 changed files with 48 additions and 144 deletions

View file

@ -1,9 +1,3 @@
## 0.1.0a17 (2025-04-09)
### Fix
- better error message
## 0.1.0a16 (2025-04-04) ## 0.1.0a16 (2025-04-04)
### Fix ### Fix

View file

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

View file

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

@ -4,7 +4,7 @@ requires = ["flit_core >=3.8.0,<4"]
[project] [project]
name = "rougail.user_data_bitwarden" name = "rougail.user_data_bitwarden"
version = "0.1.0a17" version = "0.1.0a16"
authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}] authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}]
readme = "README.md" readme = "README.md"
description = "Rougail user_data Bitwarden" description = "Rougail user_data Bitwarden"

View file

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

View file

@ -1,6 +1,6 @@
{ {
"errors": [ "errors": [
"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\"" "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\""
], ],
"warnings": [] "warnings": []
} }

View file

@ -1,6 +1,6 @@
{ {
"errors": [ "errors": [
"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\"" "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\""
], ],
"warnings": [] "warnings": []
} }

View file

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

View file

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

View file

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

View file

@ -1,22 +0,0 @@
---
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,16 +169,6 @@ def test_dictionaries_5_secret_calc_bw():
_test_dictionaries(test_dir / '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(): def test_dictionaries_8_multi_variable_rbw():
"tests the output" "tests the output"
with raises(DictConsistencyError) as err: with raises(DictConsistencyError) as err: