self.count = len(self.lines)\r
self.line_num = 0\r
self.state = START\r
+ self.new_bin = []\r
while self.line_num < self.count and self.format_ok:\r
line_num = self.line_num\r
self.run()\r
return\r
if self.ok:\r
print('The code passed all checks.')\r
+ if self.new_bin:\r
+ print('\nWARNING - The following binary files will be added ' +\r
+ 'into the repository:')\r
+ for binary in self.new_bin:\r
+ print(' ' + binary)\r
\r
def run(self):\r
line = self.lines[self.line_num]\r
if self.state == START:\r
if line.startswith('diff --git'):\r
self.state = PRE_PATCH\r
- self.set_filename(None)\r
+ self.filename = line[13:].split(' ',1)[0]\r
+ self.is_newfile = False\r
+ self.force_crlf = not self.filename.endswith('.sh')\r
elif len(line.rstrip()) != 0:\r
self.format_error("didn't find diff command")\r
self.line_num += 1\r
elif self.state == PRE_PATCH:\r
- if line.startswith('+++ b/'):\r
- self.set_filename(line[6:].rstrip())\r
if line.startswith('@@ '):\r
self.state = PATCH\r
self.binary = False\r
- elif line.startswith('GIT binary patch'):\r
+ elif line.startswith('GIT binary patch') or \\r
+ line.startswith('Binary files'):\r
self.state = PATCH\r
self.binary = True\r
+ if self.is_newfile:\r
+ self.new_bin.append(self.filename)\r
else:\r
ok = False\r
+ self.is_newfile = self.newfile_prefix_re.match(line)\r
for pfx in self.pre_patch_prefixes:\r
if line.startswith(pfx):\r
ok = True\r
'new mode ',\r
'similarity index ',\r
'rename ',\r
- 'Binary files ',\r
)\r
\r
line_endings = ('\r\n', '\n\r', '\n', '\r')\r
\r
- def set_filename(self, filename):\r
- self.hunk_filename = filename\r
- if filename:\r
- self.force_crlf = not filename.endswith('.sh')\r
- else:\r
- self.force_crlf = True\r
+ newfile_prefix_re = \\r
+ re.compile(r'''^\r
+ index\ 0+\.\.\r
+ ''',\r
+ re.VERBOSE)\r
\r
def added_line_error(self, msg, line):\r
lines = [ msg ]\r
- if self.hunk_filename is not None:\r
- lines.append('File: ' + self.hunk_filename)\r
+ if self.filename is not None:\r
+ lines.append('File: ' + self.filename)\r
lines.append('Line: ' + line)\r
\r
self.error(*lines)\r