blob: 3dbbd8af48c412bbac7f2d5dbf50a6163281141c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
#!/usr/bin/python
import argparse
import rpm
import sys
"""
RPM Spec parser
"""
class RPMSpec:
def __init__(self, specfile):
self._specfile = specfile
self._spec = None
self._macros = None
def getSpec(self):
if not self._spec:
ts = rpm.TransactionSet()
self._spec = ts.parseSpec(self._specfile)
return self._spec
def macros(self):
if not self._macros:
s = self.getSpec()
macros = {}
for key, macro in s.macros().items():
# skip functions
if 'opts' in macro:
continue
# skip unused macros
if macro['used'] <= 0:
continue
macros[key] = macro['body']
self._macros = macros
return self._macros
def check_package(package):
s = RPMSpec(package)
macros = s.macros()
name = macros['name']
version = macros['version']
print "%s: %s" % (name, version)
def main():
parser = argparse.ArgumentParser(description='PLD-Notify: project to monitor upstream releases.')
parser.add_argument('-d', '--debug',
action='store_true',
help='Enable debugging (default: %(default)s)')
parser.add_argument('package',
type=str,
help='Package to check')
args = parser.parse_args()
check_package(args.package)
if __name__ == '__main__':
main()
# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
|