#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals, print_function
import argparse
import sys
from .pytar import pytar_extract
CREATE, EXTRACT = 'create', 'extract'
[docs]def parse_pytar_args(args):
""" Parse the command-line arguments to pytar. """
parser = argparse.ArgumentParser(
description='''Extract a tar file or create a tar file from a
directory.'''
)
parser.add_argument(
'action',
help='''Type "extract" for extracting a tar file or "create" for
create a tar file from directories and/or files.''',
choices=[CREATE, EXTRACT]
)
parser.add_argument(
'target',
help='''Target for directories and/or files in general (depends
on the action).'''
)
parser.add_argument(
'extract_path',
help='''Extraction path. By default will extract alongside the
tar file.''',
nargs='?',
default=None
)
parser.add_argument(
'-v', '--verbose',
help='Print the files to be extracted',
action='store_true', default=False
)
return parser.parse_args(args)
[docs]def main(sys_argv=[]):
sys_argv = sys_argv or sys.argv
try:
args = parse_pytar_args(sys_argv[1:])
except SystemExit:
print('Need a help? Type: pytar -h')
return None
if args.action == EXTRACT:
extraction_result = pytar_extract(
args.target,
args.extract_path,
args.verbose
)
if args.verbose:
return '{0}\n{1}'.format(extraction_result.get('verbose'),
extraction_result.get('message'))
else:
return extraction_result.get('message')
if __name__ == '__main__': # pragma: no cover
sys.exit(main(sys.argv))