Exemple #1
0
def main(args):
    pname = getattr(args, "package-name")
    start_version = Version(getattr(args, "start-version"))
    end_version = Version(getattr(args, "end-version"))
    formatter = getattr(args, "formatter")

    for change in get_changes(pname, start_version, end_version, formatter):
        print(change)
Exemple #2
0
def parse_commit_heading(
        heading: str) -> Optional[Tuple[str, Version, Version]]:
    """Parse nixpkgs-style commit header."""
    msg_pattern = re.compile(
        r"^(?P<attrname>[^:]+):\s*(?P<old_version>.+)\s*(?:→|->)\s*(?P<new_version>.+)$"
    )
    match = msg_pattern.match(heading)

    if match:
        attrname = match.group("attrname").strip()

        if attrname.startswith("fixup!") or attrname.startswith("squash!"):
            return None

        old_version = Version(match.group("old_version").strip())
        new_version = Version(match.group("new_version").strip())

        return (attrname, old_version, new_version)

    return None
Exemple #3
0
 def test_pyversion_compare_flag_any_is_patch(self) -> None:
     self.assertTrue(Version('1.0a1') < Version('1.0a1', Version.ANY_IS_PATCH))
     self.assertTrue(Version('1.0a1', Version.ANY_IS_PATCH) > Version('1.0a1'))
Exemple #4
0
 def test_pyversion_compare_lg(self) -> None:
     self.assertTrue(Version('1.0') < Version('1.0a'))
     self.assertTrue(Version('1.0010') > Version('1.01'))
Exemple #5
0
 def test_pyversion_compare_ne(self) -> None:
     self.assertTrue(Version('1.1') != Version('1.2'))
     self.assertTrue(Version('1.10') != Version('1.01'))
Exemple #6
0
 def test_pyversion_compare_eq(self) -> None:
     self.assertTrue(Version('') == Version(''))
     self.assertTrue(Version('1') == Version('1'))
     self.assertTrue(Version('001.001') == Version('1.1'))
Exemple #7
0
 def test_pyversion_compare_flag_p_is_patch(self):
     self.assertTrue(
         Version('1.0p1') < Version('1.0p1', Version.P_IS_PATCH))
     self.assertTrue(
         Version('1.0p1', Version.P_IS_PATCH) > Version('1.0p1'))
    default="stable")
parser.add_argument(
    "--upper-bound",
    dest="upper-bound",
    help=
    "Only look for versions older than this one (useful for pinning dependencies)."
)

if __name__ == "__main__":
    args = parser.parse_args()

    package_name = getattr(args, "package-name")
    requested_release = getattr(args, "requested-release")
    upper_bound = getattr(args, "upper-bound")
    if upper_bound:
        upper_bound = Version(upper_bound)
    version_predicate = version_policies[getattr(args, "version-policy")]
    version_policy = make_version_policy(version_predicate, requested_release,
                                         upper_bound)

    # The structure of cache.json: https://gitlab.gnome.org/Infrastructure/sysadmin-bin/blob/master/ftpadmin#L762
    cache = json.loads(
        requests.get(
            f"https://ftp.gnome.org/pub/GNOME/sources/{package_name}/cache.json"
        ).text)
    if type(cache) != list or cache[0] != 4:
        print("Unknown format of cache.json file.", file=sys.stderr)
        sys.exit(1)

    versions = map(Version, cache[2][package_name])
    versions = sorted(filter(version_policy, versions))