Last active
September 9, 2022 12:38
-
-
Save opabravo/4bf0eedede01ba470c2eb1b9897a369d to your computer and use it in GitHub Desktop.
Auto update vscode for portable version
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys | |
import os | |
import shutil | |
import zipfile | |
import requests | |
URL = "https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-archive" | |
ZIP_FILE_NAME = "vscode.zip" | |
def download_vscode(file_name: str) -> None: | |
print(f"Downloading \"{file_name}\"") | |
with open(file_name, "wb") as f: | |
response = requests.get(URL, stream=True) | |
if total_length := response.headers.get('content-length'): | |
total_length = int(total_length) | |
dl = 0 | |
for data in response.iter_content(chunk_size=4096): | |
dl += len(data) | |
f.write(data) | |
done = int(50 * dl / total_length) | |
print(f"[{'=' * done}{' ' * (50-done)}]", end="\r", flush=True) | |
else: | |
f.write(response.content) | |
def remove_old_files(): | |
"""Remove old files except data folder""" | |
fp = '.' | |
white_list = ('data', os.path.basename(__file__)) | |
for file in os.listdir(fp): | |
if file.lower() in white_list: | |
continue | |
path = os.path.join(fp, file) | |
try: | |
shutil.rmtree(path) | |
except OSError: | |
os.remove(path) | |
def extract_vscode_zip(fn: str): | |
with zipfile.ZipFile(fn, 'r') as data: | |
data.extractall('') | |
if __name__ == '__main__': | |
print("Terminating Vscode Proccess....") | |
os.system('taskkill /im code.exe /f') | |
print('Removing old files except user Data....') | |
while 1: | |
try: | |
remove_old_files() | |
break | |
except PermissionError: | |
sys.stdout.write("\rMake sure to close VSCode processes...") | |
sys.stdout.flush() | |
download_vscode(ZIP_FILE_NAME) | |
print(f"\nDone downloading \"{ZIP_FILE_NAME}\"") | |
print(f"Extracting \"{ZIP_FILE_NAME}\"...") | |
extract_vscode_zip(ZIP_FILE_NAME) | |
os.remove(f'./{ZIP_FILE_NAME}') | |
input('\n---\nDone!') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment