Read config file.
This commit is contained in:
50
gtkpass.py
50
gtkpass.py
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user