OSDN Git Service

fix mirrorlist generator
[instantos/instantARCH.git] / depend / mirrors.sh
1 #!/bin/bash
2
3 # fetch up to date mirrorlist of selected country
4 # and optionally sort them
5 # auto detect all mirrors if no country is selected
6
7 if ! iroot askmirrors; then
8     echo "skipping mirrors"
9     exit
10 fi
11
12 echo "fetching mirrors"
13
14 if ! iroot automirrors; then
15     COUNTRYCODE="$(iroot countrycode)"
16     echo "fetching mirrors for $COUNTRYCODE"
17
18     curl -s "https://archlinux.org/mirrorlist/?country=$COUNTRYCODE&protocol=http&protocol=https&ip_version=4&use_mirror_status=on" |
19         grep -iE '(Server|generated)' |
20         sed 's/^#Server /Server /g' >/tmp/mirrorlist
21
22     cat /etc/pacman.d/mirrorlist >/tmp/oldmirrorlist
23
24     if iroot sortmirrors; then
25         head -20 /tmp/mirrorlist >/tmp/mirrorlist2
26         rankmirrors -n 6 /tmp/mirrorlist2 >/tmp/topmirrors
27         cat /tmp/topmirrors
28         sleep 0.1
29         cat /tmp/topmirrors >/etc/pacman.d/mirrorlist
30         sleep 2
31         clear
32     else
33         echo "" >/etc/pacman.d/mirrorlist
34     fi
35
36     cat /tmp/mirrorlist >>/etc/pacman.d/mirrorlist
37     cat /tmp/oldmirrorlist >>/etc/pacman.d/mirrorlist
38     mkdir /root/instantARCH/backup
39     cat /etc/pacman.d/mirrorlist > /root/instantARCH/backup/mirrorlist
40 else
41     echo "ranking mirrors"
42     reflector --latest 40 --protocol http --protocol https --sort rate --save /etc/pacman.d/mirrorlist
43 fi
44
45 cat /etc/pacman.d/mirrorlist> /root/instantARCH/config/mirrorlistbackup