about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/msg_parser/cli.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/msg_parser/cli.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-4a52a71956a8d46fcb7294ac71734504bb09bcc2.tar.gz
two version of R2R are here HEAD master
Diffstat (limited to '.venv/lib/python3.12/site-packages/msg_parser/cli.py')
-rw-r--r--.venv/lib/python3.12/site-packages/msg_parser/cli.py79
1 files changed, 79 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/msg_parser/cli.py b/.venv/lib/python3.12/site-packages/msg_parser/cli.py
new file mode 100644
index 00000000..95e853c0
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/msg_parser/cli.py
@@ -0,0 +1,79 @@
+# -*- coding: utf-8 -*-
+
+"""Console script for msg_parser."""
+import os.path
+import sys
+from argparse import Action
+from argparse import ArgumentParser
+from argparse import ArgumentTypeError
+from argparse import FileType
+from pprint import pprint
+
+from msg_parser import MsOxMessage
+
+
+class FullPaths(Action):
+    """Expand user- and relative-paths"""
+
+    def __call__(self, parser, namespace, values, option_string=None):
+        setattr(namespace, self.dest, os.path.abspath(os.path.expanduser(values)))
+
+
+def is_dir(dir_name):
+    """Checks if a path is an actual directory"""
+    if not os.path.isdir(dir_name):
+        msg = "{0} is not a directory".format(dir_name)
+        raise ArgumentTypeError(msg)
+    else:
+        return dir_name
+
+
+def create_parser(args):
+    parser = ArgumentParser(description="Microsoft Message Parser")
+    parser.add_argument(
+        "-i",
+        "--input",
+        dest="input_file",
+        required=True,
+        help="msg file path",
+        metavar="FILE",
+        type=FileType(),
+    )
+    parser.add_argument(
+        "-j",
+        "--json",
+        help="output parsed msg as json to console",
+        dest="json_output",
+        action="store_true",
+    )
+    parser.add_argument(
+        "-e",
+        "--eml",
+        help="provide email file path to save as eml file.",
+        dest="eml_file",
+        action=FullPaths,
+        type=is_dir,
+    )
+    return parser.parse_args(args)
+
+
+def main():
+    args = create_parser(sys.argv[1:])
+
+    input_file = args.input_file
+
+    json_output = args.json_output
+
+    if json_output:
+        ms_msg = MsOxMessage(input_file)
+        pprint(ms_msg.get_message_as_json())
+
+    eml_file = args.eml_file
+
+    if eml_file:
+        ms_msg = MsOxMessage(input_file)
+        ms_msg.save_email_file(eml_file)
+
+
+if __name__ == "__main__":
+    sys.exit(main())