Read config file.

This commit is contained in:
2023-10-01 20:36:34 +02:00
parent b3abe67b53
commit ec7d574527

View File

@@ -1,10 +1,15 @@
#!/usr/bin/env python #!/usr/bin/env python
import os
import signal import signal
import gi import gi
gi.require_version('Gtk', '3.0') gi.require_version('Gtk', '3.0')
from gi.repository import GLib from gi.repository import GLib
from gi.repository import Gtk from gi.repository import Gtk
import yaml
XDG_CONF_DIR = os.getenv('XDG_CONFIG_HOME', os.path.expanduser('~/.config'))
class GTKPass(Gtk.Window): class GTKPass(Gtk.Window):
@@ -13,16 +18,51 @@ class GTKPass(Gtk.Window):
self.passs = PassStore() self.passs = PassStore()
self.passs.gather_pass_tree() self.passs.gather_pass_tree()
self.make_ui()
def make_ui(self): def make_ui(self):
self.show_all() self.show_all()
class Leaf:
"""A simple class to hold Leaf data"""
def __init__(self, name, path):
self.name = name
self.path = path
def __repr__(self):
return f"Leaf: {self.name}"
class Tree:
"""A class to hold and manipulate leafs/other branches"""
def __init__(self, name=None, path=None):
self.name = name
self.children = []
self.path = path
def __repr__(self):
return f"Tree: {self.name}"
@property
def sorted_children(self):
files = {}
dirs = {}
for i in self.children:
if isinstance(i, Leaf):
files[i.name] = i
else:
dirs[i.name] = i
return ([dirs[x] for x in sorted(dirs)] +
[files[x] for x in sorted(files)])
class PassStore: class PassStore:
"""Password store GUI app""" """Password store GUI app"""
def __init__(self): def __init__(self):
self.store_path = self._get_store_path() self.store_path = self._get_store_path()
self.data = Tree() self.data = Tree()
self.conf = {} self.conf = {}
self._read_config()
def _get_store_path(self): def _get_store_path(self):
path = os.environ.get('$PASSWORD_STORE_DIR') path = os.environ.get('$PASSWORD_STORE_DIR')
@@ -56,6 +96,16 @@ class PassStore:
model.children.append(t) model.children.append(t)
self._gather_pass_tree(t, root, dname) self._gather_pass_tree(t, root, dname)
def _read_config(self):
conf = os.path.join(XDG_CONF_DIR, 'gtkpass.yaml')
try:
with open(conf) as fobj:
self.conf = yaml.safe_load(fobj)
except OSError as e:
print('Warning: There was an error on loading configuration '
'file:', e)
pass
def _check_pass_store(path): def _check_pass_store(path):