62 lines
1.6 KiB
Python
62 lines
1.6 KiB
Python
import os
|
|
from typing import List
|
|
import yaml
|
|
|
|
from dataclasses import dataclass, field
|
|
|
|
|
|
@dataclass
|
|
class Config:
|
|
title = "Blog"
|
|
description = ""
|
|
link = "/"
|
|
home_link = "/"
|
|
language = "en-US"
|
|
logo = "/img/icon.png"
|
|
header = True
|
|
content_dir = "."
|
|
categories: List[str] = field(default_factory=list)
|
|
short_feed = False
|
|
|
|
basedir = os.path.abspath(os.path.dirname(__file__))
|
|
templates_dir = os.path.join(basedir, "templates")
|
|
static_dir = os.path.join(basedir, "static")
|
|
default_css_dir = os.path.join(static_dir, "css")
|
|
default_js_dir = os.path.join(static_dir, "js")
|
|
default_fonts_dir = os.path.join(static_dir, "fonts")
|
|
default_img_dir = os.path.join(static_dir, "img")
|
|
|
|
|
|
config = Config()
|
|
|
|
|
|
def init_config(content_dir=".", config_file="config.yaml"):
|
|
cfg = {}
|
|
config.content_dir = content_dir
|
|
|
|
if os.path.isfile(config_file):
|
|
with open(config_file, "r") as f:
|
|
cfg = yaml.safe_load(f)
|
|
|
|
if cfg.get("title"):
|
|
config.title = cfg["title"]
|
|
if cfg.get("description"):
|
|
config.description = cfg["description"]
|
|
if cfg.get("link"):
|
|
config.link = cfg["link"]
|
|
if cfg.get("home_link"):
|
|
config.home_link = cfg["home_link"]
|
|
if cfg.get("logo") is not None:
|
|
config.logo = cfg["logo"]
|
|
if cfg.get("language"):
|
|
config.language = cfg["language"]
|
|
if cfg.get("header") is False:
|
|
config.header = False
|
|
if cfg.get("short_feed"):
|
|
config.short_feed = True
|
|
|
|
config.categories = cfg.get("categories", [])
|
|
|
|
|
|
# vim:sw=4:ts=4:et:
|