|  | #!/usr/bin/env python | 
|  | # 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 | 
|  | dependencies: | 
|  | shelf: | 
|  | test: | 
|  | """ | 
|  |  | 
|  |  | 
|  | def Main(): | 
|  | parser = optparse.OptionParser() | 
|  | parser.add_option( | 
|  | '--mode', action='store', dest='mode', type='string', default='release') | 
|  |  | 
|  | (options, args) = parser.parse_args() | 
|  |  | 
|  | out_dir_subfolder = 'DebugX64' if options.mode == 'debug' else 'ReleaseX64' | 
|  |  | 
|  | out_dir = 'xcodebuild' if sys.platform == 'darwin' else 'out' | 
|  | extension = '' if not sys.platform == 'win32' else '.bat' | 
|  | pub = os.path.abspath( | 
|  | '%s/%s/dart-sdk/bin/pub%s' % (out_dir, out_dir_subfolder, extension)) | 
|  | print(pub) | 
|  |  | 
|  | 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([pub, 'get'], cwd=working_dir, env=env) | 
|  | if exit_code is not 0: | 
|  | return exit_code | 
|  |  | 
|  | exit_code = subprocess.call([pub, 'upgrade'], cwd=working_dir, env=env) | 
|  | if exit_code is not 0: | 
|  | return exit_code | 
|  | finally: | 
|  | shutil.rmtree(working_dir) | 
|  |  | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | sys.exit(Main()) |