def get_repository_cfg(uri): """Renvoie : L'objet ConfigParser associé au dépôt""" # Téléchargement du dépôt try: tmp = urllib2.urlopen(uri + '/repository.ini').read() except (urllib2.URLError, urllib2.HTTPError) as e: logger.warning(u'Impossible de se connecter au dépôt %s' % uri) raise RepositoryConnectionError(uri, e) # Lecture du dépôt cfg = ConfigParser() try: cfg.read_string(tmp.decode('utf-8')) except Exception as e: logger.warning(u'Le dépôt %s est invalide' % uri) raise InvalidRepository(uri, e) return cfg
def _get_installation_infos(self, filename=None): """ Arguments : filename : chemin vers le paquet (facultatif) Renvoie : """ infos = {} # Emplacement de l'application infos["application_root"] = os.path.join("Apps", self.id) infos["install_dir"] = "Apps" infos["remove"] = {} infos["remove"]["files"] = [] infos["remove"]["dirs"] = [] infos["remove"]["main"] = ["App", "Other"] infos["preserve"] = {} infos["preserve"]["files"] = [] infos["preserve"]["dirs"] = [] cfg = ConfigParser() if filename: try: package = zipfile.ZipFile(filename, "r") except Exception as e: logger.error("Le paquet %s n'est pas une archive zip." % self.id) raise InvalidPackage(self, e) try: inifile = package.read(self.id + "/App/AppInfo/installer.ini") cfg.read_string(inifile.decode("utf-8")) except: return infos else: cfg.read("./cache/installed/" + self.id + "/installer.ini") # Emplacement de l'application infos["application_root"] = cfg.get("Framakey", "ApplicationRoot", "Apps/%s" % self.id) infos["install_dir"] = cfg.get("Framakey", "InstallDir", "Apps") # Dossier principaux if cfg.get("MainDirectories", "RemoveAppDirectory", "true").lower() != "true": infos["remove"]["main"].remove("App") if cfg.get("MainDirectories", "RemoveDataDirectory", "false").lower() == "true": infos["remove"]["main"].append("Data") if cfg.get("MainDirectories", "RemoveOtherDirectory", "true").lower() != "true": infos["remove"]["main"].remove("Other") # Fichiers à supprimer infos["remove"]["files"] = [i.replace("\\", "/") for i in cfg.getlist("FilesToRemove", "RemoveFile")] # Fichiers à conserver infos["preserve"]["files"] = [i.replace("\\", "/") for i in cfg.getlist("FilesToPreserve", "PreserveFile")] # Dossiers à supprimer infos["remove"]["dirs"] = [i.replace("\\", "/") for i in cfg.getlist("DirectoriesToRemove", "RemoveDirectory")] # Dossiers à conserver infos["preserve"]["dirs"] = [ i.replace("\\", "/") for i in cfg.getlist("DirectoriesToPreserve", "PreserveDirectory") ] return infos