Add simplistic reloading to notes rendering script.
This commit is contained in:
parent
399f00a54f
commit
9231013ea9
@ -1,5 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import time
|
||||||
import json
|
import json
|
||||||
import html
|
import html
|
||||||
import logging
|
import logging
|
||||||
@ -7,6 +8,9 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
import traceback
|
||||||
|
|
||||||
|
import inotify.adapters
|
||||||
|
|
||||||
import org_rw
|
import org_rw
|
||||||
from org_rw import OrgTime, dom, Link
|
from org_rw import OrgTime, dom, Link
|
||||||
@ -22,6 +26,24 @@ EXTENSIONS = [
|
|||||||
MIN_HIDDEN_HEADLINE_LEVEL = 2
|
MIN_HIDDEN_HEADLINE_LEVEL = 2
|
||||||
INDEX_ID = "ea48ec1d-f9d4-4fb7-b39a-faa7b6e2ba95"
|
INDEX_ID = "ea48ec1d-f9d4-4fb7-b39a-faa7b6e2ba95"
|
||||||
|
|
||||||
|
MONITORED_EVENT_TYPES = (
|
||||||
|
'IN_CREATE',
|
||||||
|
# 'IN_MODIFY',
|
||||||
|
'IN_CLOSE_WRITE',
|
||||||
|
'IN_DELETE',
|
||||||
|
'IN_MOVED_FROM',
|
||||||
|
'IN_MOVED_TO',
|
||||||
|
'IN_DELETE_SELF',
|
||||||
|
'IN_MOVE_SELF',
|
||||||
|
)
|
||||||
|
|
||||||
|
ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
|
|
||||||
|
STATIC_PATH = os.path.join(ROOT_DIR, 'static')
|
||||||
|
|
||||||
|
def is_git_path(path):
|
||||||
|
return any([chunk == ".git" for chunk in os.path.split(path)])
|
||||||
|
|
||||||
def load_all(top_dir_relative):
|
def load_all(top_dir_relative):
|
||||||
top = os.path.abspath(top_dir_relative)
|
top = os.path.abspath(top_dir_relative)
|
||||||
|
|
||||||
@ -47,11 +69,10 @@ def load_all(top_dir_relative):
|
|||||||
logging.info("Collected {} files".format(len(docs)))
|
logging.info("Collected {} files".format(len(docs)))
|
||||||
return docs
|
return docs
|
||||||
|
|
||||||
|
def regen_all(src_top, dest_top, docs=None):
|
||||||
def main(src_top, dest_top):
|
|
||||||
docs = load_all(src_top)
|
|
||||||
files_generated = 0
|
files_generated = 0
|
||||||
|
|
||||||
|
docs = load_all(src_top)
|
||||||
doc_to_headline_remapping = {}
|
doc_to_headline_remapping = {}
|
||||||
|
|
||||||
os.makedirs(dest_top, exist_ok=True)
|
os.makedirs(dest_top, exist_ok=True)
|
||||||
@ -183,6 +204,34 @@ def main(src_top, dest_top):
|
|||||||
logging.info("Generated {} files".format(files_generated))
|
logging.info("Generated {} files".format(files_generated))
|
||||||
|
|
||||||
|
|
||||||
|
def main(src_top, dest_top):
|
||||||
|
notifier = inotify.adapters.InotifyTrees([src_top, STATIC_PATH])
|
||||||
|
|
||||||
|
## Initial load
|
||||||
|
t0 = time.time()
|
||||||
|
|
||||||
|
docs = regen_all(src_top, dest_top)
|
||||||
|
logging.info("Initial load completed in {:.2f}s".format(time.time() - t0))
|
||||||
|
|
||||||
|
## Updating
|
||||||
|
for event in notifier.event_gen(yield_nones=False):
|
||||||
|
(ev, types, directory, file) = event
|
||||||
|
if not any([type in MONITORED_EVENT_TYPES for type in types]):
|
||||||
|
continue
|
||||||
|
if is_git_path(directory):
|
||||||
|
continue
|
||||||
|
filepath = os.path.join(directory, file)
|
||||||
|
print("CHANGED: {}".format(filepath))
|
||||||
|
t0 = time.time()
|
||||||
|
try:
|
||||||
|
docs = regen_all(src_top, dest_top, docs)
|
||||||
|
except:
|
||||||
|
logging.error(traceback.format_exc())
|
||||||
|
logging.error("Loading new templates failed 😿")
|
||||||
|
continue
|
||||||
|
logging.info("Updated all in {:.2f}s".format(time.time() - t0))
|
||||||
|
|
||||||
|
|
||||||
def print_tree(tree, indentation=0):
|
def print_tree(tree, indentation=0):
|
||||||
return
|
return
|
||||||
for element in tree:
|
for element in tree:
|
||||||
|
Loading…
Reference in New Issue
Block a user