Downloaded files in source() are required to be unique.  A common
violation of this is from community named files (i.e. LICENSE) that
aren't part of an upstream tarball.

Warn if a source file is downloaded, doesn't have an overriding name,
and has a commonly used name, ignoring extension and case.

Signed-off-by: James P. Harvey <jamespharve...@gmail.com>
---
 Namcap/rules/nonuniquesources.py | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/Namcap/rules/nonuniquesources.py b/Namcap/rules/nonuniquesources.py
index a16f56e..216ae82 100644
--- a/Namcap/rules/nonuniquesources.py
+++ b/Namcap/rules/nonuniquesources.py
@@ -26,9 +26,27 @@ from Namcap.ruleclass import PkgbuildRule
 class nonuniquesources(PkgbuildRule):
        name = "nonuniquesources"
        description = "Verifies the downloaded sources have a unique filename"
+
        def analyze(self, pkginfo, tar):
+               filename_begins_upper_case = [
+                       "AUTHORS",
+                       "CHANGELOG",
+                       "CONTRIBUTING",
+                       "COPYING",
+                       "COPYRIGHT",
+                       "HACKING",
+                       "HISTORY",
+                       "LICENSE",
+                       "NEWS",
+                       "README",
+                       "TODO"
+               ]
+
                for source_file in pkginfo["source"]:
-                       if '::' not in source_file and 
re.match(r'^[vV]?(([0-9]){8}|([0-9]+\.?)+)\.', os.path.basename(source_file)):
-                               self.warnings.append(("non-unique-source-name 
%s", os.path.basename(source_file)))
+                       if '::' not in source_file:
+                               basename = os.path.basename(source_file)
+                               if 
re.match(r'^[vV]?(([0-9]){8}|([0-9]+\.?)+)\.', basename) \
+                                               or ('://' in source_file and 
basename.upper().split('.')[0] in filename_begins_upper_case):
+                                       
self.warnings.append(("non-unique-source-name %s", basename))
 
 # vim: set ts=4 sw=4 noet:
-- 
2.21.0

Reply via email to