Source code for msg_parser.cli

# -*- 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


[docs]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)))
[docs]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
[docs]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)
[docs]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())