| OLD | NEW |
| 1 # Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 # Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 # for details. All rights reserved. Use of this source code is governed by a | 2 # for details. All rights reserved. Use of this source code is governed by a |
| 3 # BSD-style license that can be found in the LICENSE file. | 3 # BSD-style license that can be found in the LICENSE file. |
| 4 # | 4 # |
| 5 # This python script creates a tar archive and a C++ source file which contains | 5 # This python script creates a tar archive and a C++ source file which contains |
| 6 # the tar archive as an array of bytes. | 6 # the tar archive as an array of bytes. |
| 7 | 7 |
| 8 import os | 8 import os |
| 9 import sys | 9 import sys |
| 10 from os.path import join, splitext | 10 from os.path import join, splitext |
| 11 import time | 11 import time |
| 12 from optparse import OptionParser | 12 from optparse import OptionParser |
| 13 from datetime import date | 13 from datetime import date |
| 14 import tarfile | 14 import tarfile |
| 15 import tempfile | 15 import tempfile |
| 16 | 16 |
| 17 def makeArchive(tar_path, client_root, files): | 17 def makeArchive(tar_path, client_root, compress, files): |
| 18 tar = tarfile.open(tar_path, mode='w') | 18 mode_string = 'w' |
| 19 if compress: |
| 20 mode_string = 'w:gz' |
| 21 tar = tarfile.open(tar_path, mode=mode_string) |
| 19 for input_file_name in files: | 22 for input_file_name in files: |
| 20 # Chop off client_root. | 23 # Chop off client_root. |
| 21 archive_file_name = input_file_name[ len(client_root) : ] | 24 archive_file_name = input_file_name[ len(client_root) : ] |
| 22 # Replace back slash with forward slash. So we do not have Windows paths. | 25 # Replace back slash with forward slash. So we do not have Windows paths. |
| 23 archive_file_name = archive_file_name.replace("\\", "/") | 26 archive_file_name = archive_file_name.replace("\\", "/") |
| 24 # Open input file and add it to the archive. | 27 # Open input file and add it to the archive. |
| 25 with open(input_file_name, 'rb') as input_file: | 28 with open(input_file_name, 'rb') as input_file: |
| 26 tarInfo = tarfile.TarInfo(name=archive_file_name) | 29 tarInfo = tarfile.TarInfo(name=archive_file_name) |
| 27 input_file.seek(0,2) | 30 input_file.seek(0,2) |
| 28 tarInfo.size = input_file.tell() | 31 tarInfo.size = input_file.tell() |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 action="store", type="string", | 94 action="store", type="string", |
| 92 help="outer C++ namespace", | 95 help="outer C++ namespace", |
| 93 default="dart") | 96 default="dart") |
| 94 parser.add_option("--inner_namespace", | 97 parser.add_option("--inner_namespace", |
| 95 action="store", type="string", | 98 action="store", type="string", |
| 96 help="inner C++ namespace", | 99 help="inner C++ namespace", |
| 97 default="bin") | 100 default="bin") |
| 98 parser.add_option("--name", | 101 parser.add_option("--name", |
| 99 action="store", type="string", | 102 action="store", type="string", |
| 100 help="name of tar archive symbol") | 103 help="name of tar archive symbol") |
| 104 parser.add_option("--compress", action="store_true", default=False) |
| 101 parser.add_option("--client_root", | 105 parser.add_option("--client_root", |
| 102 action="store", type="string", | 106 action="store", type="string", |
| 103 help="root directory client resources") | 107 help="root directory client resources") |
| 104 | 108 |
| 105 (options, args) = parser.parse_args() | 109 (options, args) = parser.parse_args() |
| 106 if not options.output: | 110 if not options.output: |
| 107 sys.stderr.write('--output not specified\n') | 111 sys.stderr.write('--output not specified\n') |
| 108 return -1 | 112 return -1 |
| 109 if not options.tar_output: | 113 if not options.tar_output: |
| 110 sys.stderr.write('--tar_output not specified\n') | 114 sys.stderr.write('--tar_output not specified\n') |
| (...skipping 11 matching lines...) Expand all Loading... |
| 122 # strip out all dot files. | 126 # strip out all dot files. |
| 123 filenames = [f for f in filenames if not f[0] == '.'] | 127 filenames = [f for f in filenames if not f[0] == '.'] |
| 124 dirnames[:] = [d for d in dirnames if not d[0] == '.'] | 128 dirnames[:] = [d for d in dirnames if not d[0] == '.'] |
| 125 for f in filenames: | 129 for f in filenames: |
| 126 src_path = os.path.join(dirname, f) | 130 src_path = os.path.join(dirname, f) |
| 127 if (os.path.isdir(src_path)): | 131 if (os.path.isdir(src_path)): |
| 128 continue | 132 continue |
| 129 files.append(src_path) | 133 files.append(src_path) |
| 130 | 134 |
| 131 # Write out archive. | 135 # Write out archive. |
| 132 makeArchive(options.tar_output, options.client_root, files) | 136 makeArchive(options.tar_output, |
| 137 options.client_root, |
| 138 options.compress, |
| 139 files) |
| 133 | 140 |
| 134 # Read it back in. | 141 # Read it back in. |
| 135 with open(options.tar_output, 'rb') as tar_file: | 142 with open(options.tar_output, 'rb') as tar_file: |
| 136 tar_archive = tar_file.read() | 143 tar_archive = tar_file.read() |
| 137 | 144 |
| 138 # Write CC file. | 145 # Write CC file. |
| 139 writeCCFile(options.output, | 146 writeCCFile(options.output, |
| 140 options.outer_namespace, | 147 options.outer_namespace, |
| 141 options.inner_namespace, | 148 options.inner_namespace, |
| 142 options.name, | 149 options.name, |
| 143 tar_archive) | 150 tar_archive) |
| 144 return 0 | 151 return 0 |
| 145 | 152 |
| 146 except Exception, inst: | 153 except Exception, inst: |
| 147 sys.stderr.write('create_resources.py exception\n') | 154 sys.stderr.write('create_resources.py exception\n') |
| 148 sys.stderr.write(str(inst)) | 155 sys.stderr.write(str(inst)) |
| 149 sys.stderr.write('\n') | 156 sys.stderr.write('\n') |
| 150 return -1 | 157 return -1 |
| 151 | 158 |
| 152 if __name__ == '__main__': | 159 if __name__ == '__main__': |
| 153 sys.exit(main(sys.argv)) | 160 sys.exit(main(sys.argv)) |
| OLD | NEW |