From 3348df26e55c1a7c848c75cddd0657be8e65f313 Mon Sep 17 00:00:00 2001 From: SG Date: Sun, 8 Jun 2025 20:18:18 +0300 Subject: [PATCH] updates --- argparser.py | 13 ++++++++++--- functions.py | 7 +++++-- hydrogen.py | 17 ++++++++--------- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/argparser.py b/argparser.py index 2d9dd4f..2614161 100644 --- a/argparser.py +++ b/argparser.py @@ -6,6 +6,13 @@ argparser = argparse.ArgumentParser( description = Config.APP_DESCRIPTION, epilog = f"See {Config.APP_SRC_URL} for more info.") -argparser.add_argument('--init', action='store_true', help = 'Initialize new site') -argparser.add_argument('--content', '--edit', type = str, help = 'Create new content') -argparser.add_argument('--build', action='store_true', help = 'Build the site') \ No newline at end of file +subparsers = argparser.add_subparsers(dest='command', required=True) + +#argparser.add_argument('--init', action='store_true', help = 'Initialize new site') +#argparser.add_argument('--content', '--edit', type = str, help = 'Create new content') +subparsers.add_parser('init', help = 'Initialize new site.') +subparsers.add_parser('build', help = "Build the site from existing content.") +new_content = subparsers.add_parser('create', aliases = ['new'], help = "Create a new content file.") +new_content.add_argument('filename', type=str, help = "Name of the content file to create.") +edit_content = subparsers.add_parser('edit', help = "Edit a content file.") +edit_content.add_argument('filename', type=str, help = "Name of the content file to edit.") diff --git a/functions.py b/functions.py index f8e1d43..da65de7 100644 --- a/functions.py +++ b/functions.py @@ -6,8 +6,7 @@ from config import Config from logger import logger def create_content(filename): - filename += '.md' - filename = Path(f"{Config.CONTENT_DIR}/{filename}") + filename = Path(f"{Config.CONTENT_DIR}/{filename}.md") if not filename.exists(): fh = DefaultFrontmatterHeader(filename.stem) logger.debug(f"Creating new content {filename}") @@ -17,6 +16,10 @@ def create_content(filename): def edit_content(filename): logger.debug(f"Editing content {filename}") editor = os.environ.get('EDITOR', 'vim') + # Create the content file if not exists + if not Path(f"{Config.CONTENT_DIR}/{filename}.md").exists(): + create_content(filename) + filename = Path(f"{Config.CONTENT_DIR}/{filename}.md") subprocess.call([editor, filename]) def init_site(): diff --git a/hydrogen.py b/hydrogen.py index 76019a4..a05e1a2 100644 --- a/hydrogen.py +++ b/hydrogen.py @@ -25,7 +25,7 @@ header_image = Config.HEADER_IMAGE or '/static/header.jpg' -def build_site(): +def build_site_old(): logger.info(f"Building the '{Config.MAIN_PAGE_TITLE}' site.") # Recreate the output dir if needed @@ -73,14 +73,13 @@ def build_site(): def main(): args = argparser.parse_args() - if args.content: - content = args.content or args.edit - create_content(content) - edit_content(content) - if args.build: - build_site() - if args.init: - init_site() + match args.command: + case "build": + build_site() + case "init": + init_site() + case "new" | "create" | "edit": + edit_content(args.filename) if __name__ == '__main__': main() \ No newline at end of file