Welcome, guest | Sign In | My Account | Store | Cart
#!/usr/bin/env python                                                                                                        
# -*- coding: utf-8 -*-                                                                                                      
#                                                                                                                            
# Author: Jonathan Cervidae <jonathan.cervidae@gmail.com>                                                                    
# PGP Fingerprint: 2DC0 0A44 123E 6CC2 EB55  EAFB B780 421F BF4C 4CB4                                                        
# Last changed: $LastEdit: 2009-05-16 18:53:50 BST$                                                                          
#
# After creating this program, googling for the tag names it found located me
# this document:
#
# http://cpansearch.perl.org/src/RJRAY/Perl-RPM-1.51/RPM/Constants.pm
#
# Which nicely describes what each of these tags are for.

import rpm
import pprint

def is_a_key(string):
    for character in string:
        ordinal = ord(character)
        if ordinal is not 95 and ( ordinal < 65 or ordinal > 90 ):
            return False
        return True

header_keys = []
transaction_set = rpm.TransactionSet()
match_iterator = transaction_set.dbMatch()

# Map RPM key names to numbers
numbers_to_names = {}
for attribute_name in dir(rpm):
    if not is_a_key(attribute_name):
        continue
    if not isinstance(rpm.__dict__[attribute_name], int):
        continue
    numbers_to_names[rpm.__dict__[attribute_name]] = attribute_name

header = None
while match_iterator:
    try:
        header = match_iterator.next()
    except StopIteration:
        raise RuntimeError, "Not any headers"
    break

header_metadata = {}
for key in header.keys():
    header_metadata[numbers_to_names[key]] = header[key]

pprint.pprint(header_metadata)

History

  • revision 2 (13 years ago)
  • previous revisions are not available