diff --git a/build_models_xml.py b/build_models_xml.py index 3474f6789437eeeacc29e8f77f362666f2169613..87bb02fc85ce283accfb579fdb3d9def84b5fe0f 100755 --- a/build_models_xml.py +++ b/build_models_xml.py @@ -61,6 +61,24 @@ models = {} model_prefixes = ["no/nibio/vips/model", "fi/luke/vips/model"] +# Returns -1 if number_a < number_b, 1 if number_a > number_b, 0 if equal +def compare_version_numbers(number_a, number_b): + number_a_parts = list(map(int,number_a.split("."))) + number_b_parts = list(map(int,number_b.split("."))) + for idx in range(len(number_a_parts)): + if idx > len(number_b_parts) -1: + # Versions are equal so far, but number_b is out of parts. Thus: number_a must be a greater version + return 1 + if number_a_parts[idx] < number_b_parts[idx]: + return -1 + elif number_a_parts[idx] > number_b_parts[idx]: + return 1 + # No differences found in the parts that number_a and number_b have in common. + # If number_a and number_b have same number of parts, they must be equal + # If number_b still has parts left, it must be greater + return -1 if len(number_b_parts) > len(number_a_parts) else 0 + + # Filter models and store only the most recent version (highest alphanumeric number) for package in all_packages: for model_prefix in model_prefixes: @@ -71,7 +89,10 @@ for package in all_packages: models[model_name]["groupId"] = model_prefix.replace("/", ".") models[model_name]["version"] = package["version"] else: - models[model_name]["version"] = package["version"] if package["version"] > models[model_name]["version"] else models[model_name]["version"] + # Compare models so that 1.1.10 > 1.1.9 + models[model_name]["version"] = package["version"] if compare_version_numbers(package["version"], models[model_name]["version"]) > 0 else models[model_name]["version"] + #models[model_name]["version"] = package["version"] if package["version"] > models[model_name]["version"] else models[model_name]["version"] + #print("%s %s" % (model_name, package["version"])) # Build partial Maven XML dependencies = ET.Element("dependencies")