aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/msg_parser/cli.py
diff options
context:
space:
mode:
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())