11
11
12
12
import jdk # requires install-jdk package
13
13
14
-
15
14
mvn_repo : str
16
15
homedir : Path
17
16
@@ -24,15 +23,16 @@ def initialize_paths():
24
23
25
24
def latest_version ():
26
25
try :
27
- with urlopen (f"https://search.maven.org/solrsearch/select?q=a:antlr4-master+g:org.antlr" , timeout = 10 ) as response :
26
+ with urlopen (f"https://search.maven.org/solrsearch/select?q=a:antlr4-master+g:org.antlr" ,
27
+ timeout = 10 ) as response :
28
28
s = response .read ().decode ("UTF-8" )
29
29
searchResult = json .loads (s )['response' ]
30
30
# searchResult = s.json()['response']
31
31
antlr_info = searchResult ['docs' ][0 ]
32
32
# print(json.dump(searchResult))
33
33
latest = antlr_info ['latestVersion' ]
34
34
return latest
35
- except (error .URLError , error .HTTPError ) as e :
35
+ except (error .URLError , error .HTTPError , TimeoutError ) :
36
36
print ("Could not get latest version number, attempting to fall back to latest downloaded version..." )
37
37
version_dirs = list (filter (lambda directory : re .match (r"[0-9]+\.[0-9]+\.[0-9]+" , directory ), os .listdir (mvn_repo )))
38
38
version_dirs .sort (reverse = True )
@@ -43,6 +43,7 @@ def latest_version():
43
43
print (f"Found version '{ latest_version_dir } ', this version may be out of date" )
44
44
return latest_version_dir
45
45
46
+
46
47
def antlr4_jar (version ):
47
48
jar = os .path .join (mvn_repo , version , f'antlr4-{ version } -complete.jar' )
48
49
if not os .path .exists (jar ):
@@ -53,11 +54,12 @@ def antlr4_jar(version):
53
54
def download_antlr4 (jar , version ):
54
55
s = None
55
56
try :
56
- with urlopen (f"https://repo1.maven.org/maven2/org/antlr/antlr4/{ version } /antlr4-{ version } -complete.jar" , timeout = 60 ) as response :
57
+ with urlopen (f"https://repo1.maven.org/maven2/org/antlr/antlr4/{ version } /antlr4-{ version } -complete.jar" ,
58
+ timeout = 60 ) as response :
57
59
print (f"Downloading antlr4-{ version } -complete.jar" )
58
60
os .makedirs (os .path .join (mvn_repo , version ), exist_ok = True )
59
61
s = response .read ()
60
- except (error .URLError , error .HTTPError ) as e :
62
+ except (error .URLError , error .HTTPError , TimeoutError ) :
61
63
print (f"Could not find antlr4-{ version } -complete.jar at maven.org" )
62
64
63
65
if s is None :
@@ -86,7 +88,7 @@ def install_jre(java_version='11'):
86
88
return java
87
89
88
90
r = input (f"ANTLR tool needs Java to run; install Java JRE 11 yes/no (default yes)? " )
89
- if r .strip ().lower () not in {'yes' ,'y' ,'' }:
91
+ if r .strip ().lower () not in {'yes' , 'y' , '' }:
90
92
exit (1 )
91
93
install_dir = jdk .install (java_version , jre = True )
92
94
print (f"Installed Java in { install_dir } ; remove that dir to uninstall" )
@@ -118,12 +120,12 @@ def process_args():
118
120
parser = argparse .ArgumentParser (
119
121
add_help = False , usage = "%(prog)s [-v VERSION] [%(prog)s options]"
120
122
)
121
- # Note, that the space after `-v` is needed so we don't pick up other arguments begining with `v`, like `-visitor`
123
+ # Note, that the space after `-v` is needed, so we don't pick up other arguments beginning with `v`, like `-visitor`
122
124
parser .add_argument ("-v " , dest = "version" , default = None )
123
125
args , unparsed_args = parser .parse_known_args ()
124
126
125
127
return unparsed_args , (
126
- args .version or os .environ .get ("ANTLR4_TOOLS_ANTLR_VERSION" ) or latest_version ()
128
+ args .version or os .environ .get ("ANTLR4_TOOLS_ANTLR_VERSION" ) or latest_version ()
127
129
)
128
130
129
131
@@ -132,7 +134,7 @@ def run_cli(entrypoint):
132
134
args , version = process_args ()
133
135
jar , java = install_jre_and_antlr (version )
134
136
135
- cp = subprocess .run ([java , '-cp' , jar , entrypoint ]+ args )
137
+ cp = subprocess .run ([java , '-cp' , jar , entrypoint ] + args )
136
138
sys .exit (cp .returncode )
137
139
138
140
0 commit comments