commit 32f9d42d758368cd5898d3940a97691a931e19df
parent cfa8bf32dd515b1ac45797ef57bac35ef9828da0
Author: Carlosokumu <carlosokumu254@gmail.com>
Date: Wed, 5 Nov 2025 21:41:26 +0300
feat: add read for poster and long data
Diffstat:
1 file changed, 18 insertions(+), 6 deletions(-)
diff --git a/ungana/cmd/args_parser.py b/ungana/cmd/args_parser.py
@@ -21,7 +21,6 @@ class ArgsParser:
description="Create a customized iCalendar (.ics) event"
)
self.ical_manager = ICalManager()
- self.attachment_manager = AttachmentManager()
self._add_command_arguments()
def _read_file_or_exit(self, file_path: str) -> str:
@@ -108,7 +107,7 @@ class ArgsParser:
args = self.parser.parse_args()
self.logging = LoggingManager(verbose=args.verbose, quiet=args.quiet)
self.logger = self.logging.get_logger("ArgsParser")
-
+ self.attachment_manager = AttachmentManager(logger=self.logging.get_logger("AttachmentManager"))
return args
def _prompt_datetime(self, prompt: str, allow_blank: bool = False):
@@ -199,7 +198,6 @@ class ArgsParser:
"long": args.long,
"contact": args.contact
}
-
if not any(event_args.values()):
ics_filename = args.ics_filename or f"event_{datetime.now().strftime('%Y%m%d_%H%M%S')}.ics"
cal = self.ical_manager.load_ical_file(ics_filename)
@@ -461,16 +459,30 @@ class ArgsParser:
contact = value
else:
contact = None
-
for ctx_name in ("poster", "long"):
arg_val = getattr(args, ctx_name, None)
if arg_val:
try:
- prop, value, params = self.attachment_manager.create_attachment(arg_val, ctx=ctx_name)
+ file_path = Path(arg_val).expanduser().resolve()
+
+ if not file_path.exists():
+ self.parser.error(f"{ctx_name} file not found: {file_path}")
+
+ if ctx_name == "poster":
+ data = file_path.read_bytes()
+ else:
+ data = file_path.read_text(encoding="utf-8")
+
+ prop, value, params = self.attachment_manager.create_attachment(
+ file_path,
+ ctx=ctx_name,
+ data=data
+ )
+
attachments.append((prop, value, params))
except Exception as e:
- self.parser.error(f"Unexpected error: {e}")
+ self.parser.error(f"Unexpected error processing {ctx_name}: {e}")
event_data = {
'summary': args.summary,