better-wrong-script.diff
[platform/upstream/rpmlint.git] / LSBCheck.py
1 # -*- coding: utf-8 -*-
2 #---------------------------------------------------------------
3 # Project         : Mandriva Linux
4 # Module          : rpmlint
5 # File            : LSBCheck.py
6 # Version         : $Id: LSBCheck.py 1532 2009-01-30 22:01:50Z scop $
7 # Author          : Frederic Lepied
8 # Created On      : Tue Jan 30 14:44:37 2001
9 # Purpose         : LSB non compliance checks
10 #---------------------------------------------------------------
11
12 import re
13
14 import rpm
15
16 from Filter import addDetails, printError
17 import AbstractCheck
18
19
20 version_regex = re.compile('^[a-zA-Z0-9.+]+$')
21 name_regex = re.compile('^[a-z0-9.+-]+$')
22
23 class LSBCheck(AbstractCheck.AbstractCheck):
24
25     def __init__(self):
26         AbstractCheck.AbstractCheck.__init__(self, "LSBCheck")
27
28     def check(self, pkg):
29
30         name = pkg.name
31         if name and not name_regex.search(name):
32             printError(pkg, 'non-lsb-compliant-package-name', name)
33
34         version = pkg[rpm.RPMTAG_VERSION]
35         if version and not version_regex.search(version):
36             printError(pkg, 'non-lsb-compliant-version', version)
37
38         release = pkg[rpm.RPMTAG_RELEASE]
39         if release and not version_regex.search(release):
40             printError(pkg, 'non-lsb-compliant-release', release)
41
42 # Create an object to enable the auto registration of the test
43 check = LSBCheck()
44
45 addDetails(
46 'non-lsb-compliant-package-name',
47 """Your package name contains an illegal character. Use only
48 alphanumeric symbols in your package name.""",
49
50 'non-lsb-compliant-version',
51 """Your version number contains an illegal character. Use only
52 lowercase letters and/or numbers.""",
53
54 'non-lsb-compliant-release',
55 """Your version number contains an illegal character. Use only
56 lowercase letters and/or numbers.""",
57
58 )
59
60 # LSBCheck.py ends here
61
62 # Local variables:
63 # indent-tabs-mode: nil
64 # py-indent-offset: 4
65 # End:
66 # ex: ts=4 sw=4 et