Index: dart/tools/only_in_release_mode.py |
diff --git a/dart/tools/only_in_release_mode.py b/dart/tools/only_in_release_mode.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..39abd89edfd6f2c37597bae37f89016f545fa4e4 |
--- /dev/null |
+++ b/dart/tools/only_in_release_mode.py |
@@ -0,0 +1,56 @@ |
+#!/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 following options are accepted: |
+ |
+ --mode=[release,debug] |
+ |
+ --outputs=files... |
+ |
+If mode is not 'release', the script will create the files listed in |
+outputs. If mode is release, the script will execute the remaining |
+command line arguments as a command. |
+ |
+Files are a list of quoted filenames separated by space. For example, |
+'"file1.ext" "file2.ext"' |
+""" |
+ |
+import optparse |
+import subprocess |
+import sys |
+ |
+ |
+def BuildOptions(): |
+ result = optparse.OptionParser() |
+ result.add_option('-m', '--mode') |
+ result.add_option('-o', '--outputs') |
+ return result |
+ |
+ |
+def Main(): |
+ (options, arguments) = BuildOptions().parse_args() |
+ if options.mode != 'release': |
+ print >> sys.stderr, 'Not running %s in mode=%s' % (arguments, |
+ options.mode) |
+ for output in options.outputs.strip('"').split('" "'): |
+ 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()) |