Пример #1
0
    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
Пример #2
0
 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)
Пример #3
0
 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)
Пример #4
0
 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
Пример #5
0
 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
Пример #6
0
    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)
Пример #7
0
    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)
Пример #8
0
    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)