Showing 1 changed files with 45 additions and 0 deletions
+45
.fgfs/fgfs_function
... ...
@@ -198,6 +198,51 @@ function fgfs () {
198 198
                     $FGDIR/install/flightgear/bin/fgfs $fgfs_arg ${complement[$fgfs_arg]} 2>/dev/null | pager
199 199
                     return
200 200
                     ;;
201
+                --search)
202
+                    command -v sqlite3 > /dev/null || return
203
+                    sqlite3 $FGADDON/fgaddon.db <<< "select file from setxml where file like '%$2%'"
204
+                    return
205
+                    ;;
206
+                --mp-list)
207
+                    local mplist=$(mktemp --dry-run /dev/shm/XXXXXXXXX)
208
+                    declare -A installed_model fgaddon_model unknown_model
209
+                    local ac_name=
210
+                    telnet mpserver01.flightgear.org 5001 2>/dev/null > $mplist
211
+                    for model in $(awk '/@/{a[$NF]++}END{for (i in a) print i}' $mplist); do
212
+                        if test -r $FGADDON/$model \
213
+                               -o -r $FGDIR/source/fgdata/$model \
214
+                               -o -r $FGDIR/source/fgdata/AI/$model; then
215
+                            installed_model[${${(s:/:)model}[2]}]=1
216
+                        else
217
+                            ac_name=$(sqlite3 $FGADDON/fgaddon.db <<< 'select     printf("%s/%s", aircrafts.name, setxml.file)
218
+                                                                       from       aircrafts
219
+                                                                       inner join setxml
220
+                                                                       where      aircrafts.id = setxml.variantof
221
+                                                                       and        setxml.`/sim/model/path` = "'$model'"
222
+                                                                       limit      1')
223
+                            if test -n "$ac_name"; then
224
+                                fgaddon_model[${ac_name}]=1
225
+                            else
226
+                                unknown_model[${model}]=1
227
+                            fi
228
+                        fi
229
+                    done
230
+                    if test ${#installed_model[@]} -gt 0; then
231
+                        echo "${(j:\n:)${(k)installed_model[@]}}" > $mplist
232
+                        echo -e "Installed:\n$(column -c$(tput cols) $mplist)\n"
233
+                    fi
234
+                    if test ${#fgaddon_model[@]} -gt 0; then
235
+                        echo "${(j:\n:)${(k)fgaddon_model[@]}}" > $mplist
236
+                        echo -e "Available in FGADDON:\n$(column -c$(tput cols) $mplist)\n"
237
+                    fi
238
+                    if test ${#unknown_model[@]} -gt 0; then
239
+                        echo "${(j:\n:)${(k)unknown_model[@]}}" > $mplist
240
+                        echo -e "unknown models:\n$(column -c$(tput cols) $mplist)"
241
+                    fi
242
+                    unset installed_model unknown_model fgaddon_model
243
+                    rm $mplist
244
+                    return
245
+                    ;;
201 246
                 *)
202 247
                     fgfs_args+=($fgfs_arg);;
203 248
             esac