Exemple #1
0
def info_project(cfg, location):
    project = prosconfig.ProjectConfig(path=location)
    details = dict()
    details['kernel'] = project.kernel
    templates = local.get_local_templates(
        pros_cfg=cfg.pros_cfg, template_types=[TemplateTypes.kernel])
    details['kernelUpToDate'] = semver.compare(project.kernel,
                                               sorted(templates, key=lambda t: semver.Version(t.version))[-1].version) \
                                >= 0
    templates = local.get_local_templates(
        pros_cfg=cfg.pros_cfg, template_types=[TemplateTypes.library])
    details['libraries'] = dict()
    if project.libraries.__class__ is dict:
        for (lib, ver) in project.libraries.items():
            details['libraries'][lib] = dict()
            details['libraries'][lib]['version'] = ver
            sorted_versions = sorted(
                [t.version for t in templates if t.name == lib],
                key=lambda v: semver.Version(v))
            if len(sorted_versions) > 0:
                latest = semver.compare(ver, sorted_versions[-1]) >= 0
            else:
                latest = True
            details['libraries'][lib]['latest'] = latest
    click.echo(json.dumps(details))
Exemple #2
0
def most_recent(version_constraint_string1, version_constraint_string2):
    range1 = version_range(version_constraint_string1)
    range2 = version_range(version_constraint_string2)
    if (not range1[1] is None) and (not range2[0] is None) and sv.compare(range1[1],range2[0])==-1:
        return version_constraint(range2)
    elif (not range2[1] is None) and (not range1[0] is None) and sv.compare(range2[1],range1[0])==-1:
        return version_constraint(range1)
    raise ValueError(f"ERROR: {range1} and {range2} intersect.")
Exemple #3
0
 def _get_version(self, spec):
     spec = self._parse_spec(spec)
     version = spec['version']
     version_sign = spec['version_sign']
     resource_name = spec['resource_name']
     if version_sign == '==':
         return os.path.join(self.fpath, spec['resource_name'], version)
     found = self.iter_contents(resource_name)
     if version is None:
         sc = semantic_version.compare
         sorted_vers = sorted(found,
                              cmp=lambda a, b: sc(a['version'],
                                                  b['version']),
                              reverse=True)
         if not sorted_vers:
             raise ResourceNotFound(spec)
         version = sorted_vers[0]['version']
     else:
         version = '{}{}'.format(version_sign, version)
         matched = filter(lambda x: semantic_version.match(version,
                                                           x['version']),
                          found)
         sorted_vers = sorted(matched,
                              cmp=lambda a, b: semantic_version.compare(
                                  a['version'],
                                  b['version']),
                              reverse=True)
         version = next((x['version'] for x in sorted_vers
                         if semantic_version.match(version, x['version'])),
                        None)
     if version is None:
         raise ResourceNotFound(spec)
     return version
Exemple #4
0
 def _get_version(self, spec):
     spec = self._parse_spec(spec)
     version = spec['version']
     version_sign = spec['version_sign']
     resource_name = spec['resource_name']
     if version_sign == '==':
         return os.path.join(self.fpath, spec['resource_name'], version)
     found = self.iter_contents(resource_name)
     if version is None:
         sc = semantic_version.compare
         sorted_vers = sorted(found,
                              cmp=lambda a, b: sc(a['version'],
                                                  b['version']),
                              reverse=True)
         if not sorted_vers:
             raise ResourceNotFound(spec)
         version = sorted_vers[0]['version']
     else:
         version = '{}{}'.format(version_sign, version)
         matched = filter(lambda x: semantic_version.match(version,
                                                           x['version']),
                          found)
         sorted_vers = sorted(matched,
                              cmp=lambda a, b: semantic_version.compare(
                                  a['version'],
                                  b['version']),
                              reverse=True)
         version = next((x['version'] for x in sorted_vers
                         if semantic_version.match(version, x['version'])),
                        None)
     if version is None:
         raise ResourceNotFound(spec)
     return version
Exemple #5
0
 def get_latest_repo_version(self, name, requirements):
     version = None
     for versions in PackageRepoIterator(name, self.repositories):
         pkgdata = self.max_satisfying_repo_version(versions, requirements)
         if not pkgdata:
             continue
         if not version or semantic_version.compare(pkgdata["version"], version) == 1:
             version = pkgdata["version"]
     return version
Exemple #6
0
 def version_cmp(af1, af2):
     if af1['version'] is None and af2['version'] is None:
         return 0
     elif af1['version'] is None:
         return -1
     elif af2['version'] is None:
         return 1
     return semantic_version.compare(
         af1['version'], af2['version'])
Exemple #7
0
 def version_cmp(af1, af2):
     if af1['version'] is None and af2['version'] is None:
         return 0
     elif af1['version'] is None:
         return -1
     elif af2['version'] is None:
         return 1
     return semantic_version.compare(af1['version'],
                                     af2['version'])
Exemple #8
0
 def compare(self):
     if self.valid_semver():
         comparison = semantic_version.compare(self.current_version, self.latest_version)
         if (comparison >= 0):
             self.status = "UPTODATE"
         else:
             self.status = "NEEDS_UPDATE"
     else:
         self.status = "INVALID_SEMVER"
 def get_latest_repo_version(self, name, requirements):
     version = None
     for versions in PackageRepoIterator(name, self.repositories):
         pkgdata = self.max_satisfying_repo_version(versions, requirements)
         if not pkgdata:
             continue
         if not version or semantic_version.compare(pkgdata['version'],
                                                    version) == 1:
             version = pkgdata['version']
     return version
Exemple #10
0
 def compare(self):
     if self.valid_semver():
         comparison = semantic_version.compare(self.current_version,
                                               self.latest_version)
         if (comparison >= 0):
             self.status = "UPTODATE"
         else:
             self.status = "NEEDS_UPDATE"
     else:
         self.status = "INVALID_SEMVER"
 def test_comparisons(self):
     for i, first in enumerate(self.order):
         first_ver = semantic_version.Version(first)
         for j, second in enumerate(self.order):
             second_ver = semantic_version.Version(second)
             if i < j:
                 self.assertTrue(first_ver < second_ver, '%r !< %r' % (first_ver, second_ver))
             elif i == j:
                 self.assertTrue(first_ver == second_ver, '%r != %r' % (first_ver, second_ver))
             else:
                 self.assertTrue(first_ver > second_ver, '%r !> %r' % (first_ver, second_ver))
             self.assertEqual(cmp(i, j), semantic_version.compare(first, second))
Exemple #12
0
 def get_latest_repo_version(  # pylint: disable=unused-argument
         self,
         name,
         requirements,
         silent=False):
     version = None
     for versions in PackageRepoIterator(name, self.repositories):
         pkgdata = self.max_satisfying_repo_version(versions, requirements)
         if not pkgdata:
             continue
         if (not version or semantic_version.compare(
                 pkgdata["version"], version) == 1):
             version = pkgdata["version"]
     return version
Exemple #13
0
 def get_latest_repo_version(  # pylint: disable=unused-argument
         self,
         name,
         requirements,
         silent=False):
     version = None
     for versions in PackageRepoIterator(name, self.repositories):
         pkgdata = self.max_satisfying_repo_version(versions, requirements)
         if not pkgdata:
             continue
         if not version or semantic_version.compare(pkgdata['version'],
                                                    version) == 1:
             version = pkgdata['version']
     return version
    def test_comparisons(self):
        for i, first in enumerate(self.order):
            first_ver = semantic_version.Version(first)
            for j, second in enumerate(self.order):
                second_ver = semantic_version.Version(second)
                with self.subTest(first=first, second=second):
                    if i < j:
                        self.assertTrue(first_ver < second_ver, '%r !< %r' % (first_ver, second_ver))
                    elif i == j:
                        self.assertTrue(first_ver == second_ver, '%r != %r' % (first_ver, second_ver))
                    else:
                        self.assertTrue(first_ver > second_ver, '%r !> %r' % (first_ver, second_ver))

                    cmp_res = -1 if i < j else (1 if i > j else 0)
                    self.assertEqual(cmp_res, semantic_version.compare(first, second))
def main():
    parser = argparse.ArgumentParser(description='Maven Update v' +
                                     __version__)
    parser.add_argument('file', help='gradle.build file')
    parser.add_argument('-u',
                        '--update',
                        help='Actually update the gradle.build file',
                        action='store_true')
    parser.add_argument('-p',
                        '--prerelease',
                        help='Update to prerelease versions',
                        action='store_true')

    args = parser.parse_args()

    log.debug(args.file)

    gradlefile = os.path.expanduser(args.file)
    if os.path.abspath(gradlefile):
        gradlefile = os.path.join(os.getcwd(), gradlefile)

    artifacts = parse_artifacts(gradlefile)

    new_versions = []
    for art in artifacts:
        if 'com.android.support' not in art.group and 'com.google.android.gms' not in art.group:
            latest_version = find_latest_version(art, args.prerelease)
            new_versions.append(VersionCheck(latest_version, art))
    log.debug(new_versions)

    for check in new_versions:
        meta = check.metadata
        try:
            if semantic_version.compare(meta.version, check.version) < 0:
                print('%s:%s %s -> %s' %
                      (meta.group, meta.artifact, meta.version, check.version))
            else:
                print('%s:%s %s current' %
                      (meta.group, meta.artifact, meta.version))

        except ValueError as e:
            print('%s for %s' % (e, meta))

    # actually rewrite the file, if one want
    if args.update:
        print("Rewriting build.gradle with updates..")
        rewrite(gradlefile, new_versions)
Exemple #16
0
def _update_highest_version(collection_version):
    """
    Checks if this version is greater than the most highest one.

    If this version is the first version in collection, is_highest is set to True.
    If this version is greater than the highest version in collection, set is_highest
    equals False on the last highest version and True on this version.
    Otherwise does nothing.
    """
    last_highest = collection_version.collection.versions.filter(is_highest=True).first()
    if not last_highest:
        collection_version.is_highest = True
        return None
    if semver.compare(collection_version.version, last_highest.version) > 0:
        last_highest.is_highest = False
        collection_version.is_highest = True
        last_highest.save()
        collection_version.save()
def main():
    parser = argparse.ArgumentParser(description='Maven Update v'+__version__)
    parser.add_argument('file', help='gradle.build file')
    parser.add_argument('-u', '--update', help='Actually update the gradle.build file', action='store_true')
    parser.add_argument('-p', '--prerelease', help='Update to prerelease versions', action='store_true')

    args = parser.parse_args()

    log.debug(args.file)

    gradlefile = os.path.expanduser(args.file)
    if os.path.abspath(gradlefile):
        gradlefile = os.path.join(os.getcwd(), gradlefile)

    artifacts = parse_artifacts(gradlefile)

    new_versions = []
    for art in artifacts:
        if 'com.android.support' not in art.group and 'com.google.android.gms' not in art.group:
            latest_version = find_latest_version(art, args.prerelease)
            new_versions.append(VersionCheck(latest_version, art))
    log.debug(new_versions)

    for check in new_versions:
        meta = check.metadata
        try:
            if semantic_version.compare(meta.version, check.version) < 0:
                print('%s:%s %s -> %s' % (meta.group, meta.artifact, meta.version, check.version))
            else:
                print('%s:%s %s current' % (meta.group, meta.artifact, meta.version))

        except ValueError as e:
            print('%s for %s' % (e, meta))

    # actually rewrite the file, if one want
    if args.update:
        print("Rewriting build.gradle with updates..")
        rewrite(gradlefile, new_versions)