This commit is contained in:
Minecon724 2025-01-04 19:57:27 +01:00
parent 5ff8b7bd17
commit d557bce477
Signed by: Minecon724
GPG key ID: 3CCC4D267742C8E8
3 changed files with 26 additions and 9 deletions

View file

@ -18,12 +18,13 @@ def main():
parser.add_argument('-t' , '--template', action='store', help="Template directory. By default workdir/template") parser.add_argument('-t' , '--template', action='store', help="Template directory. By default workdir/template")
parser.add_argument('-o', '--out', action='store', help="Output directory. By default workdir/generated_out") parser.add_argument('-o', '--out', action='store', help="Output directory. By default workdir/generated_out")
parser.add_argument('-f', '--force', action='store_true', default=False, help="Force overwrite out dir") parser.add_argument('-f', '--force', action='store_true', default=False, help="Force overwrite out dir")
parser.add_argument('-s', '--server', action='store_true', default=False, help="Run server") parser.add_argument('-d', '--draft', action='store_true', default=False, help="Generate drafts")
parser.add_argument('-s', '--server', action='store_true', default=False, help="Run server, implies drafts")
args = Arguments() args = Arguments()
parser.parse_args(namespace=args) parser.parse_args(namespace=args)
target = compile(args.workdir, args.template, args.out, args.force) target = compile(args.workdir, args.template, args.out, args.force, args.draft or args.server)
print("Saved to", target) print("Saved to", target)
if args.server: if args.server:
import server import server

View file

@ -4,7 +4,7 @@ from json import loads
from os import sep from os import sep
from os.path import join from os.path import join
from typing import Any, Dict from typing import Any, Dict
from datetime import datetime from datetime import datetime, timezone
from git import Repo from git import Repo
@dataclass @dataclass
@ -12,6 +12,7 @@ class Article:
id: str id: str
title: str title: str
summary: str summary: str
draft: bool
revisions: int revisions: int
created_by: str created_by: str
@ -51,11 +52,20 @@ class Article:
print(f"Article {id} has no content") print(f"Article {id} has no content")
commits = list(repo.iter_commits(paths=filename)) commits = list(repo.iter_commits(paths=filename))
kwargs['draft'] = 'draft' in kwargs or len(commits) == 0
if not kwargs['draft']:
kwargs['revisions'] = len(commits) kwargs['revisions'] = len(commits)
kwargs['created_by'] = commits[-1].author.name kwargs['created_by'] = commits[-1].author.name
kwargs['created_at'] = commits[-1].authored_datetime kwargs['created_at'] = commits[-1].authored_datetime.astimezone(timezone.utc)
kwargs['modified_by'] = commits[0].author.name kwargs['modified_by'] = commits[0].author.name
kwargs['modified_at'] = commits[0].authored_datetime kwargs['modified_at'] = commits[0].authored_datetime.astimezone(timezone.utc)
else:
kwargs['revisions'] = 0
kwargs['created_by'] = "Draft"
kwargs['created_at'] = datetime.now().astimezone(timezone.utc)
kwargs['modified_by'] = "Draft"
kwargs['modified_at'] = datetime.now().astimezone(timezone.utc)
return Article(html_content=content, custom=custom, **kwargs) return Article(html_content=content, custom=custom, **kwargs)

View file

@ -10,7 +10,7 @@ from minify_html import minify
from article import Article, Page, Site from article import Article, Page, Site
from template import TemplateEnvironment from template import TemplateEnvironment
def compile(work_directory: str, template_directory: str=None, target_directory: str=None, force: bool=False) -> str: def compile(work_directory: str, template_directory: str=None, target_directory: str=None, force: bool=False, render_drafts: bool=False) -> str:
if not isdir(work_directory): if not isdir(work_directory):
raise FileNotFoundError("One or more of the directories you specified do not exist") raise FileNotFoundError("One or more of the directories you specified do not exist")
@ -57,6 +57,10 @@ def compile(work_directory: str, template_directory: str=None, target_directory:
id = fn.split('.')[0] id = fn.split('.')[0]
article = Article.get(repo, id) article = Article.get(repo, id)
if article.draft and not render_drafts:
print(f"Draft {id} not rendered")
continue
html = template.process_article(article) html = template.process_article(article)
html = minify(html) html = minify(html)
@ -66,6 +70,8 @@ def compile(work_directory: str, template_directory: str=None, target_directory:
articles += [article] articles += [article]
articles.sort(key=lambda a : a.created_at, reverse=True)
page_index = 1 page_index = 1
pages = ceil(len(articles) / articles_per_page) pages = ceil(len(articles) / articles_per_page)
while len(articles) > 0: while len(articles) > 0: