home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / lib / python2.4 / site-packages / UpdateManager / Common / DistInfo.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2006-08-31  |  3.7 KB  |  151 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. import os
  5. import gettext
  6. from os import getenv
  7. import ConfigParser
  8. _ = gettext.gettext
  9.  
  10. class Suite:
  11.     
  12.     def __init__(self):
  13.         self.name = None
  14.         self.child = False
  15.         self.match_name = None
  16.         self.description = None
  17.         self.base_uri = None
  18.         self.type = None
  19.         self.components = { }
  20.         self.children = []
  21.         self.match_uri = None
  22.         self.distribution = None
  23.         self.available = True
  24.  
  25.  
  26.  
  27. class Component:
  28.     
  29.     def __init__(self):
  30.         self.name = ''
  31.         self.description = ''
  32.         self.description_long = ''
  33.         self.enabled = None
  34.  
  35.  
  36.  
  37. class DistInfo:
  38.     
  39.     def __init__(self, dist = None, base_dir = '/usr/share/update-manager/channels'):
  40.         self.metarelease_uri = ''
  41.         self.suites = []
  42.         if not dist:
  43.             pipe = os.popen('lsb_release -i -s')
  44.             dist = pipe.read().strip()
  45.             pipe.close()
  46.             del pipe
  47.         
  48.         self.dist = dist
  49.         dist_fname = '%s/%s.info' % (base_dir, dist)
  50.         dist_file = open(dist_fname)
  51.         if not dist_file:
  52.             return None
  53.         
  54.         suite = None
  55.         component = None
  56.         for line in dist_file:
  57.             tokens = line.split(':', 1)
  58.             if len(tokens) < 2:
  59.                 continue
  60.             
  61.             field = tokens[0].strip()
  62.             value = tokens[1].strip()
  63.             if field == 'ChangelogURI':
  64.                 self.changelogs_uri = _(value)
  65.                 continue
  66.             if field == 'MetaReleaseURI':
  67.                 self.metarelease_uri = value
  68.                 continue
  69.             if field == 'Suite':
  70.                 if suite:
  71.                     if component:
  72.                         suite.components['%s' % component.name] = (component.description, component.enabled, component.description_long)
  73.                         component = None
  74.                     
  75.                     self.suites.append(suite)
  76.                 
  77.                 suite = Suite()
  78.                 suite.name = value
  79.                 suite.distribution = dist
  80.                 suite.match_name = '^%s$' % value
  81.                 continue
  82.             if field == 'MatchName':
  83.                 suite.match_name = value
  84.                 continue
  85.             if field == 'ParentSuite':
  86.                 suite.child = True
  87.                 for nanny in self.suites:
  88.                     if nanny.name == value:
  89.                         nanny.children.append(suite)
  90.                         continue
  91.                 
  92.             if field == 'Available':
  93.                 suite.available = value
  94.                 continue
  95.             if field == 'RepositoryType':
  96.                 suite.type = value
  97.                 continue
  98.             if field == 'BaseURI':
  99.                 suite.base_uri = value
  100.                 suite.match_uri = value
  101.                 continue
  102.             if field == 'MatchURI':
  103.                 suite.match_uri = value
  104.                 continue
  105.             if field == 'Description':
  106.                 suite.description = _(value)
  107.                 continue
  108.             if field == 'Component':
  109.                 if component:
  110.                     suite.components['%s' % component.name] = (component.description, component.enabled, component.description_long)
  111.                 
  112.                 component = Component()
  113.                 component.name = value
  114.                 continue
  115.             if field == 'Enabled':
  116.                 component.enabled = bool(int(value))
  117.                 continue
  118.             if field == 'CompDescription':
  119.                 component.description = _(value)
  120.                 continue
  121.             if field == 'CompDescriptionLong':
  122.                 component.description_long = _(value)
  123.                 continue
  124.         
  125.         if suite:
  126.             if component:
  127.                 suite.components['%s' % component.name] = (component.description, component.enabled, component.description_long)
  128.                 component = None
  129.             
  130.             self.suites.append(suite)
  131.             suite = None
  132.         
  133.  
  134.  
  135. if __name__ == '__main__':
  136.     d = DistInfo('Ubuntu', '../../channels')
  137.     print d.changelogs_uri
  138.     for suite in d.suites:
  139.         print '\nSuite: %s' % suite.name
  140.         print 'Desc: %s' % suite.description
  141.         print 'BaseURI: %s' % suite.base_uri
  142.         print 'MatchURI: %s' % suite.match_uri
  143.         for component in suite.components:
  144.             print '  %s - %s - %s - %s' % (component, suite.components[component][0], suite.components[component][1], suite.components[component][2])
  145.         
  146.         for child in suite.children:
  147.             print '  %s' % child.description
  148.         
  149.     
  150.  
  151.