| #!/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()) |