summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElan Ruusamäe2015-11-03 21:48:27 (GMT)
committerElan Ruusamäe2015-11-03 21:49:21 (GMT)
commit28c1c9e596748c147b0720de148647fc2f85c280 (patch)
tree9a30d510b9a16021b502b4961601fcf61d5b6518
parent1ad5b935b2447ace56e79dd7ccafbe6ab16d8648 (diff)
downloadpldnotify-28c1c9e596748c147b0720de148647fc2f85c280.zip
pldnotify-28c1c9e596748c147b0720de148647fc2f85c280.tar.gz
add specparser to parse out macros
-rwxr-xr-xpldnotify.py44
1 files changed, 38 insertions, 6 deletions
diff --git a/pldnotify.py b/pldnotify.py
index daecd33..3dbbd8a 100755
--- a/pldnotify.py
+++ b/pldnotify.py
@@ -1,15 +1,47 @@
#!/usr/bin/python
import argparse
-import collections
-import os
import rpm
-import shlex
-import subprocess
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):
- print 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.')
@@ -19,7 +51,7 @@ def main():
parser.add_argument('package',
type=str,
help='Package to check')
-
+
args = parser.parse_args()
check_package(args.package)