| #!/usr/bin/env python3 | 
 | # Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file | 
 | # for details. All rights reserved. Use of this source code is governed by a | 
 | # BSD-style license that can be found in the LICENSE file. | 
 |  | 
 | import optparse | 
 | import os | 
 | import subprocess | 
 | import sys | 
 | import shutil | 
 | import tempfile | 
 |  | 
 | PUBSPEC = """name: pub_integration_test | 
 | environment: | 
 |   sdk: '^2.19.0' | 
 | dependencies: | 
 |   shelf: | 
 |   test: | 
 | """ | 
 |  | 
 |  | 
 | def Main(): | 
 |     parser = optparse.OptionParser() | 
 |     parser.add_option( | 
 |         '--mode', action='store', dest='mode', type='string', default='release') | 
 |     parser.add_option('--arch', | 
 |                       action='store', | 
 |                       dest='arch', | 
 |                       type='string', | 
 |                       default='x64') | 
 |  | 
 |     (options, args) = parser.parse_args() | 
 |  | 
 |     arch = 'ARM64' if options.arch == 'arm64' else 'X64' | 
 |     mode = ('Debug' if options.mode == 'debug' else 'Release') | 
 |  | 
 |     out_dir = 'xcodebuild' if sys.platform == 'darwin' else 'out' | 
 |     extension = '' if not sys.platform == 'win32' else '.exe' | 
 |     dart = os.path.abspath('%s/%s%s/dart-sdk/bin/dart%s' % | 
 |                            (out_dir, mode, arch, extension)) | 
 |     print(dart) | 
 |  | 
 |     working_dir = tempfile.mkdtemp() | 
 |     try: | 
 |         pub_cache_dir = working_dir + '/pub_cache' | 
 |         env = os.environ.copy() | 
 |         env['PUB_CACHE'] = pub_cache_dir | 
 |  | 
 |         with open(working_dir + '/pubspec.yaml', 'w') as pubspec_yaml: | 
 |             pubspec_yaml.write(PUBSPEC) | 
 |  | 
 |         exit_code = subprocess.call([dart, 'pub', 'get'], | 
 |                                     cwd=working_dir, | 
 |                                     env=env) | 
 |         if exit_code != 0: | 
 |             return exit_code | 
 |  | 
 |         exit_code = subprocess.call([dart, 'pub', 'upgrade'], | 
 |                                     cwd=working_dir, | 
 |                                     env=env) | 
 |         if exit_code != 0: | 
 |             return exit_code | 
 |     finally: | 
 |         shutil.rmtree(working_dir) | 
 |  | 
 |  | 
 | if __name__ == '__main__': | 
 |     sys.exit(Main()) |