From d4cc99466a20bdb215f1b77e654b98b65bee2b73 Mon Sep 17 00:00:00 2001 From: soiamsoNG <83182235@qq.com> Date: Mon, 19 Oct 2020 09:40:06 +0800 Subject: [PATCH] Add haskell-language-server release sync --- haskell-language-server.py | 56 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 haskell-language-server.py diff --git a/haskell-language-server.py b/haskell-language-server.py new file mode 100644 index 0000000..6206c05 --- /dev/null +++ b/haskell-language-server.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 + +# python deps: requests +# non-python deps: aria2 + +import os +import requests +import pathlib +import json +import subprocess +import shutil + +_base_path = pathlib.Path(os.environ['TUNASYNC_WORKING_DIR']) + + +def download(dir_, url, force=False): + dir_path = _base_path / dir_ + file_path = dir_path / url.split('/')[-1] + if force and file_path.is_file(): + file_path.unlink() + if file_path.is_file(): + print('{} exists, skipping'.format(file_path), flush=True) + else: + args = [ + 'aria2c', url, '--dir={}'.format( + dir_path), '--out={}.tmp'.format(url.split('/')[-1]), + '--file-allocation=none', '--quiet=true' + ] + subprocess.run(args, check=True) + shutil.move('{}.tmp'.format(file_path), file_path) + print('Downloaded {} to {}'.format(url, file_path), flush=True) + + +releasesInfo = requests.get( + 'https://api.github.com/repos/haskell/haskell-language-server/releases').content + +g = json.loads(releasesInfo) + +# download latest assets and modify json +# download to _base_path/version_name/file_name +for i in range(0, len(g[0]['assets'])-1): + print("Start Download:", g[0]['assets'][i]['browser_download_url']) + + download(g[0]['name'], g[0]['assets'][i]['browser_download_url']) + + g[0]['assets'][i]['browser_download_url'] = ( + g[0]['assets'][i]['browser_download_url'].replace( + 'https://github.com/haskell/haskell-language-server/releases/download', + 'https://mirrors.tuna.tsinghua.edu.cn/haskell-language-server' + # _base_path.as_posix() + ) + ) + +# dump json onto the _base_path +with open(_base_path / 'releasesInfo.json', 'w') as releasesInfoFile: + json.dump(g, releasesInfoFile, indent=4)