import os
import sys
import shutil
def get_mirrorlist_files(mirrorlist_files_dir):
files = [f for f in os.listdir(mirrorlist_files_dir) if not (f.endswith("_back") or f.endswith("pacnew")) and os.path.isfile(mirrorlist_files_dir + "/" + f)]
return files
def backup_mirrorlist_files(mirrorlist_files_dir):
files = get_mirrorlist_files(mirrorlist_files_dir)
for file in files:
back_file = file + "_back"
if os.path.exists(mirrorlist_files_dir + "/" + back_file):
continue
shutil.copy(mirrorlist_files_dir + "/" + file, mirrorlist_files_dir + "/" + back_file)
def get_ustc_server(mirrorlist_file):
file = open(mirrorlist_file, "r")
lines = file.readlines()
file.close()
ustc_server = ""
for line in lines:
if line.find("mirrors.ustc.edu.cn"):
ustc_server = line
return ustc_server
def update_mirrorlist_file(mirrorlist_file):
ustc_server = get_ustc_server(mirrorlist_file)
file = open(mirrorlist_file, "r")
lines = file.readlines()
file.close()
file = open(mirrorlist_file, "w")
primary_key = "## Primary"
is_after_primary = False
after_cnt = 0
for line in lines:
if is_after_primary:
after_cnt += 1
if line.startswith(primary_key):
is_after_primary = True
after_cnt = 0
if after_cnt == 1 or after_cnt == 2:
if not line.startswith("#"):
line = "#" + line
if after_cnt == 3:
if line.find("ustc") == -1 or line.startswith("#"):
file.write(ustc_server)
file.write(line)
file.close()
def update_mirrorlist_files(mirrorlist_files_dir):
files = get_mirrorlist_files(mirrorlist_files_dir)
for file in files:
mirrorlist_file = mirrorlist_files_dir + "/" + file
update_mirrorlist_file(mirrorlist_file)
if __name__ == '__main__':
mirrorlist_files_dir = "D:/code_tools/msys2/install/etc/pacman.d"
backup_mirrorlist_files(mirrorlist_files_dir)
update_mirrorlist_files(mirrorlist_files_dir)