blob: 4b75fc4b59eb1546d590532cf090a91c83dd99d0 [file] [log] [blame]
import re
import time
from repoman.modules.linechecks.base import LineCheck
class EbuildHeader(LineCheck):
"""Ensure ebuilds have proper headers
Copyright header errors
CVS header errors
License header errors
Args:
modification_year - Year the ebuild was last modified
"""
repoman_check_name = 'ebuild.badheader'
gentoo_copyright = r'^# Copyright ((1999|2\d\d\d)-)?%s Gentoo Foundation$'
gentoo_license = (
'# Distributed under the terms'
' of the GNU General Public License v2')
id_header_re = re.compile(r'.*\$(Id|Header)(:.*)?\$.*')
blank_line_re = re.compile(r'^$')
ignore_comment = False
def new(self, pkg):
if pkg.mtime is None:
self.modification_year = r'2\d\d\d'
else:
self.modification_year = str(time.gmtime(pkg.mtime)[0])
self.gentoo_copyright_re = re.compile(
self.gentoo_copyright % self.modification_year)
def check(self, num, line):
if num > 2:
return
elif num == 0:
if not self.gentoo_copyright_re.match(line):
return self.errors['COPYRIGHT_ERROR']
elif num == 1 and line.rstrip('\n') != self.gentoo_license:
return self.errors['LICENSE_ERROR']
elif num == 2 and self.id_header_re.match(line):
return self.errors['ID_HEADER_ERROR']
elif num == 2 and not self.blank_line_re.match(line):
return self.errors['NO_BLANK_LINE_ERROR']