#!/usr/bin/env python3 # -*- coding: utf-8 -*- """Manage blogs""" import json import os import random import readline import string import sys from atexit import register as fn_register from base64 import b64decode, b64encode from datetime import datetime from glob import iglob from html import escape as html_escape from shutil import rmtree from threading import Thread from timeit import default_timer as code_timer from typing import Dict, List, Set, Tuple from warnings import filterwarnings as filter_warnings from css_html_js_minify import html_minify # type: ignore from css_html_js_minify import process_single_css_file from markdown import markdown # type: ignore from plumbum.commands.processes import ProcessExecutionError # type: ignore from pyfzf import FzfPrompt # type: ignore EXIT_OK: int = 0 EXIT_ERR: int = 1 DEFAULT_CONFIG: Dict = { "editor-command": f"{os.environ.get('EDITOR', 'vim')} -- %s", "blog-dir": "b", "git-url": "/git", "py-markdown-extensions": [ "markdown.extensions.abbr", "markdown.extensions.def_list", "markdown.extensions.fenced_code", "markdown.extensions.footnotes", "markdown.extensions.md_in_html", "markdown.extensions.tables", "markdown.extensions.admonition", "markdown.extensions.sane_lists", "markdown.extensions.toc", "markdown.extensions.wikilinks", "pymdownx.betterem", "pymdownx.caret", "pymdownx.magiclink", "pymdownx.mark", "pymdownx.tilde", ], "default-keywords": ["website", "blog", "opinion", "article", "ari-web", "ari"], "page-title": "Ari::web -> Blog", "page-description": "My blog page", "colourscheme-type": "dark", "home-keywords": ["ari", "ari-web", "blog", "ari-archer", "foss", "free", "linux"], "base-homepage": "https://ari-web.xyz/", "blogs": {}, } DEFAULT_CONFIG_FILE: str = "blog.json" HISTORY_FILE: str = ".blog_history" BLOG_VERSION: int = 1 BLOG_MARKDOWN_TEMPLATE: str = """# %s