162 parser = argparse.ArgumentParser()
163
164 parser.add_argument(
165 '--symbol-dirs',
166 required=True,
167 nargs='+',
168 help='Space separated list of directories that contain the debug symbols.'
169 )
170 parser.add_argument(
171 '--out-dir',
172 action='store',
173 dest='out_dir',
174 default=tempfile.mkdtemp(),
175 help=(
176 'Output directory where the executables will be placed defaults to an '
177 'empty temp directory'
178 )
179 )
180 parser.add_argument('--target-arch', type=str, choices=['x64', 'arm64'], required=True)
181 parser.add_argument('--engine-version', required=True, help='Specifies the flutter engine SHA.')
182
183 parser.add_argument('--upload', default=False, action='store_true')
184
185 args = parser.parse_args()
186
187 symbol_dirs = CalculateAbsoluteDirs(args.symbol_dirs)
188 for symbol_dir in symbol_dirs:
189 assert os.path.exists(symbol_dir) and os.path.isdir(symbol_dir)
190
191 out_dir = args.out_dir
192
193 if os.path.exists(out_dir):
194 print(
'Directory: %s is not empty, deleting it.' % out_dir)
195 shutil.rmtree(out_dir)
196 os.makedirs(out_dir)
197
198 internal_symbol_dirs = []
199 for symbol_dir in symbol_dirs:
200 internal_symbol_dirs += HardlinkContents(symbol_dir, out_dir)
201
202
203 internal_symbol_dirs = list(set(internal_symbol_dirs))
204
205 arch = args.target_arch
206 cipd_def = WriteCIPDDefinition(arch, out_dir, internal_symbol_dirs)
207
208
209
210
211 should_upload = args.upload
212 engine_version = args.engine_version
213 if not engine_version:
214 engine_version = 'HEAD'
215 should_upload = False
216
217 ProcessCIPDPackage(should_upload, cipd_def, engine_version, out_dir, arch)
218 return 0
219
220