Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/lib/mirrors.py
diff options
context:
space:
mode:
authorAnton Hvornum <anton.feeds+github@gmail.com>2020-07-21 19:03:24 +0000
committerAnton Hvornum <anton.feeds+github@gmail.com>2020-07-21 19:03:24 +0000
commitc884a2523746892d15257b68f6f3681119681cf3 (patch)
tree602b33f0a841c838f1597e4c8a1335ca6caa170e /archinstall/lib/mirrors.py
parent06f8c46b3daaf0730a094c4cca26bd1fab6822af (diff)
Added a set_timezone() and fixed set_locale() in the Installer() class. Also added a mirrors.py helper to rudimentary set mirror data on the installer host
Diffstat (limited to 'archinstall/lib/mirrors.py')
-rw-r--r--archinstall/lib/mirrors.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/archinstall/lib/mirrors.py b/archinstall/lib/mirrors.py
new file mode 100644
index 00000000..63eb4678
--- /dev/null
+++ b/archinstall/lib/mirrors.py
@@ -0,0 +1,45 @@
+from .exceptions import *
+from .general import *
+
+def filter_mirrors_by_region(regions, *args, **kwargs):
+ """
+ This function will change the active mirrors on the live medium by
+ filtering which regions are active based on `regions`.
+
+ :param region: A series of country codes separated by `,`. For instance `SE,US` for sweden and United States.
+ :type region: str
+ """
+ region_list = []
+ for region in regions.split(','):
+ region_list.append(f'country={region}')
+ o = b''.join(sys_command((f"/usr/bin/wget 'https://www.archlinux.org/mirrorlist/?{'&'.join(region_list)}&protocol=https&ip_version=4&ip_version=6&use_mirror_status=on' -O /root/mirrorlist")))
+ o = b''.join(sys_command(("/usr/bin/sed -i 's/#Server/Server/' /root/mirrorlist")))
+ o = b''.join(sys_command(("/usr/bin/mv /root/mirrorlist /etc/pacman.d/")))
+
+ return True
+
+def insert_mirrors(mirrors, *args, **kwargs):
+ """
+ This function will insert a given mirror-list at the top of `/etc/pacman.d/mirrorlist`.
+ It will not flush any other mirrors, just insert new ones.
+
+ :param mirrors: A dictionary of `{'url' : 'country', 'url2' : 'country'}`
+ :type mirrors: dict
+ """
+ original_mirrorlist = ''
+ with open('/etc/pacman.d/mirrorlist', 'r') as original:
+ original_mirrorlist = original.read()
+
+ with open('/etc/pacman.d/mirrorlist', 'w') as new_mirrorlist:
+ for mirror, country in mirrors.items():
+ new_mirrorlist.write(f'## {country}\n')
+ new_mirrorlist.write(f'Server = {mirror}\n')
+ new_mirrorlist.write('\n')
+ new_mirrorlist.write(original_mirrorlist)
+
+ return True
+
+def re_rank_mirrors(top=10, *positionals, **kwargs):
+ if sys_command((f'/usr/bin/rankmirrors -n {top} /etc/pacman.d/mirrorlist > /etc/pacman.d/mirrorlist')).exit_code == 0:
+ return True
+ return False \ No newline at end of file