| #!/usr/bin/env python |
| # |
| # Copyright (c) 2013, 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. |
| |
| """ |
| Wrapper around a build action that should only be executed in release mode. |
| |
| The mode is defined via an environment variable DART_BUILD_MODE. |
| |
| The arguments to the script are: |
| |
| only_in_release_mode.py files... -- command arguments... |
| |
| If mode is not 'release', the script will create the files listed |
| before --. If mode is release, the script will execute the command |
| after --. |
| """ |
| |
| import os |
| import subprocess |
| import sys |
| |
| |
| def Main(): |
| # Throws an error if '--' is not in the argument list. |
| separator_index = sys.argv.index('--') |
| outputs = sys.argv[1:separator_index] |
| arguments = sys.argv[separator_index + 1:] |
| arguments[0] = os.path.normpath(arguments[0]) |
| mode = os.getenv('DART_BUILD_MODE', 'release') |
| if mode != 'release': |
| print >> sys.stderr, 'Not running %s in mode=%s' % (arguments, mode) |
| for output in outputs: |
| with open(output, 'w'): |
| # Create an empty file to ensure that we don't rerun this |
| # command unnecessarily. |
| pass |
| return 0 |
| else: |
| try: |
| subprocess.check_call(arguments) |
| except subprocess.CalledProcessError as e: |
| return e.returncode |
| return 0 |
| |
| |
| if __name__ == '__main__': |
| sys.exit(Main()) |