diff mbox

[namcap,v2] Warn for non-unique source filenames

Message ID 20181009104301.2802-1-dopsi@dopsi.ch
State Accepted, archived
Headers show

Commit Message

Simon Doppler Oct. 9, 2018, 10:43 a.m. UTC
Use a PkgbuildRule instead of a PkgInfoRule

---
 Namcap/rules/pkginfo.py | 11 ++++++++++-
 namcap-tags             |  1 +
 2 files changed, 11 insertions(+), 1 deletion(-)
diff mbox

Patch

diff --git a/Namcap/rules/pkginfo.py b/Namcap/rules/pkginfo.py
index 216e417..5a42810 100644
--- a/Namcap/rules/pkginfo.py
+++ b/Namcap/rules/pkginfo.py
@@ -20,7 +20,8 @@ 
 "These rules checks basic sanity of package metadata"
 
 import re
-from Namcap.ruleclass import PkgInfoRule
+import os
+from Namcap.ruleclass import PkgInfoRule,PkgbuildRule
 
 class CapsPkgnameRule(PkgInfoRule):
 	name = "capsnamespkg"
@@ -43,4 +44,12 @@  class LicenseRule(PkgInfoRule):
 		if "license" not in pkginfo or len(pkginfo["license"]) == 0:
 			self.errors.append(("missing-license", ()))
 
+class NonUniqueSourcesRule(PkgbuildRule):
+	name = "non-unique-source"
+	description = "Verifies the downloaded sources have a unique filename"
+	def analyze(self, pkginfo, tar):
+		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)))
+
 # vim: set ts=4 sw=4 noet:
diff --git a/namcap-tags b/namcap-tags
index 2133c45..5c236db 100644
--- a/namcap-tags
+++ b/namcap-tags
@@ -61,6 +61,7 @@  missing-makedeps %s :: Split PKGBUILD needs additional makedepends %s to work pr
 no-elffiles-not-any-package :: No ELF files and not an "any" package
 non-fhs-info-page %s :: Non-FHS info page (%s) found. Use /usr/share/info instead
 non-fhs-man-page %s :: Non-FHS man page (%s) found. Use /usr/share/man instead
+non-unique-source-name %s :: Non-unique source name (%s). Use a unique filename.
 not-a-common-license %s :: %s is not a common license (it's not in /usr/share/licenses/common/)
 not-enough-checksums %s %i needed :: Not enough %s: %i needed
 package-name-in-uppercase :: No upper case letters in package names