trailing-whitespace hook: restoring original file in case of failure - fixes #134

This commit is contained in:
Lucas Cimon 2016-08-18 16:39:06 +02:00
parent 775a7906cd
commit 9bd837efaf

View file

@ -9,16 +9,20 @@ from pre_commit_hooks.util import cmd_output
def _fix_file(filename, markdown=False): def _fix_file(filename, markdown=False):
for line in fileinput.input([filename], inplace=True): try:
# preserve trailing two-space for non-blank lines in markdown files for line in fileinput.input([filename], inplace=True, backup='.bak'):
if markdown and (not line.isspace()) and (line.endswith(" \n")): # preserve trailing two-space for non-blank lines in markdown files
line = line.rstrip(' \n') if markdown and (not line.isspace()) and (line.endswith(" \n")):
# only preserve if there are no trailing tabs or unusual whitespace line = line.rstrip(' \n')
if not line[-1].isspace(): # only preserve if there are no trailing tabs or unusual whitespace
print(line + " ") if not line[-1].isspace():
continue print(line + " ")
continue
print(line.rstrip()) print(line.rstrip())
except Exception: # e.g. for UnicodeDecodeError
os.remove(filename) # needed on Windows apparently
os.replace(filename + '.bak', filename)
raise
def fix_trailing_whitespace(argv=None): def fix_trailing_whitespace(argv=None):