Index: site_scons/site_tools/replace_strings.py |
=================================================================== |
--- site_scons/site_tools/replace_strings.py (revision 12583) |
+++ site_scons/site_tools/replace_strings.py (working copy) |
@@ -1,82 +0,0 @@ |
-#!/usr/bin/python2.4 |
-# Copyright 2008, Google Inc. |
-# All rights reserved. |
-# |
-# Redistribution and use in source and binary forms, with or without |
-# modification, are permitted provided that the following conditions are |
-# met: |
-# |
-# * Redistributions of source code must retain the above copyright |
-# notice, this list of conditions and the following disclaimer. |
-# * Redistributions in binary form must reproduce the above |
-# copyright notice, this list of conditions and the following disclaimer |
-# in the documentation and/or other materials provided with the |
-# distribution. |
-# * Neither the name of Google Inc. nor the names of its |
-# contributors may be used to endorse or promote products derived from |
-# this software without specific prior written permission. |
-# |
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- |
-"""Search and replace builder for SCons.""" |
- |
- |
-import re |
-import SCons.Script |
- |
- |
-def ReplaceStrings(target, source, env): |
- """Replace Strings builder, does regex substitution on files. |
- |
- Args: |
- target: A single target file node. |
- source: A single input file node. |
- env: Environment in which to build. |
- |
- From env: |
- REPLACE_STRINGS: A list of pairs of regex search and replacement strings. |
- The body of the source file has substitution performed on each |
- pair (search_regex, replacement) in order. SCons variables in the |
- replacement strings will be evaluated. |
- |
- Returns: |
- The target node, a file with contents from source, with the substitutions |
- from REPLACE_STRINGS performed on it. |
- |
- For example: |
- env.ReplaceStrings('out', 'in', |
- REPLACE_STRINGS = [('a*', 'b'), ('b', 'CCC')]) |
- With 'in' having contents: Haaapy. |
- Outputs: HCCCpy. |
- """ |
- # Load text. |
- fh = open(source[0].abspath, 'rb') |
- text = fh.read() |
- fh.close() |
- # Do replacements. |
- for r in env['REPLACE_STRINGS']: |
- text = re.sub(r[0], env.subst(r[1]), text) |
- # Write it out. |
- fh = open(target[0].abspath, 'wb') |
- fh.write(text) |
- fh.close() |
- |
- |
-def generate(env): |
- # NOTE: SCons requires the use of this name, which fails gpylint. |
- """SCons entry point for this tool.""" |
- |
- # Add the builder |
- act = SCons.Script.Action(ReplaceStrings, varlist=['REPLACE_STRINGS']) |
- bld = SCons.Script.Builder(action=act, single_source=True) |
- env.Append(BUILDERS={'ReplaceStrings': bld}) |