commit:     caafb53fc81e17ce08b833f71b25ae9a8906afa8
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 15 01:01:04 2017 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Dec  5 18:24:48 2017 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=caafb53f

repoman: New linechecks module, gentoo_header

 .../modules/linechecks/gentoo_header/__init__.py   | 21 ++++++++++
 .../modules/linechecks/gentoo_header/header.py     | 49 ++++++++++++++++++++++
 2 files changed, 70 insertions(+)

diff --git a/repoman/pym/repoman/modules/linechecks/gentoo_header/__init__.py 
b/repoman/pym/repoman/modules/linechecks/gentoo_header/__init__.py
new file mode 100644
index 000000000..b80a83ecf
--- /dev/null
+++ b/repoman/pym/repoman/modules/linechecks/gentoo_header/__init__.py
@@ -0,0 +1,21 @@
+# Copyright 2015-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+doc = """Gentoo-header plug-in module for repoman LineChecks.
+Performs header checks on ebuilds."""
+__doc__ = doc[:]
+
+
+module_spec = {
+       'name': 'do',
+       'description': doc,
+       'provides':{
+               'header-check': {
+                       'name': "gentooheader",
+                       'sourcefile': "header",
+                       'class': "EbuildHeader",
+                       'description': doc,
+               },
+       }
+}
+

diff --git a/repoman/pym/repoman/modules/linechecks/gentoo_header/header.py 
b/repoman/pym/repoman/modules/linechecks/gentoo_header/header.py
new file mode 100644
index 000000000..4b75fc4b5
--- /dev/null
+++ b/repoman/pym/repoman/modules/linechecks/gentoo_header/header.py
@@ -0,0 +1,49 @@
+
+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']
+
+

Reply via email to