Add an Environment.Dump() method. (Gary Oberbrunner)
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Mon, 30 Aug 2004 21:46:36 +0000 (21:46 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Mon, 30 Aug 2004 21:46:36 +0000 (21:46 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@1048 fdb21ef1-2011-0410-befe-b5e4ea1792b1

doc/man/scons.1
src/CHANGES.txt
src/engine/SCons/Environment.py
src/engine/SCons/EnvironmentTests.py

index 54a76abc0d586238da267950aaa6f4143a7fe8b8..a08b151d597aa87c003a9f00ea6db8c48b450020 100644 (file)
@@ -2625,6 +2625,40 @@ Directory Nodes have attributes and methods
 that are useful in many situations;
 see "File and Directory Nodes," below.
 
+'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+.TP
+.RI env.Dump([ key ])
+Returns a pretty printable representation of the environment.
+.IR key ,
+if not
+.IR None ,
+should be a string containing the name of the variable of interest.
+
+This SConstruct:
+.ES
+env=Environment()
+print env.Dump('CCCOM')
+.EE
+will print:
+.ES
+'$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES'
+.EE
+
+.ES
+env=Environment()
+print env.Dump()
+.EE
+will print:
+.ES
+{ 'AR': 'ar',
+  'ARCOM': '$AR $ARFLAGS $TARGET $SOURCES\n$RANLIB $RANLIBFLAGS $TARGET',
+  'ARFLAGS': ['r'],
+  'AS': 'as',
+  'ASCOM': '$AS $ASFLAGS -o $TARGET $SOURCES',
+  'ASFLAGS': [],
+  ...
+.EE
+
 '\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 .TP
 .RI EnsurePythonVersion( major ", " minor )
index b8a36281415fed32051272917bb80063df73322e..f3b5778f825587f4236f3ee3492deee4f6e1bd9d 100644 (file)
 
 RELEASE 0.97 - XXX
 
+  From Gary Oberbrunner:
+
+  - Add an Environment.Dump() method to print the contents of a
+    construction environment.
+
+
+
+RELEASE 0.96.1 - XXX
+
   From Craig Bachelor:
 
   - Handle white space in the executable Python path name within in MSVS
index 32fa1e6333d3be0f4bba5672ff21ce5a78c8174c..03f2e38a1d62c67c8068135ac3ce600c9e70ea7f 100644 (file)
@@ -663,6 +663,24 @@ class Base:
            dlist = dlist[0]
        return dlist
 
+    def Dump(self, key = None):
+        """
+        Using the standard Python pretty printer, dump the contents of the
+        scons build environment to stdout.
+
+        If the key passed in is anything other than None, then that will
+        be used as an index into the build environment dictionary and
+        whatever is found there will be fed into the pretty printer. Note
+        that this key is case sensitive.
+        """
+        import pprint
+        pp = pprint.PrettyPrinter(indent=2)
+        if key:
+            dict = self.Dictionary(key)
+        else:
+            dict = self.Dictionary()
+        return pp.pformat(dict)
+
     def FindIxes(self, paths, prefix, suffix):
         """
         Search a list of paths for something that matches the prefix and suffix.
index 810f3077877ff3bb6e1f6592383eddbeb9ac1376..a6b8645534ecacb982d91efd59c5b9b8ff969d60 100644 (file)
@@ -1994,6 +1994,13 @@ class EnvironmentTestCase(unittest.TestCase):
         d = env.Dir('${BAR}_$BAR')
         assert d == 'Dir(bardir_bardir)', d
 
+    def test_Dump(self):
+        """Test the Dump() method"""
+
+        env = Environment(FOO = 'foo')
+        assert env.Dump('FOO') == "'foo'", env.Dump('FOO')
+        assert len(env.Dump()) > 200, env.Dump()    # no args version
+
     def test_Environment(self):
         """Test the Environment() method"""
         env = Environment(FOO = 'xxx', BAR = 'yyy')