| #!/usr/bin/env python |
| # Copyright 2013 The Flutter Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import argparse |
| import zipfile |
| import os |
| import sys |
| |
| |
| def _zip_dir(path, zip_file, prefix): |
| path = path.rstrip('/\\') |
| for root, dirs, files in os.walk(path): |
| for file in files: |
| zip_file.write(os.path.join(root, file), os.path.join( |
| root.replace(path, prefix), file)) |
| |
| |
| def main(args): |
| zip_file = zipfile.ZipFile(args.output, 'w', zipfile.ZIP_DEFLATED) |
| for path, archive_name in args.input_pairs: |
| if os.path.isdir(path): |
| _zip_dir(path, zip_file, archive_name) |
| else: |
| zip_file.write(path, archive_name) |
| zip_file.close() |
| |
| |
| if __name__ == '__main__': |
| parser = argparse.ArgumentParser( |
| description='This script creates zip files.') |
| parser.add_argument('-o', dest='output', action='store', |
| help='The name of the output zip file.') |
| parser.add_argument('-i', dest='input_pairs', nargs=2, action='append', |
| help='The input file and its destination location in the zip archive.') |
| sys.exit(main(parser.parse_args())) |