Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
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"
Exemplo n.º 6
0
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"
Exemplo n.º 7
0
    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)