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)
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
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'))
def test_pyversion_compare_lg(self) -> None: self.assertTrue(Version('1.0') < Version('1.0a')) self.assertTrue(Version('1.0010') > Version('1.01'))
def test_pyversion_compare_ne(self) -> None: self.assertTrue(Version('1.1') != Version('1.2')) self.assertTrue(Version('1.10') != Version('1.01'))
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'))
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))