Raise exception, if dosed does not change anything in given file.
This commit is contained in:
@@ -18,6 +18,7 @@ import glob
|
|||||||
import sys
|
import sys
|
||||||
import fileinput
|
import fileinput
|
||||||
import re
|
import re
|
||||||
|
import filecmp
|
||||||
|
|
||||||
import gettext
|
import gettext
|
||||||
__trans = gettext.translation('pisi', fallback=True)
|
__trans = gettext.translation('pisi', fallback=True)
|
||||||
@@ -192,6 +193,7 @@ def dosed(sourceFiles, findPattern, replacePattern = ''):
|
|||||||
''' example call: pisitools.dosed("/etc/pass*", "caglar")'''
|
''' example call: pisitools.dosed("/etc/pass*", "caglar")'''
|
||||||
''' example call: pisitools.dosed("Makefile", "(?m)^(HAVE_PAM=.*)no", r"\1yes")'''
|
''' example call: pisitools.dosed("Makefile", "(?m)^(HAVE_PAM=.*)no", r"\1yes")'''
|
||||||
|
|
||||||
|
backupExtension = ".pisi-backup"
|
||||||
sourceFilesGlob = glob.glob(sourceFiles)
|
sourceFilesGlob = glob.glob(sourceFiles)
|
||||||
|
|
||||||
#if there is no match, raise exception
|
#if there is no match, raise exception
|
||||||
@@ -200,10 +202,16 @@ def dosed(sourceFiles, findPattern, replacePattern = ''):
|
|||||||
|
|
||||||
for sourceFile in sourceFilesGlob:
|
for sourceFile in sourceFilesGlob:
|
||||||
if can_access_file(sourceFile):
|
if can_access_file(sourceFile):
|
||||||
for line in fileinput.input(sourceFile, inplace = 1):
|
backupFile = "%s%s" % (sourceFile, backupExtension)
|
||||||
|
for line in fileinput.input(sourceFile, inplace = 1, backup = backupExtension):
|
||||||
#FIXME: In-place filtering is disabled when standard input is read
|
#FIXME: In-place filtering is disabled when standard input is read
|
||||||
line = re.sub(findPattern, replacePattern, line)
|
line = re.sub(findPattern, replacePattern, line)
|
||||||
sys.stdout.write(line)
|
sys.stdout.write(line)
|
||||||
|
if can_access_file(backupFile):
|
||||||
|
if filecmp.cmp(sourceFile, backupFile):
|
||||||
|
raise FileError(_('dosed method has not changed file \'%s\'.') % sourceFile)
|
||||||
|
else:
|
||||||
|
os.unlink(backupFile)
|
||||||
else:
|
else:
|
||||||
raise FileError(_('File does not exist or permission denied: %s') % sourceFile)
|
raise FileError(_('File does not exist or permission denied: %s') % sourceFile)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user