scripts/munge.py
changeset 506 deaf548efde3
parent 480 9b07ddeb1412
child 511 52557918ec8f
--- a/scripts/munge.py	Wed Nov 19 08:39:29 2008 +0000
+++ b/scripts/munge.py	Wed Nov 19 21:05:31 2008 +0000
@@ -264,7 +264,7 @@
                        start_path='', abs_path=False, files_pattern='',
                        recurse_dirs=False, dirs_pattern='',
                        follow_symlinks=False, quiet_output=False,
-                       hide_paths=False, **action_options):
+                       hide_paths=False, hide_text=False, **action_options):
   """Applies a callable action to files, based on options and arguments.
   
   Args:
@@ -283,6 +283,8 @@
     follow_symlinks: boolean indicating if symlinks should be traversed
     quiet_output: optional boolean indicating if output should be suppressed
     hide_paths: optional boolean indicating to omit file paths from output
+    hide_text: optional boolean indicating to omit find/replace text from
+      output
     **action_options: remaining keyword arguments that are passed unchanged
       to the action callable
 
@@ -334,7 +336,7 @@
               sub_paths.append(item_path)
           continue
       
-        if files_regex.match(item):
+        if os.path.isfile(item_path) and files_regex.match(item):
           try:
             matched, found_output = action(item_path, *action_args,
                                            **action_options)
@@ -348,7 +350,7 @@
             if (not quiet_output) and (not hide_paths):
               output.append(item_path)
 
-          if not quiet_output:
+          if (not quiet_output) and (not hide_text):
             output.extend(found_output)
 
     paths = sub_paths
@@ -420,11 +422,17 @@
           ' [default: %default]'))
 
   output_group.add_option(
-    '-p', '--nopaths', dest='hide_paths', default=False, action='store_true',
+    '', '--nopaths', dest='hide_paths', default=False, action='store_true',
     help=('suppress printing of file path names for successfully matched'
           ' files to stdout [default: %default]'))
 
   output_group.add_option(
+    '', '--notext', dest='hide_text', default=False, action='store_true',
+    help=('suppress find/replace text output to stdout (but still print'
+          ' paths if not --nopath, and still perform replacements if'
+          ' specified) [default: %default]'))
+
+  output_group.add_option(
     '-q', '--quiet', dest='quiet_output', default=False, action='store_true',
     help=('suppress *all* printed output to stdout (but still perform'
           ' replacements if specified) [default: %default]'))
@@ -511,6 +519,7 @@
     exit code suitable for sys.exit()
   """
   options = {}  # empty options, used if _parseArgs() fails
+  parser = None
 
   try:
     action, options, args, parser = _parseArgs(argv[1:])
@@ -522,7 +531,9 @@
     if not options.get('quiet_output'):
       print >>sys.stderr, '\nERROR: (%s: %s) %s\n' % (
         error.args[0], os.strerror(error.args[0]), error.args[1])
-      print >>sys.stderr, parser.get_usage()
+
+      if parser:
+        print >>sys.stderr, parser.get_usage()
 
     exit_code = error.args[0]