scripts / flightgear / mount.terrafs /
Newer Older
78 lines | 1.881kb
montage et démontage des scè...
Sébastien MARQUE authored on 2023-08-01
1
#!/bin/zsh
2

            
3
terrafs_d=${1:-$HOME/.fgfs/terrafs.d}
4

            
5
typeset -A osm2city_urls=(
6
        cdn.merspieler.tk       o2c
7
        ukmirror.flightgear.org osm2city
8
    )
9

            
10
typeset -A ws20_urls=(
11
        cdn.merspieler.tk          ts
12
        ukmirror.flightgear.org    fgscenery
13
        flightgear.sourceforge.net scenery
14
    )
15

            
16
osm2city_dirs=(
17
        Buildings
18
        Details
19
        Pylons
20
        Roads
21
        Trees
22
    )
23

            
24
ws20_dirs=(
25
        Airports
26
        Models
27
        Objects
28
        Terrain
29
    )
30

            
31
get_url () {
32
    eval "local hosts=(\${(k)${1}_urls[@]})"
33
    echo ${hosts[$(( $RANDOM % ${#hosts[@]} + 1 ))]}
34
}
35

            
36
remove_url () {
37
    eval "unset \"${1}_urls[$2]\""
38
}
39

            
40
get_largest () {
41
    eval "local _1=\${#${1}_urls[@]}"
42
    eval "local _2=\${#${2}_urls[@]}"
43
    if test $_1 -gt $_2; then
44
        echo largest=$1
45
        echo smallest=$2
46
    else
47
        echo largest=$1
48
        echo smallest=$2
49
    fi
50
}
51

            
52
mount_dirs () {
53
    local dir=
54
    eval "local oserver=https://\${${1}_url}/\${${1}_urls[\${${1}_url}]}"
55
    eval "local dirs=(\${${1}_dirs[@]})"
56
    for dir in ${dirs[@]}; do
57
        mkdir -p $HOME/.fgfs/terrafs.d/$dir
58
        printf "- %-10s " $dir && $HOME/.fgfs/terrafs -oserver=$oserver/$dir $terrafs_d/$dir && echo "ok" || echo "ERROR"
59
    done
60
}
61

            
62
eval $(get_largest ws20 osm2city)
63

            
64
if test $(grep -Ec "^terrafs +$terrafs_d" /proc/mounts) -ne $(( ${#ws20_dirs[@]} + ${#osm2city_dirs[@]} )); then
65
    eval "${largest}_url=$(get_url $largest)"
66
    eval "remove_url $smallest \$${largest}_url"
67
    eval "${smallest}_url=$(get_url $smallest)"
68

            
69
    for m in ws20 osm2city; do
70
        eval "printf 'montage %s depuis %s\n' ${(U)m} \$${m}_url"
71
        mount_dirs $m
72
    done
73
else
74
    echo "démontage $terrafs_d"
75
    for dir in ${osm2city_dirs[@]} ${ws20_dirs[@]}; do
76
        printf "- %-10s " $dir && fusermount -u $terrafs_d/$dir && echo "ok" || echo "ERROR"
77
    done
78
fi