#!/usr/bin/env python class Package: _com_pad = 40; # (1) Constructs a new package # # @name Package name # @state Package state ('x', ' ', '.') # @com Package comm (default: None) # @ppa<(String, String)> Package ppa (default: None) # @deb Path to local deb file (if deb) (default: None) # @pad Number of pad spaces (default: 2) # #--------------------------------------------------------# def __init__(self, name=None, sta=None, com=None, ppa=None, deb=False, pad=2): # (1) Arguments check #--------------------------------------------------------# # (1) Is name set # if( name == None ): raise Exception('Missing argument "name" !'); # (2) deb set but not a bool # if( not isinstance(deb, bool) ): raise Exception('Argument "deb" must be a boolean !'); # (3) Check pad is (+) int # try: pad = int(pad); if( pad < 0 ): raise Exception('Argument "pad" must be a positive integer !'); except ValueError: raise Exception('Argument "pad" must be a positive integer !'); # (4) Check state # if( sta != 'x' and sta != '.' and sta != ' ' ): raise Exception('Argument "sta" is invalid or missing !'); # (2) Set attributes #--------------------------------------------------------# self._name = name; self._sta = sta; self._com = com; self._ppa = "%s/%s" % (ppa[0], ppa[1]) if ppa != None else None; self._deb = deb; self._pad = pad; # (2) Getters def getName(self): return self._name; def getDeb(self): return self._deb; def getPpa(self): return self._ppa; def getPad(self): return self._pad; def getCom(self): return self._com; def isInstalled(self): return self._sta == 'x'; def isRemoved(self): return self._sta == '.'; def isPurged(self): return self._sta == ' '; def install(self): self._sta = 'x'; def remove(self): self._sta = '.'; def purge(self): self._sta = ' '; # (3) Serialize # #--------------------------------------------------------# def serialize(self): raw = '%s[%s] %s' % ( ' '*self._pad, self._sta, self._name); if( self._ppa != None ): raw += ' [%s]' % self._ppa; elif( self._deb ): raw += ' [deb]'; if( self._com != None ): raw += ' ' * (self._com_pad - len(raw)); raw += '# %s' % self._com; return raw;