From 7e138615b762bb78d1e6f34b88af2e14f909ae57 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Santos Souza de Miranda Date: Wed, 3 Sep 2025 17:43:32 -0300 Subject: [PATCH] Expand the ` Application ` class with argument parsing and subcommands for PDF export and theme management. Integrate command handling logic. --- src/epstein/application.py | 47 ++++++++++++++++++++++++++++++++++++-- src/epstein/command.py | 2 ++ 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/src/epstein/application.py b/src/epstein/application.py index f50cfa1..78d1220 100644 --- a/src/epstein/application.py +++ b/src/epstein/application.py @@ -1,7 +1,50 @@ +import argparse +import sys + class Application: def __init__(self): - pass + self.args = self.__setup_args + + @property + def __setup_args(self): + parser = argparse.ArgumentParser(prog="epstein", + description='Test for PDF Export Module for pilgrim') + + subparsers = parser.add_subparsers(dest="command",required=True) + print_parser = subparsers.add_parser("print", help="generate the PDF file ") + print_parser.add_argument("-t", "--theme", required=True, help="Define the theme to use.") + print_parser.set_defaults(func=self.handle_print) + + + theme_parser = subparsers.add_parser("theme", help="Manage the themes") + theme_subparsers = theme_parser.add_subparsers(dest="theme_action", help="Actions for the themes" , required=True) + + theme_create_parser = theme_subparsers.add_parser("create", help="Create a new theme") + theme_create_parser.add_argument("-n", "--name", required=True, help="Name of the theme") + theme_create_parser.set_defaults(func=self.handle_theme_create) + + theme_list_parser = theme_subparsers.add_parser("list", help="List all the themes") + theme_list_parser.set_defaults(func=self.handle_theme_list) + + if len(sys.argv) == 2 and sys.argv[1] == 'theme': + theme_parser.print_help(sys.stderr) + sys.exit(1) + + if len(sys.argv) == 1: + parser.print_help(sys.stderr) + sys.exit(1) + + return parser.parse_args() + + def handle_print(self): + print("handle print") + + def handle_theme_create(self): + print("handle theme create") + + def handle_theme_list(self): + print("handle theme list") def run(self): - pass + self.args.func() \ No newline at end of file diff --git a/src/epstein/command.py b/src/epstein/command.py index 4fe2a08..f23e602 100644 --- a/src/epstein/command.py +++ b/src/epstein/command.py @@ -1,3 +1,5 @@ +import argparse + from epstein.application import Application def main():