|
17 | 17 | MVN_BASE_URL = "https://search.maven.org" |
18 | 18 |
|
19 | 19 |
|
| 20 | +def convert_pre_release_version(version: str) -> str: |
| 21 | + pattern = re.compile(r"(?P<ver>\d+\.\d+\.\d+)-(?P<stage>[ab])(?:lpha|eta)(?P<revision>\d*)$") |
| 22 | + if not (m := pattern.match(version)): |
| 23 | + return version |
| 24 | + |
| 25 | + if not (ver := m["ver"]): |
| 26 | + return version |
| 27 | + |
| 28 | + if not (stage := m["stage"]): |
| 29 | + return version |
| 30 | + |
| 31 | + revision = m["revision"] or 0 |
| 32 | + return pattern.sub(f"{ver}{stage}{revision}", version, count=1) |
| 33 | + |
| 34 | + |
20 | 35 | def download_openapi_generator_jar(version: str) -> None: |
21 | 36 | download_url = ( |
22 | 37 | MVN_BASE_URL |
@@ -46,7 +61,7 @@ def get_available_versions() -> list[str]: |
46 | 61 | ) |
47 | 62 | response = urlopen(mvn_url) # noqa: S310 |
48 | 63 | docs = json.loads(response.read())["response"]["docs"] |
49 | | - return [doc["v"] for doc in docs] |
| 64 | + return [convert_pre_release_version(doc["v"]) for doc in docs] |
50 | 65 |
|
51 | 66 |
|
52 | 67 | def get_published_vesions() -> KeysView[str]: |
@@ -90,6 +105,10 @@ def publish(*, dryrun: bool = False) -> None: |
90 | 105 |
|
91 | 106 | unpublished_versions = natsorted(set(get_available_versions()) - set(get_published_vesions())) |
92 | 107 |
|
| 108 | + if len(unpublished_versions) == 0: |
| 109 | + print("[!] Nothing to be released.") |
| 110 | + return |
| 111 | + |
93 | 112 | for publishing_version in unpublished_versions: |
94 | 113 | print(f"[{publishing_version}] Downloading...") |
95 | 114 | download_openapi_generator_jar(publishing_version) |
|
0 commit comments