Commit 39c7a809 authored by berumuron's avatar berumuron
Browse files

Accept a yaml configuration file

parent 96cd2873
......@@ -153,6 +153,19 @@ $ tree
└── index.html
Finally, you might want to create a `./configuration.yml` file. Four
information are used by the Atom feed, so you might want to declare them:
title: My website
author: Dale Cooper
timezone: Europe/Paris
You can declare as many variables as you want, they all will be accessible in
the article template, uppercased and prepended by `SITE_`.
## Tests
There are some tests (i.e. doctests) that can be run to check that everything
......@@ -5,6 +5,7 @@ import sys
import shutil
import distutils.dir_util
import locale
import yaml
import markdown
......@@ -108,6 +109,24 @@ def main():
# If not, just stop here
# Load the configuration (it can be overidden by a configuration.yml file)
configuration = {
"SITE_URL": "http://localhost",
"SITE_TITLE": "A website",
configuration_path = os.path.join(os.curdir, "configuration.yml")
if os.path.exists(configuration_path):
with open(configuration_path) as conf_file:
conf_data = yaml.load(conf_file)
for key, value in conf_data.items():
site_key = f"SITE_{key.upper()}"
configuration[site_key] = value
if "SITE_AUTHOR" not in configuration:
configuration["SITE_AUTHOR"] = f"{configuration['SITE_TITLE']}'s author"
# List files from ./articles
articles = []
for filename in dir_tree(articles_path):
......@@ -119,7 +138,7 @@ def main():
# We read the article file and initialize an Article from it
article_filepath = os.path.join(articles_path, filename)
with open(article_filepath, "r") as article_file:
article = Article(slug,
article = Article(slug,, configuration=configuration)
# And write them in the ./site folder
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment