diff options
| author | user@node5.net <user@node5.net> | 2026-05-12 18:50:37 +0200 |
|---|---|---|
| committer | user@node5.net <user@node5.net> | 2026-05-12 18:50:37 +0200 |
| commit | 5a4bcbe84adb3aac980451259819f3029d7499c8 (patch) | |
| tree | 16f7befb7f752abb41b923c44eaaa4247fe16b15 /src/blog_node5_net.py | |
| parent | 1d81f5dbf63d361c76744fcd759904c4bf616fcc (diff) | |
Nixify app: Add flake, load content from dynamic path
- Package with flake - Load content from a path given with an environment variable, with the intention of loading this from a derivation
Diffstat (limited to 'src/blog_node5_net.py')
| -rw-r--r-- | src/blog_node5_net.py | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/src/blog_node5_net.py b/src/blog_node5_net.py index a8961d8..7da959c 100644 --- a/src/blog_node5_net.py +++ b/src/blog_node5_net.py @@ -5,6 +5,7 @@ import signal import sys import typing import urllib +import pathlib import flask import markdown @@ -50,10 +51,11 @@ stream_handler.setFormatter(CustomFormatter()) logger.root.addHandler(stream_handler) logger.info(f"Debug: {'en' if debug else 'dis'}abled") -with open(os.path.join('configs', 'config.yml'), 'r') as file: - config = yaml.safe_load(file.read()) +content_root_path = os.environ.get("CONTENT_ROOT_PATH") +if not content_root_path: + sys.exit("ERROR: required environment variable CONTENT_ROOT_PATH is not set") -article_generator = article.ArticleGenerator(os.path.join(config['site_root_folder_path'], 'articles')) +article_generator = article.ArticleGenerator(os.path.join(content_root_path, 'articles')) def get_articles() -> article.Folder: @@ -70,10 +72,11 @@ if len(sys.argv) > 1 and sys.argv[1] == 'validate': logger.info('OK') exit(0) -app = flask.Flask(__name__, template_folder=os.path.join('..', config['site_root_folder_path'], 'templates'), - static_folder=os.path.join('..', config['site_root_folder_path'], 'static'), static_url_path='') - -with open(os.path.join(config['site_root_folder_path'], 'motd.md'), 'r') as file: +template_path = os.path.join('..', content_root_path, 'templates') +logger.debug(f"template path: {template_path}") +app = flask.Flask(__name__, template_folder=template_path, + static_folder=os.path.join('..', content_root_path, 'static'), static_url_path='') +with open(os.path.join(content_root_path, 'motd.md'), 'r') as file: motd_list = [markupsafe.Markup(markdown.markdown(line)) for line in file.readlines()] folders_by_url: typing.Dict[str, article.Folder] = {} @@ -107,7 +110,7 @@ def inject_common(): 'insert_sql_pretty': insert_sql_pretty, 'comments_sql': markupsafe.Markup(markdown.markdown(sql_pretty)), 'comments': comments_formatted, - 'title': config['site_root_folder_path'], + 'title': pathlib.Path(content_root_path).name, 'motd': random.choice(motd_list) } @@ -203,3 +206,11 @@ def signal_handler(signum, frame): signal.signal(signal.SIGHUP, signal_handler) + + +def main(): + global app + app.run() + +if __name__ == '__main__': + main() |
