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 list(cls, release_type): packages = [] package_cache_path = utilities.getcachefile('package_cache.plist') if os.path.exists(package_cache_path) == True: package_cache = plistlib.readPlist(package_cache_path) release_packages = package_cache.get(str(release_type), None) if release_packages != None: for package_name in release_packages: packages.append(str(package_name)) return sorted(packages)
def get(cls, release_type, package_name): builds_list = [] package_cache_path = utilities.getcachefile('package_cache.plist') if os.path.exists(package_cache_path) == True: package_cache = plistlib.readPlist(package_cache_path) release_packages = package_cache.get(str(release_type), None) if release_packages != None: package_versions = release_packages.get(str(package_name), None) if package_versions != None: builds_list = package_versions return builds_list
def get(cls, release_type, package_name): builds_list = [] package_cache_path = utilities.getcachefile("package_cache.plist") if os.path.exists(package_cache_path) == True: package_cache = plistlib.readPlist(package_cache_path) release_packages = package_cache.get(str(release_type), None) if release_packages != None: package_versions = release_packages.get(str(package_name), None) if package_versions != None: builds_list = package_versions return builds_list
def access(cls, release_type, release_info_dict): found_manifest = False packages = [] if release_type != None and release_info_dict != None: cls.fetch(release_type, release_info_dict.get('name', None)) release_plist_name = utilities.createcachefilename(release_info_dict.get('prefix', None), release_info_dict.get('version', None)) cached_file_path = utilities.getcachefile(release_plist_name) if os.path.exists(cached_file_path) == True: found_manifest = True version_manifest_dict = plistlib.readPlist(cached_file_path) projects_list = version_manifest_dict.get('projects', None) if projects_list != None: for key in projects_list: packages.append(key) else: logging_helper.getLogger().error('Must supply a release type, set this using the "type" command.') return (found_manifest, packages)
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)