config / .fgfs / fgfs_function /
Newer Older
525 lines | 28.661kb
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
1
#!/bin/zsh
2

            
3
#FGDIR=$HOME/scripts/flightgear
4
#FGADDON=$HOME/.fgfs/flightgear-fgaddon
5
function fgfs () {
6
    local fgfs_source=$FGDIR/source
7
    local fgfs_build=$FGDIR/build
8
    local fgfs_install=$FGDIR/install
9
    function update_fg () {
10
        case $1 in
ajout de gestion de bdd pour...
Sébastien MARQUE authored on 2020-08-24
11
            fgaddon)
12
                DB=$FGADDON/fgaddon.db $HOME/.fgfs/fgaddon
code rearrangement
Sébastien MARQUE authored on 2020-09-27
13
                ;;
14
            check)
15
                test -r $HOME/.fgfs/jenkins-status && bash $HOME/.fgfs/jenkins-status
16
                ;;
add RSS reader for FG code
Sébastien MARQUE authored on 2020-10-19
17
            rss)
18
                test -r $HOME/.fgfs/fgcoderss && bash $HOME/.fgfs/fgcoderss
19
                ;;
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
20
            data)
ajout de gestion de bdd pour...
Sébastien MARQUE authored on 2020-08-24
21
                for control_system update_command in ${(kv)control_system_data}; do
22
                    find $FGADDON \
23
                        -maxdepth 3 \
24
                        -mindepth 1 \
25
                        -type d \
26
                        -name .${control_system} \
27
                        -printf "\n[ %h ]\n" \
28
                        -execdir ${control_system} ${update_command} \;
29
                done
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
30
                ;;
31
            source)
code rearrangement
Sébastien MARQUE authored on 2020-09-27
32
                for component in $(<$fgfs_source/.$2); do
33
                    for control_system update_command in ${(kv)control_system_data}; do
34
                        find $fgfs_source/$component \
35
                            -maxdepth 1 \
36
                            -type d \
37
                            -name .${control_system} \
38
                            -printf "\n[ %h ]\n" \
39
                            -execdir ${control_system} ${update_command} \;
40
                    done
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
41
                done
42
                ;;
43
            build)
44
                local simultaneous=$(nproc)
45
                local previously_installed=()
46
                mkdir -p $fgfs_install
make possible to compile dif...
Sébastien MARQUE authored on 2020-09-23
47
                for component in $(<$fgfs_source/.$2); do
code rearrangement
Sébastien MARQUE authored on 2020-09-27
48
                    if test -d $fgfs_source/$component/.git; then
49
                        local branch=$(git -C $fgfs_source/$component name-rev --name-only --no-undefined --always HEAD)
50
                    elif test -d $fgfs_source/${component}/.svn; then
51
                        local branch=${${(s:/:)$(svn info --show-item relative-url $fgfs_source/$component)}[2]}
52
                    fi
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
53

            
code rearrangement
Sébastien MARQUE authored on 2020-09-27
54
# TODO: prendre en compte les cas sans cmake
55
                    if test -r $fgfs_source/$component/CMakeLists.txt; then
56
                        local cmake_options=("-DCMAKE_BUILD_TYPE=Release" "-DCMAKE_INSTALL_PREFIX=$fgfs_install/$component")
57
                        test -e $fgfs_source/${component}.specific && source $fgfs_source/${component}.specific
58
                        if test ${#previously_installed[@]} -gt 0; then
59
                            cmake_options+=(${(j. .)${:--DCMAKE_PREFIX_PATH=$fgfs_install/${^previously_installed}}})
60
                            cmake_options+=(${(j. .)${:--DCMAKE_INCLUDE_PATH=$fgfs_install/${^previously_installed}/include}})
61
                        fi
62
                        cmake_options+=("-j$simultaneous")
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
63

            
some cosmetics
Sébastien MARQUE authored on 2020-11-07
64
                        title="*** ${component:u}${branch:+ [$branch]} ***"
65
                        printf "\n%s\n%s\n%s\n" "${(l:${#title}::*:)}" "$title" "${(l:${#title}::*:)}"
code rearrangement
Sébastien MARQUE authored on 2020-09-27
66
                        mkdir -p $fgfs_build/$component
67
                        cd $fgfs_build/$component
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
68

            
$HOME replacement
Sébastien MARQUE authored on 2021-03-14
69
                        echo cmake ${cmake_options[@]//$HOME/\$HOME} ${fgfs_source/#$HOME/\$HOME}/$component
code rearrangement
Sébastien MARQUE authored on 2020-09-27
70

            
71
                        cmake ${cmake_options[@]} $fgfs_source/$component > /dev/null \
72
                        && make -j$simultaneous > /dev/null \
filter installation log
Sébastien MARQUE authored on 2020-12-05
73
                        && {
74
                            make install | grep --color=always -v '^-- Up-to-date:'
75
                        } \
code rearrangement
Sébastien MARQUE authored on 2020-09-27
76
                        || {
77
                            echo "erreur construction $component"
78
                            cd $FGDIR
79
                            return
80
                        }
fix return to path
Sébastien MARQUE authored on 2020-11-07
81

            
82
                        cd - > /dev/null
code rearrangement
Sébastien MARQUE authored on 2020-09-27
83
                    fi
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
84

            
85
                    previously_installed+=($component)
86
                done
87
                unset component
88
                ;;
89
        esac
90
    }
91
    function ld_library_path () {
smarter use of IFS
Sébastien MARQUE authored on 2020-09-23
92
        local IFS=$'\n'
fix multiple instances on LD...
Sébastien MARQUE authored on 2020-07-01
93
        for lib in $(ls -d $FGDIR/install/*/lib); do
94
            egrep -q "(^|:)$lib(:|$)" <<< "${LD_LIBRARY_PATH}" || LD_LIBRARY_PATH="${lib}${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}"
95
        done
96
        export LD_LIBRARY_PATH
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
97
    }
98
    local aircrafts="$FGADDON/Aircraft"
99
    local fgfs_args=("--fg-root=$FGDIR/source/fgdata")
100
    local aircraft=
101
    local airport=
102
    if [[ -o BASH_REMATCH ]]; then
103
        local bash_rematch_set=1
104
    fi
105

            
106
    for fgfs_arg in $@; do
107
        if test ${fgfs_arg#--} = ${fgfs_arg}; then
108
############ APPAREIL DANS FGADDON ?
109
            if test -n "$(find $aircrafts -maxdepth 2 -type f -name ${fgfs_arg}-set.xml -print -quit)"; then
110
                fgfs_args+=("--aircraft=$fgfs_arg")
111
                fgfs_args+=("--fg-aircraft=$FGADDON/Aircraft")
112

            
113
############ APPAREIL DANS FGDIR/source/fgdata ?
114
            elif official_aircraft=$(find "$fgfs_source/fgdata/Aircraft" -maxdepth 2 -type f -name ${fgfs_arg}-set.xml -printf "%h" -quit) && test -n "$official_aircraft"; then
115
                fgfs_args+=("--aircraft=$fgfs_arg")
116
                fgfs_args+=("--aircraft-dir=$official_aircraft")
117
                unset official_aircraft
118

            
small fix
Sébastien MARQUE authored on 2020-11-14
119
############ APPAREIL DISPONIBLE DANS UN HANGAR CONNU ?
ajout de gestion de bdd pour...
Sébastien MARQUE authored on 2020-08-24
120
            elif which sqlite3 > /dev/null 2>&1 \
121
            && test -r $FGADDON/fgaddon.db \
allow installation of aircra...
Sébastien MARQUE authored on 2020-11-13
122
            && test $(sqlite3 $FGADDON/fgaddon.db <<< "select count(file) from setxml where file is '${fgfs_arg}'") -gt 0; then
remove useless message
Sébastien MARQUE authored on 2021-04-09
123
                local PS3='which aircraft ? '
allow installation of aircra...
Sébastien MARQUE authored on 2020-11-13
124
                local IFS=$'\n'
125
                select ac in $(sqlite3 $FGADDON/fgaddon.db <<< "select distinct printf('%s [%s, %s]',
126
                                                               aircrafts.name,
127
                                                               hangars.name,
128
                                                               date(aircrafts.date, 'unixepoch'))
129
                                                 from aircrafts
130
                                                 inner join setxml, hangars
131
                                                 where
132
                                                   aircrafts.hangar = hangars.id
133
                                                 and
134
                                                   setxml.variantof = aircrafts.id
135
                                                 and
136
                                                     setxml.file = '${fgfs_arg}'
137
                                                 order by aircrafts.date desc"); do
138
                    test -z "$ac" && continue
139
                    read -q "REPLY?download ${${(@s/ /)ac}[1]} ? (y/N) "
140
                    if test -n "$REPLY" && test ${REPLY:l} = "y"; then
141
                        declare -A hangar
142
                        eval $(sqlite3 $FGADDON/fgaddon.db <<< "select printf('hangar[type]=%s;hangar[url]=%s;', type, url)
143
                                                                from hangars where name = '${${(@s/ /)ac}[2]:1:-1}'")
144
                        case ${hangar[type]} in
145
                            git)
small fix
Sébastien MARQUE authored on 2020-11-14
146
                                git -C $FGADDON/Aircraft clone ${hangar[url]}/${${(@s/ /)ac}[1]}.git;;
allow installation of aircra...
Sébastien MARQUE authored on 2020-11-13
147
                            svn)
148
                                svn checkout ${hangar[url]}/${${(@s/ /)ac}[1]} $FGADDON/Aircraft/${${(@s/ /)ac}[1]};;
149
                        esac
150
                        fgfs_args+=("--aircraft=$fgfs_arg")
151
                        fgfs_args+=("--fg-aircraft=$FGADDON/Aircraft")
152
                        unset -v hangar
153
                    else
154
                        echo "falling back to default"
155
                    fi
156
                    break
157
                done
ajout de gestion de bdd pour...
Sébastien MARQUE authored on 2020-08-24
158

            
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
159
############ SERVEUR MULTIPLAY ?
160
            elif set -o BASH_REMATCH && [[ $fgfs_arg =~ "^mp([0-9]+)$" ]]; then
161
                fgfs_args+=("--multiplay=out,10,mpserver${BASH_REMATCH[2]}.flightgear.org,5000")
fix some fgfs options
Sébastien MARQUE authored on 2020-06-21
162
                fgfs_args+=("--callsign=f-zakh")
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
163
                test -z "$bash_rematch_set" && set +o BASH_REMATCH
164

            
ajout trace de vol
Sébastien MARQUE authored on 2020-04-18
165
############ DEMANDE DE TRACE DE VOL ?
166
            elif [[ $fgfs_arg == "log" ]]; then
167
                # option construite plus tard avec nom de l'appareil
168
                local log_requested=1
169

            
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
170
############ AEROPORT ?
171
            else 
172
                local candidate_airport=${fgfs_arg%:*}; [[ $candidate_airport == $fgfs_arg ]] && candidate_airport=${fgfs_arg%+*}
173
                local candidate_parking=${fgfs_arg#*:}; [[ $candidate_parking == $fgfs_arg ]] && unset candidate_parking
174
                local candidate_runway=${fgfs_arg#*+};  [[ $candidate_runway  == $fgfs_arg ]] && unset candidate_runway
175
                local terrafs=${candidate_airport#-}
176

            
177
                if [[ $terrafs != $candidate_airport && -x $HOME/.fgfs/terrafs && -d $HOME/.fgfs/terrafs.d ]]; then
178
                    candidate_airport=$terrafs
179
                    $HOME/.fgfs/terrafs $HOME/.fgfs/terrafs.d
180
                    fgfs_args+=(--fg-scenery=$HOME/.fgfs/terrafs.d)
181
                    fgfs_args+=(--disable-terrasync)
182
                    local scenes_dir=$HOME/.fgfs/terrafs.d
183
                else
184
                    fgfs_args+=(--terrasync-dir=$HOME/.fgfs/TerraSync)
185
                    fgfs_args+=(--enable-terrasync)
186
                    local scenes_dir=$HOME/.fgfs/TerraSync
187
                fi
188

            
189
                local airport_data="$scenes_dir/Airports/$candidate_airport[1]:u/$candidate_airport[2]:u/$candidate_airport[3]:u/${candidate_airport:u}"
allow airport search for par...
Sébastien MARQUE authored on 2021-02-13
190
                if ! test -r "${airport_data}.threshold.xml"; then
191
                    echo "airport ${candidate_airport:u} not found !"
192
                fi
193

            
194
                if test -n "$candidate_parking" && test "$candidate_parking" = '?'; then
195
                    if test -r "${airport_data}.groundnet.xml"; then
196
                        echo "Parkings ${candidate_airport:u}:"
197
                        sed -rn "/<parkingList/,/parkingList>/s/^.* name=\"([^\"]+).*$/\1/p" "${airport_data}.groundnet.xml"
198
                    else
199
                        echo "no information for parkings available on ${candidate_airport:u}"
200
                    fi
201
                    return
202
                elif test -n "$candidate_runway" && test "$candidate_runway" = '?'; then
203
                    if test -r "${airport_data}.threshold.xml"; then
204
                        echo "Runways ${candidate_airport:u}:"
205
                        sed -rn 's|^.*<rwy>(.+)</rwy>.*$|\1|p' "${airport_data}.threshold.xml"
206
                    else
207
                        echo "no information for runways available on ${candidate_airport:u}"
208
                    fi
209
                    return
210
                fi
211

            
212
                if test -r "${airport_data}.threshold.xml"; then
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
213
                    fgfs_args+=(--airport=$candidate_airport)
214
                    if [[ -a "${airport_data}.groundnet.xml" && -n "$candidate_parking" ]]; then
allow airport search for par...
Sébastien MARQUE authored on 2021-02-13
215
                        if sed -rn "/<parkingList/,/parkingList>/p" "${airport_data}.groundnet.xml" | grep -q "name=\"${candidate_parking}\""; then
fix some fgfs options
Sébastien MARQUE authored on 2020-06-21
216
                            fgfs_args+=("--parkpos='$candidate_parking'")
allow airport search for par...
Sébastien MARQUE authored on 2021-02-13
217
                        else
218
                            echo "$candidate_parking isn't a valid parking position"
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
219
                        fi
220
                    elif test -n "$candidate_runway"; then
allow airport search for par...
Sébastien MARQUE authored on 2021-02-13
221
                        if grep -q "<rwy>${candidate_runway}</rwy>" "${airport_data}.threshold.xml"; then
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
222
                            fgfs_args+=("--runway=$candidate_runway")
allow airport search for par...
Sébastien MARQUE authored on 2021-02-13
223
                        else
224
                            echo "$candidate_runway isn't a valid runway"
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
225
                        fi
226
                    fi
227
                fi
228
            fi
229

            
230
######## AUTRE OPTION
231
        else
232
            case $fgfs_arg in
code rearrangement
Sébastien MARQUE authored on 2020-09-27
233
                --update(-data|-source|-build|))
make flightgear default comp...
Sébastien MARQUE authored on 2021-04-10
234
                    if test ! -r $fgfs_source/.${2:-flightgear}; then
code rearrangement
Sébastien MARQUE authored on 2020-09-27
235
                        echo "${2:+unknown set $2\n}usage: --update|--update-data|--update-source|--update-build <set>"
236
                        echo "available sets :" ${$(find $fgfs_source -maxdepth 1 -type f -name ".*" -printf "%f ")//#.}
237
                        return 1
238
                    fi
make flightgear default comp...
Sébastien MARQUE authored on 2021-04-10
239
                    for component in $(<$fgfs_source/.${2:-flightgear}); do
code rearrangement
Sébastien MARQUE authored on 2020-09-27
240
                        if ! test -d $fgfs_source/$component; then
241
                            echo component $component not found
242
                            return 1
243
                        fi
244
                    done
245
                    typeset -A control_system_data=(
246
                        git pull
247
                        svn up
248
                    )
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
249
                    for up in ${${=${fgfs_arg#--update}:-data source build}#-}; do
make possible to compile dif...
Sébastien MARQUE authored on 2020-09-23
250
                        update_fg $up ${2:-flightgear}
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
251
                    done
code rearrangement
Sébastien MARQUE authored on 2020-09-27
252
                    unset control_system_data control_system update_command up
253
                    return
254
                    ;;
add RSS reader for FG code
Sébastien MARQUE authored on 2020-10-19
255
                --update-(fgaddon|check|rss))
code rearrangement
Sébastien MARQUE authored on 2020-09-27
256
                    update_fg ${fgfs_arg#--update-}
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
257
                    return
258
                    ;;
259
                --(show-aircraft|help))
ajout trace de vol
Sébastien MARQUE authored on 2020-04-18
260
                    local -A complement=(
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
261
                        --show-aircraft --fg-aircraft=$FGADDON/Aircraft
262
                        --help          --verbose
263
                    )
fix multiple instances on LD...
Sébastien MARQUE authored on 2020-07-01
264
                    ld_library_path
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
265
                    $FGDIR/install/flightgear/bin/fgfs $fgfs_arg ${complement[$fgfs_arg]} 2>/dev/null | pager
266
                    return
267
                    ;;
add --info to show aircraft'...
Sébastien MARQUE authored on 2021-04-09
268
                --info)
269
                    local PS3='which aircraft ? '
270
                    local IFS=$'\n'
271
                    function _info () {
272
                        local _info=$(sqlite3 $FGADDON/fgaddon.db <<< "select \`$1\`
273
                                                     from setxml
274
                                                     inner join aircrafts, hangars
275
                                                     where
276
                                                       aircrafts.hangar = hangars.id
277
                                                     and
278
                                                       setxml.variantof = aircrafts.id
279
                                                     and
280
                                                       setxml.file = '$file'
281
                                                     and
282
                                                       hangars.name = '${${(@s/ /)ac}[2]:1:-1}'")
283
                        if test -n "$_info"; then
284
                            printf "%s: %s\n" "$2" "$_info"
285
                        fi
286
                    }
287
                    select ac in $(sqlite3 $FGADDON/fgaddon.db <<< "select distinct printf('%s [%s, %s]',
288
                                                                   aircrafts.name,
289
                                                                   hangars.name,
290
                                                                   date(aircrafts.date, 'unixepoch'))
291
                                                     from aircrafts
292
                                                     inner join setxml, hangars
293
                                                     where
294
                                                       aircrafts.hangar = hangars.id
295
                                                     and
296
                                                       setxml.variantof = aircrafts.id
297
                                                     and
298
                                                         setxml.file = '$2'
299
                                                     order by aircrafts.date desc"); do
300
                        test -z "$ac" && continue
301
                        local file=$2
302
                        _info /sim/description      "Short description"
303
                        _info /sim/long-description "Long description"
304
                        _info /sim/author           "Author(s)"
305
                        _info /sim/flight-model     "Flight model"
306
                        _info /sim/type "Type"
307
                        echo Ratings
308
                        for r in FDM systems cockpit model; do
309
                            _info /sim/rating/$r "  $r"
310
                        done
311
                        return
312
                    done
313
                    return
314
                    ;;
add --show-thumbnail
Sébastien MARQUE authored on 2020-11-07
315
                --show-thumbnail)
remove useless message
Sébastien MARQUE authored on 2021-04-09
316
                    local PS3='which aircraft ? '
add --show-thumbnail
Sébastien MARQUE authored on 2020-11-07
317
                    local IFS=$'\n'
318
                    select ac in $(sqlite3 $FGADDON/fgaddon.db <<< "select distinct printf('%s [%s, %s]',
319
                                                                   aircrafts.name,
320
                                                                   hangars.name,
321
                                                                   date(aircrafts.date, 'unixepoch'))
322
                                                     from aircrafts
323
                                                     inner join setxml, hangars
324
                                                     where
325
                                                       aircrafts.hangar = hangars.id
326
                                                     and
327
                                                       setxml.variantof = aircrafts.id
328
                                                     and (
329
                                                         setxml.file like '%$2%'
330
                                                       or
331
                                                         aircrafts.name like '%$2%'
332
                                                     )
333
                                                     order by aircrafts.date desc"); do
334
                        test -z "$ac" && continue
335
                        local url=$(sqlite3 $FGADDON/fgaddon.db <<< "select printf('%s/${${(@s/ /)ac}[1]}', url)
336
                                                                     from hangars where name = '${${(@s/ /)ac}[2]:1:-1}'")
337
                        if test ${${(@s/ /)ac}[2]:1:-1} = 'FGMEMBERS'; then
338
                            url="https://raw.githubusercontent.com/FGMEMBERS/${${(@s/ /)ac}[1]}/master"
339
                        fi
340
                        if wget --quiet --spider "$url/thumbnail.jpg"; then
341
                            curl -s "$url/thumbnail.jpg" \
342
                            | convert - -resize '200%' -normalize -sharpen '0.0x1.0' - \
343
                            | display
344
                        else
345
                            echo "can't find or get thumbnail for ${${(@s/ /)ac}[1]} (${${(@s/ /)ac}[2]:1:-1}'s hangar)"
346
                        fi
347
                    done
348
                    return
349
                    ;;
add --search and --mp-list o...
Sébastien MARQUE authored on 2020-09-27
350
                --search)
351
                    command -v sqlite3 > /dev/null || return
some cosmetics
Sébastien MARQUE authored on 2020-11-07
352
                    sqlite3 $FGADDON/fgaddon.db <<< "select printf('[%s, %s] %s (%s): %s ',
353
                                                                   hangars.name,
354
                                                                   date(aircrafts.date, 'unixepoch'),
355
                                                                   setxml.file,
356
                                                                   setxml.\`/sim/flight-model\`,
357
                                                                   setxml.\`/sim/description\`)
358
                                                     from setxml
359
                                                     inner join aircrafts, hangars
360
                                                     where
361
                                                       aircrafts.hangar = hangars.id
362
                                                     and
363
                                                       setxml.variantof = aircrafts.id
364
                                                     and (
365
                                                         setxml.file like '%$2%'
366
                                                       or
367
                                                         aircrafts.name like '%$2%'
368
                                                     )
369
                                                     order by aircrafts.date desc"
add --search and --mp-list o...
Sébastien MARQUE authored on 2020-09-27
370
                    return
371
                    ;;
372
                --mp-list)
373
                    local mplist=$(mktemp --dry-run /dev/shm/XXXXXXXXX)
374
                    declare -A installed_model fgaddon_model unknown_model
375
                    local ac_name=
376
                    telnet mpserver01.flightgear.org 5001 2>/dev/null > $mplist
print number of online pilot...
Sébastien MARQUE authored on 2020-09-28
377
                    grep 'pilot(s) online' $mplist
378
                    echo
show connected pilots for ea...
Sébastien MARQUE authored on 2020-10-25
379
                    local IFS=$'\n'
380
                    for model in $(awk '/@/{a[$NF]++}END{for (i in a) printf("%s (%i)\n", i, a[i])}' $mplist); do
381
                        if test -r $FGADDON/${model% *} \
382
                             -o -r $FGDIR/source/fgdata/${model% *}; then
383

            
384
                            ((++installed_model[${${(s:/:)model}[2]} ${model#* }]))
385

            
386
                        elif test -r $FGDIR/source/fgdata/AI/${model% *}; then
387

            
388
                            ((++installed_model[*${${(s:/:)model}[2]} ${model#* }]))
389

            
separation AI/real models, a...
Sébastien MARQUE authored on 2020-09-28
390
                        elif test -n "$(command -v sqlite3)" -a -r $FGADDON/fgaddon.db; then
add --search and --mp-list o...
Sébastien MARQUE authored on 2020-09-27
391
                            ac_name=$(sqlite3 $FGADDON/fgaddon.db <<< 'select     printf("%s/%s", aircrafts.name, setxml.file)
392
                                                                       from       aircrafts
393
                                                                       inner join setxml
394
                                                                       where      aircrafts.id = setxml.variantof
show connected pilots for ea...
Sébastien MARQUE authored on 2020-10-25
395
                                                                       and        setxml.`/sim/model/path` = "'${model% *}'"
add --search and --mp-list o...
Sébastien MARQUE authored on 2020-09-27
396
                                                                       limit      1')
397
                            if test -n "$ac_name"; then
show connected pilots for ea...
Sébastien MARQUE authored on 2020-10-25
398
                                ((++fgaddon_model[${ac_name} ${model#* }]))
add --search and --mp-list o...
Sébastien MARQUE authored on 2020-09-27
399
                            else
show connected pilots for ea...
Sébastien MARQUE authored on 2020-10-25
400
                                ((++unknown_model[${model}]))
add --search and --mp-list o...
Sébastien MARQUE authored on 2020-09-27
401
                            fi
show connected pilots for ea...
Sébastien MARQUE authored on 2020-10-25
402

            
separation AI/real models, a...
Sébastien MARQUE authored on 2020-09-28
403
                        else
show connected pilots for ea...
Sébastien MARQUE authored on 2020-10-25
404
                            ((++unknown_model[${model}]))
add --search and --mp-list o...
Sébastien MARQUE authored on 2020-09-27
405
                        fi
406
                    done
407
                    if test ${#installed_model[@]} -gt 0; then
improve output
Sébastien MARQUE authored on 2020-09-27
408
                        echo "${(j:\n:)${(Ok)installed_model[@]}}" > $mplist
improve mplist output
Sébastien MARQUE authored on 2020-10-19
409
                        echo -e "${#installed_model[@]} models installed (*AI model only):\n$(column -c$(tput cols) $mplist)\n"
add --search and --mp-list o...
Sébastien MARQUE authored on 2020-09-27
410
                    fi
411
                    if test ${#fgaddon_model[@]} -gt 0; then
improve output
Sébastien MARQUE authored on 2020-09-27
412
                        echo "${(j:\n:)${(Ok)fgaddon_model[@]}}" > $mplist
improve mplist output
Sébastien MARQUE authored on 2020-10-19
413
                        echo -e "${#fgaddon_model[@]} models available in FGADDON:\n$(column -c$(tput cols) $mplist)\n"
add --search and --mp-list o...
Sébastien MARQUE authored on 2020-09-27
414
                    fi
415
                    if test ${#unknown_model[@]} -gt 0; then
improve output
Sébastien MARQUE authored on 2020-09-27
416
                        echo "${(j:\n:)${(Ok)unknown_model[@]}}" > $mplist
improve mplist output
Sébastien MARQUE authored on 2020-10-19
417
                        echo -e "${#unknown_model[@]} unknown models:\n$(column -c$(tput cols) $mplist)"
add --search and --mp-list o...
Sébastien MARQUE authored on 2020-09-27
418
                    fi
419
                    unset installed_model unknown_model fgaddon_model
420
                    rm $mplist
421
                    return
422
                    ;;
add --install option
Sébastien MARQUE authored on 2020-11-23
423
                --install)
remove useless message
Sébastien MARQUE authored on 2021-04-09
424
                    local PS3='which aircraft ? '
add --install option
Sébastien MARQUE authored on 2020-11-23
425
                    local IFS=$'\n'
426
                    select ac in $(sqlite3 $FGADDON/fgaddon.db <<< "select distinct printf('%s [%s, %s]',
427
                                                                   aircrafts.name,
428
                                                                   hangars.name,
429
                                                                   date(aircrafts.date, 'unixepoch'))
430
                                                     from aircrafts
431
                                                     inner join setxml, hangars
432
                                                     where
433
                                                       aircrafts.hangar = hangars.id
434
                                                     and
435
                                                       setxml.variantof = aircrafts.id
436
                                                     and (
437
                                                         setxml.file like '%$2%'
438
                                                       or
439
                                                         aircrafts.name like '%$2%'
440
                                                     )
441
                                                     order by aircrafts.date desc"); do
442
                        test -z "$ac" && continue
443
                    done
444
                    test -z "$ac" && return
445
                    declare -A hangar
446
                    eval $(sqlite3 $FGADDON/fgaddon.db <<< "select printf('hangar[type]=%s;hangar[url]=%s;', type, url)
447
                                                            from hangars where name = '${${(@s/ /)ac}[2]:1:-1}'")
448
                    case ${hangar[type]} in
449
                        git)
450
                            git -C $FGADDON/Aircraft clone ${hangar[url]}/${${(@s/ /)ac}[1]}.git;;
451
                        svn)
452
                            svn checkout ${hangar[url]}/${${(@s/ /)ac}[1]} $FGADDON/Aircraft/${${(@s/ /)ac}[1]};;
453
                    esac
454
                    unset hangar
455
                    return
456
                    ;;
add --fgcom option to launch...
Sébastien MARQUE authored on 2020-11-22
457
                --fgcom)
458
                    if test \
use fgcom-mumble addon direc...
Sébastien MARQUE authored on 2021-02-13
459
                        -r $FGADDON/Addons/fgcom-mumble/FGData/Protocol/fgcom-mumble.xml \
add --fgcom option to launch...
Sébastien MARQUE authored on 2020-11-22
460
                     -a -r $HOME/.local/share/Mumble/Mumble/Plugins/fgcom-mumble.so \
461
                     -a -h $fgfs_install/mumble/lib/libPocoZip.so \
462
                     -a -x $fgfs_install/mumble/bin/mumble; then
463
                        nohup sh -c "LD_LIBRARY_PATH=$fgfs_install/mumble/lib $fgfs_install/mumble/bin/mumble" > /dev/null 2>&1 &
use fgcom-mumble addon direc...
Sébastien MARQUE authored on 2021-02-13
464
                        fgfs_args+=("--addon=$FGADDON/Addons/fgcom-mumble")
add --fgcom option to launch...
Sébastien MARQUE authored on 2020-11-22
465
                        fgfs_args+=("--generic=socket,out,10,localhost,16661,udp,fgcom-mumble")
466
                    else
467
                        echo "can't find protocol definition, or fgcom-mumble plugin"
468
                        return 1
469
                    fi
add Little Navmap connector
Sébastien MARQUE authored on 2021-01-29
470
                    ;;
471
                --map|--lnm)
avoid multiple littlefgconne...
Sébastien MARQUE authored on 2021-02-13
472
                    if ! pgrep -u $USER -fx "$fgfs_install/littlefgconnect/Little\ FGconnect/littlefgconnect" > /dev/null; then
473
                        if test \
474
                            -x $fgfs_install/littlefgconnect/"Little FGconnect"/littlefgconnect \
475
                         -a -r $FGADDON/Addons/littlenavmap/FGData/Protocol/littlenavmap.xml; then
476
                                nohup sh -c "$fgfs_install/littlefgconnect/Little\ FGconnect/littlefgconnect" > /dev/null 2>&1 &
477
                        else
478
                            echo "can't find Little FGconnect"
479
                            return 1
480
                        fi
add Little Navmap connector
Sébastien MARQUE authored on 2021-01-29
481
                    else
avoid multiple littlefgconne...
Sébastien MARQUE authored on 2021-02-13
482
                        echo "Little FGconnect already lauched"
add Little Navmap connector
Sébastien MARQUE authored on 2021-01-29
483
                    fi
avoid multiple littlefgconne...
Sébastien MARQUE authored on 2021-02-13
484
                    fgfs_args+=("--addon=$FGADDON/Addons/littlenavmap")
add --fgcom option to launch...
Sébastien MARQUE authored on 2020-11-22
485
                    ;;
allow the use on just addon ...
Sébastien MARQUE authored on 2021-02-13
486
                --addon=*)
487
                    addon_path="${fgfs_arg#*=}"
488
                    if test -d "$addon_path"; then
489
                        fgfs_args+=("--addon=$addon_path")
490
                    elif test -d "$FGADDON/Addons/$addon_path"; then
491
                        fgfs_args+=("--addon=$FGADDON/Addons/$addon_path")
492
                    else
493
                        echo "can't find requested addon in $addon_path or $FGADDON/$addon_path !"
494
                    fi
495
                    ;;
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
496
                *)
497
                    fgfs_args+=($fgfs_arg);;
498
            esac
499
        fi
500
    done
501
    unset fgfs_arg
ajout trace de vol
Sébastien MARQUE authored on 2020-04-18
502
    if [[ -n "$log_requested" && -z "${fgfs_args[(r)--igc=*]}" ]]; then
ajout trace de vol (2)
Sébastien MARQUE authored on 2020-04-18
503
        fgfs_args+=(--igc=file,out,1,$(date +%Y%m%d-%H%M-${${${fgfs_args[(r)--aircraft=*]}#--aircraft=}:-$(sed -rn 's|^.+aircraft>(.+)</aircraft.+$|\1|p' $FGDIR/source/fgdata/defaults.xml)}.igc))
ajout trace de vol
Sébastien MARQUE authored on 2020-04-18
504
    fi
505

            
fix multiple instances on LD...
Sébastien MARQUE authored on 2020-07-01
506
    ld_library_path
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
507

            
workaround for bumblebee iss...
Sébastien MARQUE authored on 2020-12-06
508
    (
509
        nmcli radio all off
510
        while test $(lsmod | grep -c nvidia) -eq 0; do
remove unuseful wait
Sébastien MARQUE authored on 2021-03-22
511
            :
workaround for bumblebee iss...
Sébastien MARQUE authored on 2020-12-06
512
        done
513
        nmcli radio wifi on
514
    )&
515

            
improve options output
Sébastien MARQUE authored on 2020-11-07
516
    fgfsrc=$HOME/.fgfs/fgfsrc
517
    echo ${fgfs_args[@]//$HOME/\$HOME} $(test -r $fgfsrc && egrep -v '^\s*(#|$)' $fgfsrc | tr '\n' ' ')
ajout fonction pour lancemen...
Sébastien MARQUE authored on 2020-04-16
518
# TODO: ne lancer avec primusrun que si c'est nécesaire, d'autres solution existent ?
519
    primusrun $FGDIR/install/flightgear/bin/fgfs ${fgfs_args[@]}
520
    
521
    if grep -q $HOME/.fgfs/terrafs.d /proc/mounts; then
522
        fusermount -u $HOME/.fgfs/terrafs.d
523
    fi
524
    unset fgfs_args
525
}