From 4ece6fa800b0534efe768e7e8ec520dffb0d1b33 Mon Sep 17 00:00:00 2001
From: David Luevano Alvarado <david@luevano.xyz>
Date: Mon, 18 Apr 2022 01:06:14 -0600
Subject: fix pyssg and database errors

fixed md extensions debug line, refactored and fixed read function for database for the case when there is no db file yet
---
 src/pyssg/database.py | 66 ++++++++++++++++++++++++++++-----------------------
 src/pyssg/pyssg.py    |  4 +++-
 2 files changed, 39 insertions(+), 31 deletions(-)

diff --git a/src/pyssg/database.py b/src/pyssg/database.py
index 03eeb73..40e9ca2 100644
--- a/src/pyssg/database.py
+++ b/src/pyssg/database.py
@@ -106,34 +106,40 @@ class Database:
 
 
     def read(self) -> None:
-        if os.path.exists(self.db_path) and os.path.isfile(self.db_path):
-            rows: list[str] = None
-            log.debug('reading db')
-            with open(self.db_path, 'r') as file:
-                rows = file.readlines()
-            log.info('db contains %d rows', len(rows))
-
-            # parse each entry and populate accordingly
-            l: list[str] = None
-            # l=list of values in entry
-            log.debug('parsing rows from db')
-            for i, row in enumerate(rows):
-                log.debug('row %d content: "%s"', i, row)
-                l = tuple(row.strip().split())
-                if len(l) != self.COLUMN_NUM:
-                    log.critical('row doesn\t contain %s columns,'
-                                 ' contains %d elements; row %d content: "%s"',
-                                 self.COLUMN_NUM, len(l), i, row)
-                    sys.exit(1)
-
-                t: list[str] = None
-                if l[3] == '-':
-                    t = []
-                else:
-                    t = l[3].split(',')
-                log.debug('tag content: (%s)', ', '.join(t))
-
-                self.e[l[0]] = (float(l[1]), float(l[2]), t)
-        else:
-            log.error('database file "%s" doesn\'t exist or it\'s not a file')
+        log.debug('reading db')
+        if not os.path.exists(self.db_path):
+            log.warning('"%s" doesn\'t exist, will be'
+                        ' created once process finishes,'
+                        ' ignore if it\'s the first run', self.db_path)
+            return
+
+        if os.path.exists(self.db_path) and not os.path.isfile(self.db_path):
+            log.error('"%s" is not a file"', self.db_path)
             sys.exit(1)
+
+        rows: list[str] = None
+        with open(self.db_path, 'r') as file:
+            rows = file.readlines()
+        log.info('db contains %d rows', len(rows))
+
+        # parse each entry and populate accordingly
+        l: list[str] = None
+        # l=list of values in entry
+        log.debug('parsing rows from db')
+        for i, row in enumerate(rows):
+            log.debug('row %d content: "%s"', i, row)
+            l = tuple(row.strip().split())
+            if len(l) != self.COLUMN_NUM:
+                log.critical('row doesn\t contain %s columns,'
+                             ' contains %d elements; row %d content: "%s"',
+                             self.COLUMN_NUM, len(l), i, row)
+                sys.exit(1)
+
+            t: list[str] = None
+            if l[3] == '-':
+                t = []
+            else:
+                t = l[3].split(',')
+            log.debug('tag content: (%s)', ', '.join(t))
+
+            self.e[l[0]] = (float(l[1]), float(l[2]), t)
diff --git a/src/pyssg/pyssg.py b/src/pyssg/pyssg.py
index 4de80d5..2f0730f 100644
--- a/src/pyssg/pyssg.py
+++ b/src/pyssg/pyssg.py
@@ -111,7 +111,9 @@ def main() -> None:
                                     figureNumberText="Figure"),
                       HighlightExtension(),
                       ChecklistExtension()]
-        log.debug('list of md extensions: (%s)', ', '.join(exts))
+        log.debug('list of md extensions: (%s)',
+                  ', '.join([e if isinstance(e, str) else type(e).__name__
+                             for e in exts]))
         log.debug('initializing markdown parser')
         md: Markdown = Markdown(extensions=exts,
                                 output_format='html5')
-- 
cgit v1.2.3-70-g09d2