def __init__(self, configfile='/etc/rcsctl.conf', silent=False): self.silent = silent msg.__init__(self, self.silent) self.step('lecture de la configuration') self.configfile = configfile self.top = None self.rcstop = None self.rcslst = None self.texteditor = None self.filelist = list() # recupere les parametres de configuration self._getconfig() # recupere la liste des fichiers if self.rcslst: self.poste = 'admin' self.filelist = self._readfilelist(self.rcslst) else: self.poste = 'client' # il n'y a pas de liste de fichier sur le poste, # on construit la liste des fichiers a partir des # fichiers controllés dans rcstop self.filelist = self._buildfilelist()
def __init__(self, todolist, action=None, dryrun=False, silent=False): # affichage des messages self.silent = silent msg.__init__(self, self.silent) self.step('do the job') self.todolist = todolist self.action = action self.dryrun = dryrun self.doit() self.undoit()
def __init__(self, config, silent=False): # affichage des messages self.silent = silent msg.__init__(self, self.silent) # on affiche le resume de la configuration self.config = config self.info(self.config) self.step('preparation ...') # dictionnaire des fichiers a controler, la clef est # le nom du fichier lui meme, la valeure est une liste # des attributs du fichier. self.files = dict() # dictionnaire qui resume les differentes actions # a entreprendre en fonction des fichiers a traiter self.operations = { # ... # chaque valeure est constituée d'une ou deux listes # self.operations[key] = [existant] # self.operations[key] = ([existant][a faire]) # liste les fichiers qui ne seront pas a # traiter, soit innexistants dans le systeme # de fichier, soit le nom du fichier est invalide. 'skips' : [], # liste des dossiers existants. # liste des dossiers a creer dans rcstop. 'dirs' : ([],[]), # liste des liens existants valides. # listes des liens existants non valides, # et des liens a creer. 'links' : ([],[]), # liste des fichiers marques pour check-in. # typiquement les nouveaux fichiers. # liste des fichiers marques pour check-out. # typiquement q<les fichiers qui ont deja subit # un check-in. 'checks' : ([],[]), # liste des fichiers auquel on va tenter d'appliquer # un template. 'template' : [], } # ignore list files self.skips = self.operations['skips'] # directory list self.dirsok, self.dirsko = self.operations['dirs'] # links list self.linksok, self.linksko = self.operations['links'] # embarquement, debarquement self.cin, self.cout = self.operations['checks'] # liste des fichiers qui ont besoin d'un remplacement # exemple : $HOSTNAME dans le fichier sera remplacé par # le nom de machine. self.template = self.operations['template'] if len(config.filelist) > 0: # top doit exister si on veut continuer # un dossier RCS sera crée a cet emplacement qui contiendra # tous les fichiers de revision rcs. if not os.path.exists(self.config.top): self.error('[dir] %s innexistant' % self.config.top) sys.exit(1) # premier lancement rcstop est innexistant il faut le creer if not os.path.exists(self.config.rcstop): self.warn('[dir] %s innexistant' % self.config.rcstop) self.dirsko.append(self.config.rcstop) # construction des listes d'operations a traiter # pour chaque fichier on verifie que les conditions # sont bien reunies for f in config.filelist: # recupere les attributs du fichier self.__getattr(f) # si le fichier est innexistant sur le systeme # on l'ignore self.__skips(f) # dossier a creer ou pas self.__dirs(f) # lien a creer ou pas self.__links(f) # embarquement ou debarquement self.__checks(f) # besoin de remplacement self.__template(f)