summaryrefslogtreecommitdiff
path: root/src/pyssg/builder.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/pyssg/builder.py')
-rw-r--r--src/pyssg/builder.py32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/pyssg/builder.py b/src/pyssg/builder.py
index 84494da..130062e 100644
--- a/src/pyssg/builder.py
+++ b/src/pyssg/builder.py
@@ -4,8 +4,8 @@ from copy import deepcopy
from operator import itemgetter
from jinja2 import Environment, Template
from markdown import Markdown
+from configparser import ConfigParser
-from .configuration import Configuration
from .database import Database
from .parser import MDParser
from .page import Page
@@ -13,11 +13,11 @@ from .discovery import get_file_list, get_dir_structure
class Builder:
- def __init__(self, config: Configuration,
+ def __init__(self, config: ConfigParser,
env: Environment,
db: Database,
md: Markdown):
- self.config: Configuration = config
+ self.config: ConfigParser = config
self.env: Environment = env
self.db: Database = db
self.md: Markdown = md
@@ -33,15 +33,19 @@ class Builder:
def build(self) -> None:
- self.dirs = get_dir_structure(self.config.src, ['templates'])
- self.md_files = get_file_list(self.config.src, ['.md'], ['templates'])
- self.html_files = get_file_list(self.config.src, ['.html'], ['templates'])
+ self.dirs = get_dir_structure(self.config.get('path', 'src'),
+ ['templates'])
+ self.md_files = get_file_list(self.config.get('path', 'src'),
+ ['.md'],
+ ['templates'])
+ self.html_files = get_file_list(self.config.get('path', 'src'),
+ ['.html'],
+ ['templates'])
self.__create_dir_structure()
self.__copy_html_files()
- parser: MDParser = MDParser(self.config.src,
- self.md_files,
+ parser: MDParser = MDParser(self.md_files,
self.config,
self.db,
self.md)
@@ -69,7 +73,7 @@ class Builder:
# for the dir structure,
# doesn't matter if the dir already exists
try:
- os.makedirs(os.path.join(self.config.dst, d))
+ os.makedirs(os.path.join(self.config.get('path', 'dst'), d))
except FileExistsError:
pass
@@ -79,18 +83,18 @@ class Builder:
dst_file: str = None
for f in self.html_files:
- src_file = os.path.join(self.config.src, f)
- dst_file = os.path.join(self.config.dst, f)
+ src_file = os.path.join(self.config.get('path', 'src'), f)
+ dst_file = os.path.join(self.config.get('path', 'dst'), f)
# only copy files if they have been modified (or are new)
- if self.db.update(src_file, remove=f'{self.config.src}/'):
+ if self.db.update(src_file, remove=f'{self.config.get("path", "src")}/'):
shutil.copy2(src_file, dst_file)
def __render_articles(self) -> None:
article_vars: dict = deepcopy(self.common_vars)
# check if only updated should be created
- if self.config.force:
+ if self.config.getboolean('other', 'force'):
for p in self.all_pages:
article_vars['page'] = p
self.__render_template("page.html",
@@ -132,5 +136,5 @@ class Builder:
template: Template = self.env.get_template(template_name)
content: str = template.render(**template_vars)
- with open(os.path.join(self.config.dst, file_name), 'w') as f:
+ with open(os.path.join(self.config.get('path', 'dst'), file_name), 'w') as f:
f.write(content)