101 lines
2.5 KiB
Python
Executable File
101 lines
2.5 KiB
Python
Executable File
#!/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()
|