aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruser@node5.net <user@node5.net>2026-06-07 17:14:19 +0200
committeruser@node5.net <user@node5.net>2026-06-07 17:14:19 +0200
commitd4c5687ccdcc899db177bf240b6da944b068c566 (patch)
tree4337ccc713c183f59e4f36e09cc568a79974a30e
parent087be07f9638c44d28167294e6297299431303c6 (diff)
environment variable - rework to only point to articles, bake in site files
Bake site files into the nix package
-rw-r--r--flake.nix14
-rw-r--r--src/blog_node5_net.py17
2 files changed, 24 insertions, 7 deletions
diff --git a/flake.nix b/flake.nix
index f6f87b7..67a92bc 100644
--- a/flake.nix
+++ b/flake.nix
@@ -26,7 +26,7 @@
# Returns an attribute set that can be passed to `buildPythonPackage`.
attrs = project.renderers.buildPythonPackage { inherit python; };
- pkg = python.pkgs.buildPythonPackage (attrs // {
+ py_pkg = python.pkgs.buildPythonPackage (attrs // {
meta = {
description = "Blog backend for blog.node5.net";
homepage = "https://blog.node5.net/Blog%20meta/";
@@ -35,6 +35,18 @@
};
propagatedBuildInputs = (attrs.propagatedBuildInputs or []) ++ [ pkgs.git ]; # Make git binary available
});
+
+ # Add missing templates and static content, that wasn't auto discovered by the python build process
+ pkg = pkgs.stdenv.mkDerivation {
+ name = "blog.node5.net";
+ src = py_pkg;
+ meta = py_pkg.meta;
+ installPhase = ''
+ mkdir -p $out/${python.sitePackages}/blog.node5.net/
+ cp -r ${py_pkg}/* $out/
+ cp -r ${./blog.node5.net}/* $out/${python.sitePackages}/blog.node5.net/
+ '';
+ };
in
{
packages.x86_64-linux.default = pkg;
diff --git a/src/blog_node5_net.py b/src/blog_node5_net.py
index f41f1d1..da5b470 100644
--- a/src/blog_node5_net.py
+++ b/src/blog_node5_net.py
@@ -51,9 +51,12 @@ stream_handler.setFormatter(CustomFormatter())
logger.root.addHandler(stream_handler)
logger.info(f"Debug: {'en' if debug else 'dis'}abled")
-content_root_path = os.environ["CONTENT_ROOT_PATH"] if "CONTENT_ROOT_PATH" in os.environ else './blog.node5.net/'
+articles_path = os.environ["ARTICLES_PATH"] if "ARTICLES_PATH" in os.environ else './blog.node5.net/articles/'
+site_files_path = os.environ["SITE_FILES_PATH"] if "SITE_FILES_PATH" in os.environ else './blog.node5.net/'
+logger.debug(f'articles_path: {articles_path}')
+logger.debug(f'site_files_path: {site_files_path}')
-article_generator = article.ArticleGenerator(os.path.join(content_root_path, 'articles'))
+article_generator = article.ArticleGenerator(articles_path)
def get_articles() -> article.Folder:
@@ -70,11 +73,11 @@ if len(sys.argv) > 1 and sys.argv[1] == 'validate':
logger.info('OK')
exit(0)
-template_path = os.path.join(os.path.abspath(content_root_path), 'templates')
+template_path = os.path.join(os.path.abspath(site_files_path), 'templates')
logger.debug(f"template path: {template_path}")
app = flask.Flask(__name__, template_folder=template_path,
- static_folder=os.path.join(os.path.abspath(content_root_path), 'static'), static_url_path='')
-with open(os.path.join(content_root_path, 'motd.md'), 'r') as file:
+ static_folder=os.path.join(os.path.abspath(site_files_path), 'static'), static_url_path='')
+with open(os.path.join(site_files_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': pathlib.Path(content_root_path).name,
+ 'title': pathlib.Path(site_files_path).name,
'motd': random.choice(motd_list)
}
@@ -191,6 +194,8 @@ def register_urls(folder: article.Folder):
def load_articles():
logger.info('Loading articles')
articles = get_articles()
+ if not articles.articles:
+ logger.warning(f"No articles loaded, path: {articles_path}")
register_urls(articles)