#!/usr/bin/env python3 import os import argparse import subprocess from pathlib import Path from blog.page import new_page from blog.config import Config from blog.blog import Blog # from blog.blog import Blog actions_list = ["new", "make"] blog_dir = "./inbox/" def load_args(): """Charge l'action et les paramêtres communs a toutes les actions.""" parser = argparse.ArgumentParser(description="Gestion du blog") parser.add_argument("action", choices=actions_list, help="L'action a réaliser.") parser.add_argument( "--config", default=".blog", help="Chemin vers le fichier de configuration", ) parser.add_argument( "--inbox", default="./inbox", help="Chemin vers les fichiers markdown du blog", ) parser.add_argument( "-d", action="store_true", help="Construit le blog avec les brouillons si spécifié.", ) parser.add_argument( "--draft", default="./draft", help="Chemin vers les brouillons", ) parser.add_argument("all", nargs=argparse.REMAINDER, help=argparse.SUPPRESS) return vars(parser.parse_args()) def load_make_args(args: str) -> dict: """Charge les paramêtres spécifiques à l'action make""" parser = argparse.ArgumentParser(description="Compile le blog") parser.add_argument( "--theme", default="./themes/default", help="Chemin vers le theme utilisé", ) parser.add_argument( "--output", default="./output", help="Nom du dossier où sera exporté le blog en html", ) return vars(parser.parse_args(args)) def main(): """Fonction principale""" args = load_args() if not Path(args["config"]).is_file(): print("Le fichier de configuration n'existe pas.") os._exit(1) conf = Config(args["config"]) conf.overload(args) match args["action"]: case "new": page_title = " ".join(args["all"]) path = conf.inbox if args["d"]: path = conf.draft subprocess.run( ["nvim", "+normal G$", "+startinsert", new_page(page_title, path)] ) os._exit(0) case "make": make_args = load_make_args(args["all"]) conf.overload(make_args) blog = Blog(conf) blog.make(draft=args["d"]) os._exit(0) case _: print("error") os._exit(1) if __name__ == "__main__": main()