Added simple debug logging option.

This commit is contained in:
kalzu rekku 2024-10-04 11:57:30 +03:00
parent cf1674735d
commit a6d463da88

View File

@ -7,10 +7,11 @@ The script tracks changes using MD5 hashes and ensures the database
reflects the current state of the markdown file. reflects the current state of the markdown file.
""" """
import os
import sqlite3 import sqlite3
import hashlib import hashlib
import argparse import argparse
import os import logging
from datetime import datetime from datetime import datetime
from typing import List, Tuple, Optional from typing import List, Tuple, Optional
from markdown_it import MarkdownIt from markdown_it import MarkdownIt
@ -154,6 +155,7 @@ class MarkdownProcessor:
def clear_document_content(self, document_id: int) -> None: def clear_document_content(self, document_id: int) -> None:
"""Clear existing content for a document in the database.""" """Clear existing content for a document in the database."""
logging.debug(f"!! DELETING FROM DATABASE, document_id: {document_id}")
self.db_manager.cursor.execute('DELETE FROM headings WHERE document_id = ?', (document_id,)) self.db_manager.cursor.execute('DELETE FROM headings WHERE document_id = ?', (document_id,))
self.db_manager.cursor.execute('DELETE FROM body WHERE document_id = ?', (document_id,)) self.db_manager.cursor.execute('DELETE FROM body WHERE document_id = ?', (document_id,))
@ -162,6 +164,10 @@ class MarkdownProcessor:
parent_stack: List[Tuple[int, int]] = [] # (level, heading_id) parent_stack: List[Tuple[int, int]] = [] # (level, heading_id)
current_heading_id = None current_heading_id = None
for token in tokens: for token in tokens:
content_preview = ' '.join(token.content.split()[:10]) + '...' \
if len(token.content.split()) > 10 else token.content
logging.debug(f"Processing token: {token.type}, content: {content_preview}")
if token.type == 'heading_open': if token.type == 'heading_open':
level = int(token.tag.strip('h')) level = int(token.tag.strip('h'))
content_token = tokens[tokens.index(token) + 1] content_token = tokens[tokens.index(token) + 1]
@ -318,11 +324,7 @@ class TopicReader:
def _fetch_subtopics(self, heading_id: int, parent_level: int) -> List[Tuple[int, int, str]]: def _fetch_subtopics(self, heading_id: int, parent_level: int) -> List[Tuple[int, int, str]]:
""" """
Fetch all subtopics that are children of the given heading. Fetch all subtopics that are children of the given heading.
Args:
heading_id (int): The parent heading ID.
parent_level (int): The level of the parent heading.
Returns: Returns:
List of tuples containing the subtopic's ID, level, and title. List of tuples containing the subtopic's ID, level, and title.
""" """
@ -458,6 +460,7 @@ def main():
topic_title: Optional topic for content selection (fuzzy matching enabled). topic_title: Optional topic for content selection (fuzzy matching enabled).
--bootstrap: If provided, generates markdown calendar for the current year and loads it to the database. --bootstrap: If provided, generates markdown calendar for the current year and loads it to the database.
--ls: If provided, lists all available headings. --ls: If provided, lists all available headings.
--html: If provided, will produce {filename}.html file along the markdown file.
""" """
# Set up command-line argument parsing # Set up command-line argument parsing
parser = argparse.ArgumentParser(description='Process markdown file and optionally select a topic.') parser = argparse.ArgumentParser(description='Process markdown file and optionally select a topic.')
@ -467,7 +470,12 @@ def main():
parser.add_argument('--bootstrap', action='store_true', help='Generate markdown calendar for the current year and load it to the database.') parser.add_argument('--bootstrap', action='store_true', help='Generate markdown calendar for the current year and load it to the database.')
parser.add_argument('--ls', action='store_true', help='List all available headings.') parser.add_argument('--ls', action='store_true', help='List all available headings.')
parser.add_argument('--html', action='store_true', help='Generate an HTML version of the output') parser.add_argument('--html', action='store_true', help='Generate an HTML version of the output')
parser.add_argument('--debug', action='store_true', help='Enable debug printing')
args = parser.parse_args() args = parser.parse_args()
# Set up logging
logging.basicConfig(level=logging.DEBUG if args.debug else logging.INFO)
# Use the provided or default file paths # Use the provided or default file paths
markdown_file = args.markdown markdown_file = args.markdown