1+ from __future__ import annotations
2+
3+ import json
14import os
25import subprocess
6+ from typing import TYPE_CHECKING
7+ from urllib .request import urlopen
38
4- import requests
9+ if TYPE_CHECKING :
10+ from collections .abc import KeysView
511
612MVN_BASE_URL = "https://search.maven.org"
713
814
9- def download_openapi_generator_jar (version ) :
15+ def download_openapi_generator_jar (version : str ) -> None :
1016 download_url = (
1117 MVN_BASE_URL
1218 + "/remotecontent?filepath=org/openapitools/openapi-generator-cli/"
@@ -19,54 +25,65 @@ def download_openapi_generator_jar(version):
1925 if os .path .exists ("openapi-generator.jar" ):
2026 os .remove ("openapi-generator.jar" )
2127
22- if os .path .exists ("version" ):
23- os .remove ("version" )
24-
2528 print (download_url )
26- response = requests .get (download_url )
29+ response = urlopen (download_url )
30+
31+ if response .status != 200 :
32+ raise RuntimeError (f"{ response .status } : { download_url } " )
33+
2734 print ("Downloading complete" )
2835
29- with open (
30- "openapi_generator_cli/openapi-generator.jar" , "wb"
31- ) as openapi_generator_jar :
32- openapi_generator_jar .write (response .content )
36+ with open ("openapi_generator_cli/openapi-generator.jar" , "wb" ) as openapi_generator_jar :
37+ openapi_generator_jar .write (response .read ())
3338 openapi_generator_jar .close ()
3439
35- with open ("version" , "w" ) as version_file :
36- version_file .write (version )
37- version_file .close ()
40+ updated_toml = (
41+ open ("pyproject.toml" )
42+ .read ()
43+ .replace (
44+ '[tool.poetry]\n version = "0"' ,
45+ f'[tool.poetry]\n version = "{ version } "' ,
46+ 1 ,
47+ )
48+ )
49+ with open ("pyproject.toml" , "w" ) as toml :
50+ toml .write (updated_toml )
3851
3952
40- def get_available_versions ():
53+ def get_available_versions () -> list [ str ] :
4154 mvn_url = (
42- MVN_BASE_URL
43- + "/solrsearch/select?q=g:org.openapitools+AND+a:openapi-generator-cli&core=gav"
55+ MVN_BASE_URL + "/solrsearch/select?q=g:org.openapitools+AND+a:openapi-generator-cli&core=gav"
4456 "&start=0&rows=200"
4557 )
46- response = requests . get (mvn_url )
47- docs = response .json ( )["response" ]["docs" ]
58+ response = urlopen (mvn_url )
59+ docs = json . loads ( response .read () )["response" ]["docs" ]
4860 return [doc ["v" ] for doc in docs ]
4961
5062
51- def get_published_vesions ():
63+ def get_published_vesions () -> KeysView [ str ] :
5264 pypi_url = "https://pypi.org/pypi/openapi-generator-cli/json"
53- response = requests .get (pypi_url )
65+ response = urlopen (pypi_url )
66+
67+ if response .status != 200 :
68+ raise RuntimeError (f"{ response .status } : { pypi_url } " )
5469
55- if response .status_code == 404 :
56- return []
70+ published_releases = json .loads (response .read ()).get ("releases" )
71+ if not isinstance (published_releases , dict ):
72+ raise TypeError (f"Expected dict, got { type (published_releases )} " )
5773
58- published_versions = response .json ().get ("releases" ).keys ()
59- return published_versions
74+ return published_releases .keys ()
6075
6176
62- def publish ():
77+ def publish () -> None :
6378 latest_version = get_available_versions ()[0 ]
6479 published_versions = get_published_vesions ()
6580
6681 if latest_version not in published_versions :
6782 print ("Publishing version " + latest_version )
6883 download_openapi_generator_jar (latest_version )
69- subprocess .check_call ("python setup.py upload" , shell = True )
84+ subprocess .check_call ("poetry build" , shell = True )
85+ subprocess .check_call ("poetry publish -r testpypi" , shell = True )
86+ subprocess .check_call ("poetry publish" , shell = True )
7087
7188
7289if __name__ == "__main__" :
0 commit comments