| #!/usr/bin/env python3 | |
| # | |
| # 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())) |