import argparse
import os
import subprocess
import tarfile
import zipfile
def unpack(src, dst):
os.makedirs(dst, exist_ok=True)
if src.endswith(('.tar.gz', '.tgz')):
with tarfile.open(src, 'r:gz') as tf:
tf.extractall(dst)
elif src.endswith('.tar.bz2'):
with tarfile.open(src, 'r:bz2') as tf:
tf.extractall(dst)
elif src.endswith('.tar.xz'):
with tarfile.open(src, 'r:xz') as tf:
tf.extractall(dst)
elif src.endswith('.tar'):
with tarfile.open(src, 'r') as tf:
tf.extractall(dst)
elif src.endswith('.zip'):
with zipfile.ZipFile(src, 'r') as zf:
zf.extractall(dst)
else:
subprocess.run(['tar', '-xf', src, '-C', dst], check=True)
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--src', required=True)
parser.add_argument('--dst', required=True)
args = parser.parse_args()
unpack(args.src, args.dst)
if __name__ == '__main__':
main()