Merge remote branch 'grml-scripts-split/split/grml-scripts-core'
[grml-scripts-core.git] / usr_bin / grepedit
diff --git a/usr_bin/grepedit b/usr_bin/grepedit
deleted file mode 100755 (executable)
index 2d5730b..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-#!/usr/bin/python
-
-##  Copyright 2005 Drew Perttula
-  
-##  This program is free software; you can redistribute it and/or modify
-##  it under the terms of the GNU General Public License as published by
-##  the Free Software Foundation; either version 2 of the License, or
-##  (at your option) any later version.
-
-##  This program is distributed in the hope that it will be useful,
-##  but WITHOUT ANY WARRANTY; without even the implied warranty of
-##  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-##  GNU General Public License for more details.
-
-##  You should have received a copy of the GNU General Public License
-##  along with this program; if not, write to the Free Software
-##  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-"""sometimes we grep for something in a bunch of files, and then we
-want to make edits to the lines that were returned from the grep. It's
-a hassle to edit all the files; this program puts the match lines in a
-temp file for easy editing all at once.
-
-EDITOR is used on the temporary file.
-
-The cmdline arguments to grepedit are the same as those to grep. Do
-not use arguments that alter the output line format; -C is ok.
-
-grepedit also reads the following arguments:
-
-  --sort-text sort lines by the text part of the line (this probably
-    doesn't make sense with -C)
-
-
-
-The grep output usually looks like this:
-ez_setup.py:136:        import setuptools
-ez_setup.py:138:        import tempfile, shutil
-
-Output might be like this with -C 2:
---
-ez_setup.py-174-    '''Update our built-in md5 registry'''
-ez_setup.py-175-
-ez_setup.py:176:    import re
-ez_setup.py:177:    from md5 import md5
-ez_setup.py-178-
-ez_setup.py-179-    for name in filenames:
---
-
-"""
-
-import tempfile, sys, os, re
-from sets import Set
-
-def grep_parse(filename):
-    """parse grep output lines in given file into a dict of
-    (filename, lineno) : text"""
-    parse = {}
-    for line in open(filename):
-        if line == "--\n":
-            continue
-        m = re.match(r"(?P<filename>.*?)(?P<sep>[-:])(?P<lineno>\d+)(?P=sep)(?P<line>.*\n)$", line)
-        if m is None:
-            print "couldn't parse grep result line %r" % line
-            continue
-        filename, lineno, text = (m.group('filename'), int(m.group('lineno')),
-                                  m.group('line'))
-        if (filename,lineno) in parse:
-            raise ValueError("multiple results found for %s:%s" %
-                             (filename, lineno))
-        parse[(filename, lineno)] = text
-    return parse
-
-options = {}
-passthru_args = []
-for arg in sys.argv[1:]:
-    if arg == "--sort-text":
-        options['sort-text'] = True
-        continue
-    passthru_args.append(arg)
-
-tf = tempfile.NamedTemporaryFile(prefix="grepedit_")
-tf.close()
-
-cmd = ("grep --with-filename --line-number --binary-files=without-match %s > %s" %
-       (" ".join(['"%s"' % s.replace("\\","\\\\").replace('"','\\"')
-                  for s in passthru_args]),tf.name))
-os.system(cmd)
-
-originals = grep_parse(tf.name)
-
-if options.get('sort-text', False):
-    orig = [(v,k) for k,v in originals.items()]
-    orig.sort()
-    f = open(tf.name, "w")
-    for text, (filename,lineno) in orig:
-        f.write("%s:%s:%s" % (filename, lineno, text))
-    f.close()
-
-os.system("%s %s" % (os.getenv("EDITOR"), tf.name))
-
-corrections = grep_parse(tf.name)
-
-files = Set([filename for filename,lineno in corrections.keys()])
-for orig_filename in files:
-    (copy_fd, copy_filename) = tempfile.mkstemp(
-        dir=os.path.dirname(orig_filename),
-        prefix="_%s_tmp_grepedit" % os.path.basename(orig_filename))
-
-    any_changes = False
-    for lineno,line in enumerate(open(orig_filename)):
-        lineno = lineno + 1 # grep is 1-based
-        key = orig_filename,lineno
-        if key in corrections:
-            if line != originals[key]:
-                print "%s:%s has changed since the grep command ran- not modifying this line" % key
-                print repr(line)
-                print repr(originals[key])
-            elif corrections[key] == line:
-                pass
-            else:
-                print "%s:%s substituting new line" % key
-                line = corrections[key]
-                any_changes = True
-        os.write(copy_fd, line)
-
-    os.close(copy_fd)
-    if any_changes:
-        os.rename(copy_filename, orig_filename)
-    else:
-        print "no changes made in file %s" % orig_filename
-        os.unlink(copy_filename)
-        
-