7
7
import subprocess
8
8
import tempfile
9
9
import tqdm
10
- import json
11
10
from typing import IO , Dict , Optional , Tuple
12
11
import zipfile
13
12
from datetime import datetime
35
34
36
35
LTP_DOWNLOAD_VERSION = 'latest'
37
36
LT_SNAPSHOT_CURRENT_VERSION = '6.7-SNAPSHOT'
38
- SNAPSHOT_MAP_FILE = "snapshots.json"
39
37
40
38
JAVA_VERSION_REGEX = re .compile (
41
39
r'^(?:java|openjdk) version "(?P<major1>\d+)(|\.(?P<major2>\d+)\.[^"]+)"' ,
@@ -206,6 +204,7 @@ def download_lt(language_tool_version: Optional[str] = LTP_DOWNLOAD_VERSION) ->
206
204
LTP_DOWNLOAD_VERSION is used.
207
205
:type language_tool_version: Optional[str]
208
206
:raises AssertionError: If the download folder is not a directory.
207
+ :raises ValueError: If the specified version format is invalid.
209
208
"""
210
209
211
210
confirm_java_compatibility (language_tool_version )
@@ -228,12 +227,20 @@ def download_lt(language_tool_version: Optional[str] = LTP_DOWNLOAD_VERSION) ->
228
227
if re .match (r'^\d+\.\d+$' , version ):
229
228
filename = FILENAME_RELEASE .format (version = version )
230
229
language_tool_download_url = urljoin (BASE_URL_RELEASE , filename )
231
- dirname , _ = os .path .splitext (filename )
232
- extract_path = os .path .join (download_folder , dirname )
233
- if extract_path in old_path_list :
234
- return
235
- elif version == 'latest' :
230
+ elif version == "latest" :
236
231
filename = FILENAME_SNAPSHOT .format (version = version )
232
+ language_tool_download_url = urljoin (BASE_URL_SNAPSHOT , filename )
233
+ else :
234
+ raise ValueError (
235
+ f"You can only download a specific version of LanguageTool if it is "
236
+ f"formatted like 'x.y' (e.g. '5.4'). The version you provided is { version } ."
237
+ f"You can also use 'latest' to download the latest snapshot of LanguageTool."
238
+ )
239
+ dirname , _ = os .path .splitext (filename )
240
+ dirname = dirname .replace ('latest' , LT_SNAPSHOT_CURRENT_VERSION )
241
+ if version == "latest" :
237
242
dirname = f"LanguageTool-{ LT_SNAPSHOT_CURRENT_VERSION } "
243
+ extract_path = os .path .join (download_folder , dirname )
238
244
239
- download_zip (language_tool_download_url , download_folder )
245
+ if extract_path not in old_path_list :
246
+ download_zip (language_tool_download_url , download_folder )
0 commit comments