def get(cls, release_type, release_version): files = None if release_type != None: if release_version != None: release_info_dict = releases.getInfo(release_type, release_version) release_plist_name = utilities.createcachefilename(release_info_dict['prefix'], release_info_dict['version']) cached_file_path = utilities.getcachefile(release_plist_name) if os.path.exists(cached_file_path) == True: return cached_file_path else: files = [] type_versions = versions.get(release_type) for version in type_versions: release_version_info = releases.getInfo(release_type, version) path = cls.get(release_type, release_version_info['name']) if path != None: files.append(path) else: files = {} types = releases.get() for type_name in types: packages = cls.get(type_name, None) if len(packages) > 0: files[type_name] = packages return files
def rebuild(cls): config.toggleFirstRun() package_cache = {} total_manifests = 0 for rtype in releases.get(): version = versions.get(rtype) total_manifests += len(version) available_package_manifests = cls.get(None, None) manifests_on_disk = 0 for release_type in available_package_manifests: manifests_on_disk += len(available_package_manifests[release_type]) if manifests_on_disk != total_manifests: logging_helper.getLogger().warn('You are rebuilding the cache without having all the release manifest files downloaded. To be able to access all information you should run "cache download_all" before running "cache rebuild" again.') for release_type in available_package_manifests: release_packages = {} for manifest_path in available_package_manifests[release_type]: manifest = plistlib.readPlist(manifest_path) for package_name in manifest['projects']: package_name = str(package_name) version_number = str(manifest['projects'][package_name]['version']) if package_name in release_packages.keys(): if version_number not in release_packages[package_name]: release_packages[package_name].append(version_number) else: release_packages[package_name] = [version_number] package_cache[str(release_type)] = release_packages package_cache_path = utilities.getcachefile('package_cache.plist') plistlib.writePlist(package_cache, package_cache_path)
def fetch(cls): logging_helper.getLogger().info('Updating package data...') hashes_plist_url = os.path.join(config.getUpdateURL(), 'hashes.plist') hashes_plist_path = utilities.getlookupplistpath('hashes') manager.DownloadFileFromURLToPath(hashes_plist_url, hashes_plist_path) release_plist_url = os.path.join(config.getUpdateURL(), 'releases.plist') release_plist_path = utilities.getreleaseplistpath() manager.DownloadFileFromURLToPath(release_plist_url, release_plist_path) if os.path.exists(release_plist_path) == True: for release_type in releases.get(): release_type_plist_url = os.path.join(config.getUpdateURL(), release_type+'.plist') release_type_plist_path = utilities.getlookupplistpath(release_type) manager.DownloadFileFromURLToPath(release_type_plist_url, release_type_plist_path)
def fetch(cls, release_type, release_version): if release_type != None: if release_version != None: release_info_dict = releases.getInfo(release_type, release_version) release_plist_name = utilities.createcachefilename(release_info_dict['prefix'], release_info_dict['version']) cached_file_path = utilities.getcachefile(release_plist_name) if os.path.exists(cached_file_path) == False: logging_helper.getLogger().info('Downloading version manifest ('+release_plist_name+')...') manager.DownloadPackageManifest(cached_file_path) else: type_versions = versions.get(release_type) for version in type_versions: release_version_info = releases.getInfo(release_type, version) cls.fetch(release_type, release_version_info['name']) else: types = releases.get() for type_name in types: cls.fetch(type_name, None)
def flush(cls, release_type, release_version): if release_type == None and release_version == None: settings = config.read() settings['first_run'] = True config.write(settings) if release_type != None: if release_version != None: release_info_dict = releases.getInfo(release_type, release_version) release_plist_name = utilities.createcachefilename(release_info_dict['prefix'], release_info_dict['version']) cached_file_path = utilities.getcachefile(release_plist_name) if os.path.exists(cached_file_path) == True: logging_helper.getLogger().info('Removing version manifest ('+release_plist_name+')...') manager.RemovePackageManifest(cached_file_path) else: type_versions = versions.get(release_type) for version in type_versions: release_version_info = releases.getInfo(release_type, version) cls.flush(release_type, release_version_info['name']) else: types = releases.get() for type_name in types: cls.flush(type_name, None)