| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| from __future__ import absolute_import |
| from __future__ import print_function |
| from __future__ import unicode_literals |
| from argparse import ArgumentParser |
| import gettext |
| import logging |
| import os |
| import sys |
|
|
| from . import __version__ |
| from .cli import init_logger |
| from .dataio import ParseError |
| from .errors import InvalidHwp5FileError |
|
|
|
|
| PY3 = sys.version_info.major == 3 |
| logger = logging.getLogger(__name__) |
|
|
| locale_dir = os.path.join(os.path.dirname(__file__), 'locale') |
| locale_dir = os.path.abspath(locale_dir) |
| t = gettext.translation('hwp5proc', locale_dir, fallback=True) |
| _ = t.gettext |
|
|
|
|
| program = 'hwp5proc (pyhwp) {version}'.format(version=__version__) |
|
|
| copyright = 'Copyright (C) 2010-2023 mete0r <https://github.com/mete0r>' |
|
|
| license = _('''License AGPLv3+: GNU Affero GPL version 3 or any later |
| <http://gnu.org/licenses/agpl.txt>. |
| This is free software: you are free to change and redistribute it. |
| There is NO WARRANTY, to the extent permitted by law.''') |
|
|
| disclosure = _('''Disclosure: This program has been developed in accordance with a public |
| document named "HWP Binary Specification 1.1" published by Hancom Inc. |
| <http://www.hancom.co.kr>.''') |
|
|
| version = '''{program} |
| {copyright} |
| {license} |
| {disclosure}'''.format( |
| program=program, |
| copyright=copyright, |
| license=license, |
| disclosure=disclosure, |
| ) |
|
|
|
|
| def main(): |
| argparser = main_argparser() |
| args = argparser.parse_args() |
| init_logger(args) |
|
|
| try: |
| subcommand_fn = args.func |
| except AttributeError: |
| argparser.print_help() |
| raise SystemExit(1) |
|
|
| try: |
| return subcommand_fn(args) |
| except InvalidHwp5FileError as e: |
| logger.error('%s', e) |
| raise SystemExit(1) |
| except ParseError as e: |
| e.print_to_logger(logger) |
| raise SystemExit(1) |
|
|
|
|
| def main_argparser(): |
| from .proc.version import version_argparser |
| from .proc.header import header_argparser |
| from .proc.summaryinfo import summaryinfo_argparser |
| from .proc.ls import ls_argparser |
| from .proc.cat import cat_argparser |
| from .proc.unpack import unpack_argparser |
| from .proc.records import records_argparser |
| from .proc.models import models_argparser |
| from .proc.find import find_argparser |
| from .proc.xml import xml_argparser |
| from .proc.rawunz import rawunz_argparser |
| from .proc.diststream import diststream_argparser |
| parser = ArgumentParser( |
| prog='hwp5proc', |
| description=_('Do various operations on HWPv5 files.'), |
| ) |
| parser.add_argument( |
| '--loglevel', |
| help=_('Set log level.'), |
| ) |
| parser.add_argument( |
| '--logfile', |
| help=_('Set log file.'), |
| ) |
| subcommands = parser.add_subparsers( |
| title=_('subcommands'), |
| description=_('valid subcommands'), |
| ) |
| version_argparser(subcommands, _) |
| header_argparser(subcommands, _) |
| summaryinfo_argparser(subcommands, _) |
| ls_argparser(subcommands, _) |
| cat_argparser(subcommands, _) |
| unpack_argparser(subcommands, _) |
| records_argparser(subcommands, _) |
| models_argparser(subcommands, _) |
| find_argparser(subcommands, _) |
| xml_argparser(subcommands, _) |
| rawunz_argparser(subcommands, _) |
| diststream_argparser(subcommands, _) |
| return parser |
|
|