nodes.py: demagify toml nodes

This commit is contained in:
Franzi 2023-07-13 20:28:09 +02:00
parent 70bd7d295d
commit 97307fc6f3
Signed by: kunsi
GPG key ID: 12E3D2136B818350
2 changed files with 28 additions and 3 deletions

21
libs/demagify.py Normal file
View file

@ -0,0 +1,21 @@
import bwpass
def demagify(something, vault):
if isinstance(something, str):
if something.startswith('!bwpass:'):
return bwpass.password(something[8:])
elif something.startswith('!bwpass_attr:'):
identifier, attribute = something[13:].split(':', 1)
return bwpass.attr(identifier, attribute)
elif something.startswith('!decrypt:'):
return vault.decrypt(something[9:])
return something
elif isinstance(something, dict):
return {k:demagify(v, vault) for k,v in something.items()}
elif isinstance(something, list):
return [demagify(i, vault) for i in something]
elif isinstance(something, set):
return {demagify(i, vault) for i in something}
elif isinstance(something, tuple):
return tuple([demagify(i, vault) for i in something])
return something