def _add_egg_repos(self, url, product_metadata): if 'egg_repos' in product_metadata: repos = ['{}/{}/'.format(url, path) for path in product_metadata['egg_repos']] else: repos = [url] self.enst.chain.repos.extend(repos) if not product_metadata['subscribed']: for repo in repos: self.enst.chain.unsubscribed_repos[repo] = product_metadata for cname, project in product_metadata['eggs'].iteritems(): for distname, data in project['files'].iteritems(): name, version, build = dist_naming.split_eggname(distname) spec = dict(metadata_version='1.1', name=name, version=version, build=build, python=data.get('python', '2.7'), packages=data.get('depends', []), size=data.get('size')) add_Reqs_to_spec(spec) assert spec['cname'] == cname, distname dist = repos[data.get('repo', 0)] + distname self.enst.chain.index[dist] = spec self.enst.chain.groups[cname].append(dist)
def vb_egg(fn): try: n, v, b = dist_naming.split_eggname(fn) return comparable_version(v), b except IrrationalVersionError: return None except AssertionError: return None
def get_status(self): if not self._status: # the result is a dict mapping cname to ... res = {} for cname in self.get_installed_cnames(): d = defaultdict(str) info = self.enst.get_installed_info(cname)[0][1] if info is None: continue d.update(info) res[cname] = d for cname in self.enst.chain.groups.iterkeys(): dist = self.enst.chain.get_dist(Req(cname), allow_unsubscribed=True) if dist is None: continue repo, fn = dist_naming.split_dist(dist) n, v, b = dist_naming.split_eggname(fn) if cname not in res: d = defaultdict(str) d['name'] = d.get('name', cname) res[cname] = d res[cname]['a-egg'] = fn res[cname]['a-ver'] = '%s-%d' % (v, b) def vb_egg(fn): try: n, v, b = dist_naming.split_eggname(fn) return comparable_version(v), b except IrrationalVersionError: return None except AssertionError: return None for d in res.itervalues(): if d['egg_name']: # installed if d['a-egg']: if vb_egg(d['egg_name']) >= vb_egg(d['a-egg']): d['status'] = 'up-to-date' else: d['status'] = 'updateable' else: d['status'] = 'installed' else: # not installed if d['a-egg']: d['status'] = 'installable' self._status = res return self._status
def get_status(self): if not self._status: # the result is a dict mapping cname to ... res = {} for cname in self.get_installed_cnames(): d = defaultdict(str) info = self.enst.get_installed_info(cname)[0][1] if info is None: continue d.update(info) res[cname] = d for cname in self.enst.chain.groups.iterkeys(): dist = self.enst.chain.get_dist(Req(cname)) if dist is None: continue repo, fn = dist_naming.split_dist(dist) n, v, b = dist_naming.split_eggname(fn) if cname not in res: d = defaultdict(str) d["name"] = d.get("name", cname) res[cname] = d res[cname]["a-egg"] = fn res[cname]["a-ver"] = "%s-%d" % (v, b) def vb_egg(fn): try: n, v, b = dist_naming.split_eggname(fn) return comparable_version(v), b except IrrationalVersionError: return None except AssertionError: return None for d in res.itervalues(): if d["egg_name"]: # installed if d["a-egg"]: if vb_egg(d["egg_name"]) >= vb_egg(d["a-egg"]): d["status"] = "up-to-date" else: d["status"] = "updateable" else: d["status"] = "installed" else: # not installed if d["a-egg"]: d["status"] = "installable" self._status = res return self._status
def whats_new(c): fmt = '%-25s %-15s %s' print fmt % ('Name', 'installed', 'available') print 60 * "=" inst = set(egginst.get_installed()) something_new = False for egg_name in inst: if not dist_naming.is_valid_eggname(egg_name): continue in_n, in_v, in_b = dist_naming.split_eggname(egg_name) dist = c.get_dist(Req(in_n)) if dist is None: continue av_v = c.index[dist]['version'] if (av_v != in_v and comparable_version(av_v) > comparable_version(in_v)): print fmt % (in_n, in_v, av_v) something_new = True if not something_new: print "no new version of any installed package is available"
def whats_new(c): fmt = '%-25s %-15s %s' print fmt % ('Name', 'installed', 'available') print 60* "=" inst = set(egginst.get_installed()) something_new = False for egg_name in inst: if not dist_naming.is_valid_eggname(egg_name): continue in_n, in_v, in_b = dist_naming.split_eggname(egg_name) dist = c.get_dist(Req(in_n)) if dist is None: continue av_v = c.index[dist]['version'] if (av_v != in_v and comparable_version(av_v) > comparable_version(in_v)): print fmt % (in_n, in_v, av_v) something_new = True if not something_new: print "no new version of any installed package is available"
def _add_egg_repos(self, url, index): if "egg_repos" in index: repos = [url + "/" + path + "/" for path in index["egg_repos"]] else: repos = [url] self.enst.chain.repos.extend(repos) for cname, project in index["eggs"].iteritems(): for distname, data in project["files"].iteritems(): name, version, build = dist_naming.split_eggname(distname) spec = dict( metadata_version="1.1", name=name, version=version, build=build, python=data.get("python", "2.7"), packages=data.get("depends", []), ) add_Reqs_to_spec(spec) assert spec["cname"] == cname, distname dist = repos[data.get("repo", 0)] + distname self.enst.chain.index[dist] = spec self.enst.chain.groups[cname].append(dist)