From 1ccc63419d588dd59c6d43d33f34337ac06e0487 Mon Sep 17 00:00:00 2001 From: PuqiAR Date: Sun, 4 Jan 2026 14:51:32 +0800 Subject: [PATCH] =?UTF-8?q?[VER]=20v0.3.6-alpha=20=E5=8F=91=E5=B8=83,=20?= =?UTF-8?q?=E5=AE=8C=E6=95=B4=E7=9A=84Installer=E5=B7=B2=E5=87=86=E5=A4=87?= =?UTF-8?q?!=20[w]=20Change=20log=20=E5=9C=A8=E4=B9=8B=E5=89=8D=E7=9A=84?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Installer/ConsoleInstaller/main.py | 43 +++++++++++++++++++----------- src/main.cpp | 18 ++++++------- 2 files changed, 37 insertions(+), 24 deletions(-) diff --git a/Installer/ConsoleInstaller/main.py b/Installer/ConsoleInstaller/main.py index 26f0643..8dda6ec 100644 --- a/Installer/ConsoleInstaller/main.py +++ b/Installer/ConsoleInstaller/main.py @@ -9,7 +9,7 @@ import json import zipfile import platform from os import path as ospath -from os import mkdir,chdir +from os import mkdir,chdir,remove,rename from sys import exit, argv @@ -49,12 +49,7 @@ def getReleases(): # print(rel) return rel -def install(url, path:str) -> None: - if not ospath.exists(path): - mkdir(path) - - filename = path.split('/')[-1] - +def install(url, path:str, filename:str) -> None: response = requests.get(url, stream=True) total_size = int(response.headers.get('content-length', 0)) @@ -64,12 +59,29 @@ def install(url, path:str) -> None: f.write(data) b.update(len(data)) + print() print(f'{filename} download completed.') print(f'unziping to {path} ...') + destZipPath = ospath.dirname(path) with zipfile.ZipFile(filename) as zip: - zip.extractall(path) - + zip.extractall(destZipPath) # 解压到安装目录上一层 + + rename(ospath.join(destZipPath, ospath.splitext(filename)[0]), path) + print() print('unziping completed') + print('\n==========') + print('cleaning...') + remove(filename) + +def osEnumToStr(os: int) -> str: + if os == Windows: + return 'windows' + elif os == Linux: + return 'linux' + elif os == Darwin: + return 'darwin' + + return 'other' def main() -> None: @@ -84,7 +96,7 @@ def main() -> None: print(f'Install to (default: {dpath}): ', end='') path = input() - if path.isspace(): + if not path: path = dpath print() @@ -97,7 +109,7 @@ def main() -> None: print('No version has been released!') exit(0) - print('There are {} versions:' % len(releases)) + print(f'There are {len(releases)} versions:') i = 1 for release in releases: print(f" {i} {release['name']} - {release['body']}") @@ -114,8 +126,7 @@ def main() -> None: print() version = insVersion - if not usrInput.isspace(): - + if usrInput: if '.' in usrInput: for release in releases: if release['tag_name'].find(usrInput) != -1: @@ -135,13 +146,15 @@ def main() -> None: print(f"Installing Fig-{version['tag_name']}") url = None + assetName = None for asset in version['assets']: - if asset['name'].find(osName) != -1: + assetName = asset['name'] + if assetName.find(osEnumToStr(osName)) != -1 and assetName.find('.zip') != -1: url = asset['browser_download_url'] break if url: - install(url, path) + install(url, path, assetName) else: print('Could not find artifact:') print(version['assets']) diff --git a/src/main.cpp b/src/main.cpp index 617af99..7913512 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -49,10 +49,10 @@ int main(int argc, char **argv) program.add_argument("source") .help("source file to be interpreted") .default_value(std::string("")); - program.add_argument("-v", "--version") - .help("get the version of Fig Interpreter") - .default_value(false) - .implicit_value(true); + // program.add_argument("-v", "--version") + // .help("get the version of Fig Interpreter") + // .default_value(false) + // .implicit_value(true); // interpreter try @@ -64,11 +64,11 @@ int main(int argc, char **argv) std::cerr << e.what() << '\n'; return 1; } - if (program.get("--version")) - { - std::print("Fig Interpreter version {}\n", Fig::Core::VERSION); - return 0; - } + // if (program.get("--version")) + // { + // std::print("Fig Interpreter version {}\n", Fig::Core::VERSION); + // return 0; + // } Fig::FString sourcePath(program.get("source")); if (sourcePath.empty()) {