1
0
Fork 0

Update completion scripts

This commit is contained in:
Roman Ludwicki 2023-09-23 18:59:28 +02:00 committed by James Turner
parent 8036e12236
commit d86425c8a2
2 changed files with 457 additions and 209 deletions

View file

@ -56,7 +56,7 @@ _get_fg_root()
root="$value" root="$value"
return 0 return 0
# value stored in environment variable $FG_ROOT? # value stored in environment variable $FG_ROOT?
else if [ -n "$FG_ROOT" ] elif [ -n "$FG_ROOT" ]
then then
root="$FG_ROOT" root="$FG_ROOT"
return 0 return 0
@ -71,7 +71,6 @@ _get_fg_root()
fi fi
done done
fi fi
fi
} }
_get_fg_scenery() _get_fg_scenery()
@ -84,7 +83,7 @@ _get_fg_scenery()
then then
scenery="$value" scenery="$value"
# value stored in environment variable $FG_SCENERY? # value stored in environment variable $FG_SCENERY?
else if [ -n "$FG_SCENERY" ] elif [ -n "$FG_SCENERY" ]
then then
scenery="$FG_SCENERY" scenery="$FG_SCENERY"
# no clue! try default: # no clue! try default:
@ -93,8 +92,7 @@ _get_fg_scenery()
_get_fg_root _get_fg_root
scenery="$root/Scenery" scenery="$root/Scenery"
fi fi
fi
return 0 return 0
} }
@ -108,7 +106,7 @@ _get_fg_aircraft()
then then
aircraft_dir="$value" aircraft_dir="$value"
# value stored in environment variable $FG_AIRCRAFT? # value stored in environment variable $FG_AIRCRAFT?
else if [ -n "$FG_AIRCRAFT" ] elif [ -n "$FG_AIRCRAFT" ]
then then
aircraft_dir="$FG_AIRCRAFT" aircraft_dir="$FG_AIRCRAFT"
# no clue! try default: # no clue! try default:
@ -117,7 +115,6 @@ _get_fg_aircraft()
_get_fg_root _get_fg_root
aircraft_dir="$root/Aircraft" aircraft_dir="$root/Aircraft"
fi fi
fi
} }
_get_airport() _get_airport()
@ -146,7 +143,15 @@ _get_scenarios()
local value local value
_get_opts "ai-scenario" _get_opts "ai-scenario"
scenarios="$value nimitz_demo" scenarios="$value clemenceau_demo eisenhower_demo foch_demo kuznetsov_demo liaoning_demo nimitz_demo sanantonio_demo truman_demo vinson_demo"
}
_get_fdm()
{
local value
_get_opt "fdm"
fdm=$value
} }
@ -155,25 +160,40 @@ _fgfs()
local cur prev words cword split local cur prev words cword split
_init_completion -s || return _init_completion -s || return
local root airport aircraft_dir carrier scenarios scenery value local root airport aircraft_dir carrier scenarios scenery value fdm
# auto-completion for values of keys ( --key=value ) # auto-completion for values of keys ( --key=value )
case "$prev" in case "$prev" in
--fg-aircraft|--fg-root|--fg-scenery|--flight-plan|--terrasync-dir|--materials-file|--config|--browser-app) --fg-aircraft|\
--fg-root|\
--fg-scenery|\
--flight-plan|\
--terrasync-dir|\
--materials-file|\
--config|\
--browser-app|\
--data|\
--addon|\
--download-dir|\
--log-dir|\
--load-tape|\
--texture-cache-dir|\
--jsbsim-output-directive-file|\
--allow-nasal-read)
# completion of filesystem path # completion of filesystem path
_filedir _filedir
return 0 ;; return 0 ;;
--ai-scenario) --ai-scenario)
# list of scenarios in $FG_ROOT/AI # list of scenarios in $FG_ROOT/AI
_get_fg_root _get_fg_root
scenarios="$(find "$root/AI" -maxdepth 1 -iname *.xml -printf '%f\n' | sed -e 's/.xml$//')" scenarios="$(find "$root/AI" -maxdepth 1 -iname '*.xml' -printf '%f\n' | sed -e 's/.xml$//')"
COMPREPLY=( $(compgen -W "${scenarios}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${scenarios}" -- ${cur}) )
return 0 ;; return 0 ;;
--aircraft|--vehicle) --aircraft|--vehicle)
# list of aircrafts in $FG_AIRCRAFT # list of aircrafts in $FG_AIRCRAFT
_get_fg_aircraft _get_fg_aircraft
aircrafts="$(find "$aircraft_dir" -maxdepth 2 -mindepth 2 -iname *-set.xml -printf '%f\n' | sed -e 's/-set.xml$//')" aircrafts="$(find "$aircraft_dir" -maxdepth 2 -mindepth 2 -iname '*-set.xml' -printf '%f\n' | sed -e 's/-set.xml$//')"
COMPREPLY=( $(compgen -W "${aircrafts}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${aircrafts}" -- ${cur}) )
return 0 ;; return 0 ;;
@ -186,12 +206,11 @@ _fgfs()
COMPREPLY=( $(compgen -W "$(awk 'BEGIN { FS="|"; } { print $1 }' "$scenery/Airports/index.txt")" -- ${cur}) ) COMPREPLY=( $(compgen -W "$(awk 'BEGIN { FS="|"; } { print $1 }' "$scenery/Airports/index.txt")" -- ${cur}) )
return 0 return 0
# or at least the apt.dat file? # or at least the apt.dat file?
else if [ -e "$root/Airports/apt.dat.gz" ] elif [ -e "$root/Airports/apt.dat.gz" ]
then then
COMPREPLY=( $(compgen -W "$(zcat "$root/Airports/apt.dat.gz" | awk '/^1 / { print $5 }')" -- ${cur}) ) COMPREPLY=( $(compgen -W "$(zcat "$root/Airports/apt.dat.gz" | awk '/^1 / { print $5 }')" -- ${cur}) )
return 0 return 0
fi fi
fi
return 0 ;; return 0 ;;
--carrier) --carrier)
@ -242,18 +261,16 @@ BEGIN { carrier=0; name=""; }
COMPREPLY=( $(compgen -W "${runways}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${runways}" -- ${cur}) )
return 0 ;; return 0 ;;
--parkpos) --carrier-position)
# try to find out the name of the carrier or the ID of the airport # try to find out the name of the carrier or the ID of the airport
_get_carrier _get_carrier
if [ -n "$carrier" ] _get_fg_root
then _get_scenarios
_get_fg_root
_get_scenarios for scenario in $scenarios
do
for scenario in $scenarios positions="$(awk -v carrier_name="$carrier" '
do
positions="$(awk -v carrier_name="$carrier" '
BEGIN { carrier=0; name=0; parkpos=0; } BEGIN { carrier=0; name=0; parkpos=0; }
/<type>/ { /<type>/ {
a=index($0,"<type>")+6; s=index(substr($0,a),"</type>")-1; a=index($0,"<type>")+6; s=index(substr($0,a),"</type>")-1;
@ -274,33 +291,34 @@ BEGIN { carrier=0; name=0; parkpos=0; }
carrier=name=parkpos=0; carrier=name=parkpos=0;
}' "$root/AI/$scenario.xml")" }' "$root/AI/$scenario.xml")"
if [ -n "$positions" ] if [ -n "$positions" ]
then then
break break
fi fi
done done
COMPREPLY=( $(compgen -W "${positions} abeam FLOLS" -- ${cur}) )
return 0 ;;
--parkpos|--parking-id)
_get_fg_scenery
_get_airport
# search for the groundnet or parking file
path="$scenery/Airports/${airport:0:1}/${airport:1:1}/${airport:2:1}"
if [ -e "$path/$airport.groundnet.xml" ]
then
file="$airport.groundnet.xml"
elif [ -e "$path/$airport.parking.xml" ]
then
file="$airport.parking.xml"
else else
_get_fg_scenery # no file found => do not try to analyze it!
_get_airport return 0
fi
# search for the groundnet or parking file
path="$scenery/Airports/${airport:0:1}/${airport:1:1}/${airport:2:1}" # build a list of the parking positions at that airport
positions="$(awk -- '
if [ -e "$path/$airport.groundnet.xml" ]
then
file="$airport.groundnet.xml"
else if [ -e "$path/$airport.parking.xml" ]
then
file="$airport.parking.xml"
else
# no file found => do not try to analyze it!
return 0
fi
fi
# build a list of the parking positions at that airport
positions="$(awk -- '
/<Parking/ { /<Parking/ {
pos_active=1; pos_active=1;
name=number=""; name=number="";
@ -324,13 +342,9 @@ BEGIN { carrier=0; name=0; parkpos=0; }
pos_active=0; pos_active=0;
name=number=""; name=number="";
}' "$path/$file")" }' "$path/$file")"
fi
COMPREPLY=( $(compgen -W "${positions}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${positions}" -- ${cur}) )
return 0 ;; return 0 ;;
--control)
COMPREPLY=( $(compgen -W "joystick keyboard mouse" -- ${cur}) )
return 0 ;;
--failure) --failure)
COMPREPLY=( $(compgen -W "pitot static vacuum electrical" -- ${cur}) ) COMPREPLY=( $(compgen -W "pitot static vacuum electrical" -- ${cur}) )
return 0 ;; return 0 ;;
@ -339,13 +353,15 @@ BEGIN { carrier=0; name=0; parkpos=0; }
COMPREPLY=( $(compgen -W "$(zcat "$root/Navaids/fix.dat.gz" | awk '{ print substr($3,0,5) }')" -- ${cur}) ) COMPREPLY=( $(compgen -W "$(zcat "$root/Navaids/fix.dat.gz" | awk '{ print substr($3,0,5) }')" -- ${cur}) )
return 0 ;; return 0 ;;
--fdm) --fdm)
COMPREPLY=( $(compgen -W "jsb larcsim yasim magic balloon ada external null" -- ${cur}) ) COMPREPLY=( $(compgen -W "ada acms aisim balloon jsb larcsim magic network pipe ufo yasim external null" -- ${cur}) )
return 0 ;; return 0 ;;
--min-status) --min-status)
COMPREPLY=( $(compgen -W "alpha beta early-production production" -- ${cur}) ) COMPREPLY=( $(compgen -W "alpha beta early-production production advanced-production" -- ${cur}) )
return 0 ;; return 0 ;;
--log-class) --log-class)
COMPREPLY=( $(compgen -W "ai environment flight general io network sound terrain" -- ${cur}) ) COMPREPLY=( $(compgen -W "none ai aircraft astro atc autopilot clipper cockpit environment event flight \
general gl gui headless input instrumentation io math nasal navaid network osg \
particles sound systems terrain terrasync undefined view all" -- ${cur}) )
return 0 ;; return 0 ;;
--log-level) --log-level)
COMPREPLY=( $(compgen -W "bulk debug info warn alert" -- ${cur}) ) COMPREPLY=( $(compgen -W "bulk debug info warn alert" -- ${cur}) )
@ -359,8 +375,8 @@ BEGIN { carrier=0; name=0; parkpos=0; }
_get_opt "ndb" _get_opt "ndb"
COMPREPLY=( $(compgen -W "$(zcat "$root/Navaids/nav.dat.gz" | awk -v nav=$value '/^2 / { if($8 == nav) print $5 }')" -- ${cur}) ) COMPREPLY=( $(compgen -W "$(zcat "$root/Navaids/nav.dat.gz" | awk -v nav=$value '/^2 / { if($8 == nav) print $5 }')" -- ${cur}) )
return 0 ;; return 0 ;;
--season) --dme)
COMPREPLY=( $(compgen -W "summer winter" -- ${cur}) ) COMPREPLY=( $(compgen -W "nav1 nav2" -- ${cur}) )
return 0 ;; return 0 ;;
--texture-filtering) --texture-filtering)
COMPREPLY=( $(compgen -W "1 2 4 8 16" -- ${cur}) ) COMPREPLY=( $(compgen -W "1 2 4 8 16" -- ${cur}) )
@ -380,16 +396,140 @@ BEGIN { carrier=0; name=0; parkpos=0; }
_get_opt "vor" _get_opt "vor"
COMPREPLY=( $(compgen -W "$(zcat "$root/Navaids/nav.dat.gz" | awk -v nav=$value '/^3 / { if($8 == nav) print substr($5,0,3) "." substr($5,4) }')" -- ${cur}) ) COMPREPLY=( $(compgen -W "$(zcat "$root/Navaids/nav.dat.gz" | awk -v nav=$value '/^3 / { if($8 == nav) print substr($5,0,3) "." substr($5,4) }')" -- ${cur}) )
return 0 ;; return 0 ;;
--bpp)
COMPREPLY=( $(compgen -W "16 24 32" -- ${cur}) )
return 0 ;;
--graphics-preset)
COMPREPLY=( $(compgen -W "minimal-quality low-quality medium-quality high-quality ultra-quality" -- ${cur}) )
return 0 ;;
--terrain-engine)
COMPREPLY=( $(compgen -W "tilecache pagedLOD" -- ${cur}) )
return 0 ;;
--lod-texturing)
COMPREPLY=( $(compgen -W "bluemarble raster debug" -- ${cur}) )
return 0 ;;
--aero)
_get_fdm
if [ "${fdm}" == "larcsim" ]
then
COMPREPLY=( $(compgen -W "basic c172 cherokee navion uiuc" -- ${cur}) )
return 0
fi
return 0 ;;
--compositor)
COMPREPLY=( $(compgen -W "Compositor/default Compositor/Classic/classic Compositor/HDR/hdr" -- ${cur}) )
return 0 ;;
--language)
COMPREPLY=( $(compgen -W "ca de en es fr it nl pl pt ru tr sk zh TEST" -- ${cur}) )
return 0 ;;
--version|\
--terrasync|\
--launcher|\
--splash-screen|\
--mouse-pointer|\
--no-default-config|\
--read-only|\
--ignore-autosave|\
--save-on-exit|\
--restore-defaults|\
--gui|\
--composite-viewer|\
--panel|\
--freeze|\
--fuel-freeze|\
--clock-freeze|\
--ai-models|\
--ai-traffic|\
--vr|\
--restart-launcher|\
--load-tape-create-video|\
--auto-coordination|\
--trim|\
--notrim|\
--on-ground|\
--in-air|\
--show-sound-devices|\
--sound|\
--horizon-effect|\
--distance-attenuation|\
--specular-highlight|\
--clouds|\
--clouds3d|\
--texture-cache|\
--fullscreen|\
--random-objects|\
--wireframe|\
--hud|\
--anti-alias-hud|\
--hud-3d|\
--allow-nasal-from-sockets|\
--sentry|\
--fgcom|\
--hold-short|\
--real-weather-fetch|\
--horizon-effect|\
--console|\
--developer|\
--fpe|\
--json-report)
COMPREPLY=( $(compgen -W "true false 1 0 yes no" -- ${cur}) )
# Without `return 0` to allow not giving the value true/false/1/0/yes/no
# and instead giving another option starting with --
# return 0 ;; <- skip it
esac esac
case "${cur}" in case "${cur}" in
-*) -*)
# These options are not included in the -h -v output so we add them manually:
EnableDisableOptions="--enable-terrasync --disable-terrasync \
--enable-launcher --disable-launcher \
--enable-splash-screen --disable-splash-screen \
--enable-mouse-pointer --disable-mouse-pointer \
--enable-read-only --disable-read-only \
--enable-ignore-autosave --disable-ignore-autosave \
--enable-save-on-exit --disable-save-on-exit \
--enable-restore-defaults --disable-restore-defaults \
--enable-gui --disable-gui \
--enable-composite-viewer --disable-composite-viewer \
--enable-panel --disable-panel \
--enable-freeze --disable-freeze \
--enable-fuel-freeze --disable-fuel-freeze \
--enable-clock-freeze --disable-clock-freeze \
--enable-ai-models --disable-ai-models \
--enable-ai-traffic --disable-ai-traffic \
--enable-vr --disable-vr \
--enable-restart-launcher --disable-restart-launcher \
--enable-load-tape-create-video --disable-load-tape-create-video \
--enable-auto-coordination --disable-auto-coordination \
--enable-sound --disable-sound \
--enable-horizon-effect --disable-horizon-effect \
--enable-distance-attenuation --disable-distance-attenuation \
--enable-specular-highlight --disable-specular-highlight \
--enable-clouds --disable-clouds \
--enable-clouds3d --disable-clouds3d \
--enable-texture-cache --disable-texture-cache \
--enable-fullscreen --disable-fullscreen \
--enable-random-objects --disable-random-objects \
--enable-wireframe --disable-wireframe \
--enable-hud --disable-hud \
--enable-anti-alias-hud --disable-anti-alias-hud \
--enable-hud-3d --disable-hud-3d \
--enable-allow-nasal-from-sockets --disable-allow-nasal-from-sockets \
--enable-sentry --disable-sentry \
--enable-fgcom --disable-fgcom \
--enable-hold-short --disable-hold-short \
--enable-real-weather-fetch --disable-real-weather-fetch \
--enable-horizon-effect --disable-horizon-effect \
--enable-developer --disable-developer \
--enable-fpe --disable-fpe";
# auto completion for options # auto completion for options
COMPREPLY=( $(compgen -W "$(_parse_help fgfs "--help --verbose")" -- ${cur}) ) COMPREPLY=( $(compgen -W "$(_parse_help fgfs "--help --verbose") ${EnableDisableOptions}" -- ${cur}) )
# no whitespace after keys # no whitespace after keys
[[ $COMPREPLY == *= ]] && compopt -o nospace ;; [[ $COMPREPLY == *= ]] && compopt -o nospace ;;
*) *)
_filedir return 0
esac esac
return 0 return 0

View file

@ -10,162 +10,273 @@ _fgfs_root=${FG_ROOT:-/usr/local/share/FlightGear}
_fgfs_options=( _fgfs_options=(
'(-h --help)'{-h,--help}'[Show the most relevant command line options]' \ '--addon=[Specify a path to addon. Multiple instances can be used]:Directories:_directories' \
'--version[FlightGear version]' \ '--adf1=[Set the ADF1 radio frequency, optionally preceded by a card rotation]' \
'--verbose[Show all command line options when combined --help or -h]' \ '--adf2=[Set the ADF2 radio frequency, optionally preceded by a card rotation]' \
'--disable-intro-music[Disable introduction music]' \ '--aero=[Select aircraft aerodynamics model to load]' \
'--enable-intro-music[Enable introduction music]' \ '--ai-models[Enable/disable the artifical traffic subsystem]:Boolean values:(true false 1 0 yes no)' \
'--units-feet[Use feet for distances]' \ '--disable-ai-models[Disable the artifical traffic subsystem]' \
'--units-meters[Use meters for distances]' \ '--enable-ai-models[Enable the artifical traffic]' \
'--disable-sound[Disable sound effects]' \ '--aircraft=[Select an aircraft profile]:Aircraft:->aircraft' \
'--enable-sound[Enable sound effects]' \ '--vehicle=[Select an aircraft profile]:Aircraft:->vehicle' \
'--disable-panel[Disable instrument panel]' \ '--aircraft-dir=[Aircraft directory relative to the path of the executable]:Aircraft directory:_directories' \
'--enable-panel[Enable instrument panel]' \ '--airport=[Specify starting position relative to an airport]:Airport:->airport' \
'--disable-hud[Disable Heads Up Display (HUD)]' \ '--ai-scenario=[Add and enable a new scenario]:AI scenario:->ai-scenario' \
'--enable-hud[Enable Heads Up Display (HUD)]' \ '--allow-nasal-from-sockets[Enable/disable allowing executing Nasal scripts from sockets]:Boolean values:(true false 1 0 yes no)' \
'--disable-anti-alias-hud[Disable anti-aliased HUD]' \ '--enable-allow-nasal-from-sockets[Enable allowing executing Nasal scripts from sockets]' \
'--enable-anti-alias-hud[Enable anti-aliased HUD]' \ '--disable-allow-nasal-from-sockets[Disable allowing executing Nasal scripts from sockets]' \
'--disable-hud-3d[Disable 3D HUD]' \ '--allow-nasal-read=[Allow Nasal scripts to read files from directories]:Directories:_directories' \
'--enable-hud-3d[Enable 3D HUD]' \ '--altitude=[Starting altitude]' \
'--hud-tris[Hud displays number of triangles rendered]' \ '--anti-alias-hud[Enable/disable anti-aliased HUD]:Boolean values:(true false 1 0 yes no)' \
'--hud-culled[Hud displays percentage of triangles culled]' \ '--disable-anti-alias-hud[Disable anti-aliased HUD]' \
'--disable-random-objects[Exclude random scenery objects (buildings, etc.)]' \ '--enable-anti-alias-hud[Enable anti-aliased HUD]' \
'--enable-random-objects[Include random scenery objects (buildings, etc.)]' \ '--aspect-ratio-multiplier=[Specify a multiplier for the aspect ratio]' \
'--disable-ai-models[Disable the artifical traffic subsystem]' \ '--atcsim=[Open connection using the ATC sim protocol (atc610x)]' \
'--enable-ai-models[Enable the artifical traffic]' \ '--atlas=[Open connection using the Atlas protocol]' \
'--disable-freeze[Start in a running state]' \ '--auto-coordination[Enable/disable auto coordination]:Boolean values:(true false 1 0 yes no)' \
'--enable-freeze[Start in a frozen state]' \ '--enable-auto-coordination[Enable auto coordination]' \
'--disable-fuel-freeze[Fuel is consumed normally]' \ '--disable-auto-coordination[Disable auto coordination]' \
'--enable-fuel-freeze[Fuel tank quantity forced to remain constant]' \ '--AV400=[Emit the Garmin AV400 protocol]' \
'--disable-clock-freeze[Clock advances normally]' \ '--AV400Sim=[Emit the set of AV400 strings]' \
'--enable-clock-freeze[Do not advance clock]' \ '--AV400WSimA=[Open connection for "A" channel using Garmin WAAS GPS protocol]' \
'--disable-splash-screen[Disable splash screen]' \ '--AV400WSimB=[Open connection for "B" channel using Garmin WAAS GPS protocol]' \
'--enable-splash-screen[Enable splash screen]' \ '--bpp=[Specify the bits per pixel]:Bits per pixel:(16 24 32)' \
'--disable-mouse-pointer[Disable extra mouse pointer]' \ '--browser-app=[Specify path to your web browser]:Directories:_directories' \
'--enable-mouse-pointer[Enable extra mouse pointer]' \ '--callsign=[Assign a unique name to a player]' \
'--carrier=[Specify starting position on an AI carrier]:AI carrier:(Antonio Clemenceau Eisenhower Foch Kuznetsov Liaoning Nimitz San Truman Vinson)' \
'--carrier-position=[Specify which starting position on an AI carrier]:Park position:->parkpos' \
'--ceiling=[Create an overcast ceiling, optionally with a specific thickness]' \
'--clock-freeze[Enable/disable clock freeze]:Boolean values:(true false 1 0 yes no)' \
'--disable-clock-freeze[Clock advances normally]' \
'--enable-clock-freeze[Do not advance clock]' \
'--clouds[Enable/disable 2D (flat) cloud layers]:Boolean values:(true false 1 0 yes no)' \
'--enable-clouds[Enable 2D (flat) cloud layers]' \
'--disable-clouds[Disable 2D (flat) cloud layers]' \
'--clouds3d[Enable/disable 3D (volumetric) cloud layers]:Boolean values:(true false 1 0 yes no)' \
'--enable-clouds3d[Enable 3D (volumetric) cloud layers]' \
'--disable-clouds3d[Disable 3D (volumetric) cloud layers]' \
'--com1=[Set the COM1 radio frequency]' \
'--com2=[Set the COM2 radio frequency]' \
'--composite-viewer[Enable/disable CompositeViewer]:Boolean values:(true false 1 0 yes no)' \
'--enable-composite-viewer[Enable CompositeViewer]' \
'--disable-composite-viewer[Disable CompositeViewer]' \
'--compositor=[Specify the path to XML file for multi-pass rendering]' \
'--config=[Load additional properties from file]:Directories:_files' \
'--data=[Specify an additional base data directory (FGData)]:Directories:_directories' \
'--developer[Enable/Disable developer mode]:Boolean values:(true false 1 0 yes no)' \
'--enable-developer[Enable developer mode]' \
'--disable-developer[Disable developer mode]' \
'--distance-attenuation[Enable/disable runway light distance attenuation]:Boolean values:(true false 1 0 yes no)' \
'--disable-distance-attenuation[Disable runway light distance attenuation]' \
'--enable-distance-attenuation[Enable runway light distance attenuation]' \
'--dme=[Slave the ADF to one of the NAV radios, or set its internal frequency]' \
'--download-dir=[Store aircraft and scenery downloaded via the simulator in path]:Directories:_directories' \
'--failure=[Fail the pitot, static, vacuum, or electrical system]:Failure system:(pitot static vaccum electical)'
'--fdm=[Select the core flight dynamics model]:Core flight dynamics model:(jsb larcsim yasim magic balloon ada external)' \
'--fg-aircraft=[Specify additional aircraft directory path(s)]:Directories:_directories' \
'--fgcom[Enable/disable built-in FGCom]:Boolean values:(true false 1 0 yes no)' \
'--enable-fgcom[Enable built-in FGCom]' \
'--disable-fgcom[Disable built-in FGCom]' \
'--fg-root=[Specify the root data path]:Directories:_directories' \
'--fg-scenery=[Specify the base scenery path]:Directories:_directories' \
'--fgviewer[Use a model viewer rather than load the entire simulator]' \
'--fix=[Specify starting position relative to a fix]:FIX:->fix' \
'--flarm=[Open connection using the Flarm protocol]' \
'--flight-plan=[Read all waypoints from a file]:Waypoints file:_files' \
'--fog-disable[Disable fog/haze]' \ '--fog-disable[Disable fog/haze]' \
'--fog-fastest[Enable fastest fog/haze]' \ '--fog-fastest[Enable fastest fog/haze]' \
'--fog-nicest[Enable nicest fog/haze]' \ '--fog-nicest[Enable nicest fog/haze]' \
'--disable-distance-attenuation[Disable runway light distance attenuation]' \
'--enable-distance-attenuation[Enable runway light distance attenuation]' \
'--disable-specular-highlight[Disable specular reflections on textured objects]' \
'--enable-specular-highlight[Enable specular reflections on textured objects]' \
'--disable-fullscreen[Disable fullscreen mode]' \
'--enable-fullscreen[Enable fullscreen mode]' \
'--disable-game-mode[Disable full-screen game mode]' \
'--enable-game-mode[Enable full-screen game mode]' \
'--shading-flat[Enable flat shading]' \
'--shading-smooth[Enable smooth shading]' \
'--disable-skyblend[Disable sky blending]' \
'--enable-skyblend[Enable sky blending]' \
'--disable-textures[Disable textures]' \
'--enable-textures[Enable textures]' \
'--disable-vr[Disable VR]' \
'--enable-vr[Enable VR]' \
'--disable-wireframe[Disable wireframe drawing mode]' \
'--enable-wireframe[Enable wireframe drawing mode]' \
'--notrim[Do NOT attempt to trim the model (only with fdm=jsbsim)]' \
'--on-ground[Start at ground level (default)]' \
'--in-air[Start in air (implied when using --altitude)]' \
'--enable-auto-coordination[Enable auto coordination]' \
'--disable-auto-coordination[Disable auto coordination]' \
'--show-aircraft[Print a list of the currently available aircraft types]' \
'--time-match-real[Synchronize time with real-world time]' \
'--time-match-local[Synchronize time with local real-world time]' \
'--disable-real-weather-fetch[Disbale METAR based real weather fetching]' \
'--enable-real-weather-fetch[Enable METAR based real weather fetching]' \
'--disable-horizon-effect[Disable celestial body growth illusion near the horizon]' \
'--enable-horizon-effect[Enable celestial body growth illusion near the horizon]' \
'--enable-clouds[Enable 2D (flat) cloud layers]' \
'--disable-clouds[Disable 2D (flat) cloud layers]' \
'--enable-clouds3d[Enable 3D (volumetric) cloud layers]' \
'--disable-clouds3d[Disable 3D (volumetric) cloud layers]' \
'--atc610x[Enable atc610x interface]' \
'--enable-save-on-exit[Allow saving preferences at program exit]' \
'--disable-save-on-exit[Do not save preferences upon program exit]' \
'--ai-scenario=[Add and enable a new scenario]:AI scenario:->ai-scenario' \
'--fg-root=[Specify the root data path]:Directories:_directories' \
'--fg-scenery=[Specify the base scenery path]:Directories:_directories' \
'--language=[Select the language for this session]:Language:->language' \
'--browser-app=[Specify path to your web browser]:Directories:_directories' \
'--config=[Load additional properties from path]' \
'--failure=[Fail the pitot, static, vacuum, or electrical system]:Failure system:(pitot static vaccum electical)'
'--bpp=[Specify the bits per pixel]' \
'--fov=[Specify field of view angle]' \ '--fov=[Specify field of view angle]' \
'--callsign=[Assign a unique name to a player]' \ '--fpe[Enable/Disable aborting on encountering a floating point exception]:Boolean values:(true false 1 0 yes no)' \
'--aspect-ratio-multiplier=[Specify a multiplier for the aspect ratio]' \ '--enable-fpe[Enable aborting on encountering a floating point exception]' \
'--disable-fpe[Disable aborting on encountering a floating point exception]' \
'--freeze[Enable/disable simulation freeze]:Boolean values:(true false 1 0 yes no)' \
'--disable-freeze[Start in a running state]' \
'--enable-freeze[Start in a frozen state]' \
'--fuel-freeze[Enable/disable fuel freeze]:Boolean values:(true false 1 0 yes no)' \
'--disable-fuel-freeze[Fuel is consumed normally]' \
'--enable-fuel-freeze[Fuel tank quantity forced to remain constant]' \
'--fullscreen[Enable/disable fullscreen mode]:Boolean values:(true false 1 0 yes no)' \
'--disable-fullscreen[Disable fullscreen mode]' \
'--enable-fullscreen[Enable fullscreen mode]' \
'--garmin=[Open connection using the Garmin GPS protocol]' \
'--generic=[Open connection using a predefined communication interface]' \
'--geometry=[Specify window geometry (640x480, etc)]' \ '--geometry=[Specify window geometry (640x480, etc)]' \
'--view-offset=[Specify the default forward view direction as an offset from straight ahead]' \ '--glideslope=[Specify flight path angle (in degrees)]' \
'--aircraft=[Select an aircraft profile]:Aircraft:->aircraft' \ '--graphics-preset=[Specify a graphic preset]:Graphic presets:(minimal-quality low-quality medium-quality high-quality ultra-quality)' \
'--min-status=[Allows you to define a minimum status level for all listed aircraft]:Minimum status level:(alpha beta early-production production)' \ '--gui[Enable/disable GUI (disabling GUI enables headless mode)]:Boolean values:(true false 1 0 yes no)' \
'--fdm=[Select the core flight dynamics model]:Core flight dynamics model:(jsb larcsim yasim magic balloon ada external)' \ '--enable-gui[Enable GUI]' \
'--aero=[Select aircraft aerodynamics model to load]' \ '--disable-gui[Disable GUI (disabling GUI enables headless mode)]' \
'--model-hz=[Run the FDM this rate (iterations per second)]' \
'--speed=[Run the FDM n times faster than real time]' \
'--aircraft-dir=[Aircraft directory relative to the path of the executable]:Aircraft directory:_directories' \
'--timeofday=[Specify a time of day]:Time of day:(real dawn morning noon afternoon dusk evening midnight)' \
'--time-offset=[Add this time offset (+/-hh:mm:ss)]' \
'--start-date-sys=[Specify a starting date/time with respect to system time (yyyy:mm:dd:hh:mm:ss)]' \
'--start-date-gmt=[Specify a starting date/time with respect to Greenwich Mean Time (yyyy:mm:dd:hh:mm:ss)]' \
'--start-date-lat=[Specify a starting date/time with respect to Local Aircraft Time (yyyy:mm:dd:hh:mm:ss)]' \
'--airport=[Specify starting position relative to an airport]:Airport:->airport' \
'--runway=[Specify starting runway (must also specify an airport)]:Runway:->runway' \
'--carrier=[Specify starting position on an AI carrier]:AI carrier:(Nimitz Eisenhower Foch)' \
'--parkpos=[Specify which starting position on an AI carrier]:Park position:->parkpos' \
'--vor=[Specify starting position relative to a VOR]:VOR:->vor' \
'--ndb=[Specify starting position relative to an NDB]:NDB:->ndb' \
'--fix=[Specify starting position relative to a fix]:FIX:->fix' \
'--offset-distance=[Specify distance to reference point (in miles)]' \
'--offset-azimuth=[Specify heading to reference point (in degrees)]' \
'--lon=[Starting longitude (in degrees)]' \
'--lat=[Starting latitude (in degrees)]' \
'--altitude=[Starting altitude]' \
'--heading=[Specify heading (yaw) angle (Psi)]' \ '--heading=[Specify heading (yaw) angle (Psi)]' \
'--roll=[Specify roll angle (Phi)]' \ '--roll=[Specify roll angle (Phi)]' \
'--pitch=[Specify pitch angle (Theta)]' \ '--pitch=[Specify pitch angle (Theta)]' \
'(-h --help)'{-h,--help}'[Show the most relevant command line options]' \
'--hold-short[Enable/disable move to hold short in MP]:Boolean values:(true false 1 0 yes no)' \
'--enable-hold-short[Enable move to hold short in MP]' \
'--disable-hold-short[Disable move to hold short in MP]' \
'--horizon-effect[Enable/Disable celestial body growth illusion near the horizon]:Boolean values:(true false 1 0 yes no)' \
'--disable-horizon-effect[Disable celestial body growth illusion near the horizon]' \
'--enable-horizon-effect[Enable celestial body growth illusion near the horizon]' \
'--httpd=[Enable http server on the specified port]' \
'--hud[Enable/disable Heads Up Display (HUD)]:Boolean values:(true false 1 0 yes no)' \
'--disable-hud[Disable Heads Up Display (HUD)]' \
'--enable-hud[Enable Heads Up Display (HUD)]' \
'--hud-3d[Enable/disable 3D HUD]:Boolean values:(true false 1 0 yes no)' \
'--disable-hud-3d[Disable 3D HUD]' \
'--enable-hud-3d[Enable 3D HUD]' \
'--hud-culled[Hud displays percentage of triangles culled]' \
'--hud-tris[Hud displays number of triangles rendered]' \
'--igc=[Open connection using the International Gliding Commission (IGC) protocol]' \
'--ignore-autosave[Enable/disable ignoring the autosave file]:Boolean values:(true false 1 0 yes no)' \
'--enable-ignore-autosave[Enable ignoring the autosave file]' \
'--disable-ignore-autosave[Disable ignoring the autosave file]' \
'--in-air[Start in air (implied when using --altitude)]' \
'--on-ground[Start at ground level (default)]' \
'--joyclient=[Open connection to an Agwagon joystick]' \
'--jpg-httpd=[Enable screen shot http server on the specified port]' \
'--jsbsim-output-directive-file=[Log JSBSim properties]:File:_files' \
'--jsclient=[Open connection to a remote joystick]' \
'--json-report[Enable/Disable printing a report in JSON format]:Boolean values:(true false 1 0 yes no)' \
'--language=[Select the language for this session]:Language:(ca de en es fr it nl pl pt ru tr sk zh)' \
'--lat=[Starting latitude (in degrees)]' \
'--lon=[Starting longitude (in degrees)]' \
'--launcher[Enable/disable Qt Launcher]:Boolean values:(true false 1 0 yes no)' \
'--enable-launcher[Enable Qt Launcher]' \
'--disable-launcher[Disable Qt Launcher]' \
'--livery=[Select aircraft livery]' \
'--load-tape=[Load recording of earlier flightgear session]' \
'--load-tape-create-video[Enable/disable encode video while replaying tape]:Boolean values:(true false 1 0 yes no)' \
'--enable-load-tape-create-video[Enable encode video while replaying tape]' \
'--disable-load-tape-create-video[Disable encode video while replaying tape]' \
'--load-tape-fixed-dt=[Set fixed-dt mode while replaying tape specified by --load-tape]' \
'--lod-levels=[Specify the detail levels]' \
'--lod-range-mult=[Specify the range multiplier]' \
'--lod-res=[Specify the resolution of the terrain grid]' \
'--lod-texturing=[Specify the method of texturing the terrain]:LOD texturing:(bluemarble raster debug)' \
'--log-class=[Specify which logging class(es) to use]:Log class:(none ai aircraft astro atc autopilot clipper cockpit environment event flight general gl gui headless input instrumentation io math nasal navaid network osg particles sound systems terrain terrasync undefined view all)' \
'--log-dir=[Save the logs in the given directory]:Directories:_directories' \
'--log-level=[Specify which loggin level to use]:Log level:(bulk debug info warn alert)' \
'--mach=[Specify initial mach number]' \
'--materials-file=[Specify the materials file used to render the scenery]' \
'--max-fps=[Maximum frame rate in Hz]' \
'--metar=[Pass a METAR string to set up static weather]' \
'--min-status=[Allows you to define a minimum status level for all listed aircraft]:Minimum status level:(alpha beta early-production production)' \
'--model-hz=[Run the FDM this rate (iterations per second)]' \
'--mouse-pointer[Enable/disable extra mouse pointer]:Boolean values:(true false 1 0 yes no)' \
'--disable-mouse-pointer[Disable extra mouse pointer]' \
'--enable-mouse-pointer[Enable extra mouse pointer]' \
'--multiplay=[Specify multipilot communication settings ({in|out},hz,address,port)]' \
'--native=[Open connection using the FG Native protocol]' \
'--native-ctrls=[Open connection using the FG Native Controls protocol]' \
'--native-fdm=[Open connection using the FG Native FDM protocol]' \
'--native-gui=[Open connection using the FG Native GUI protocol]' \
'--nav1=[Set the NAV1 radio frequency, optionally preceded by a radial]' \
'--nav2=[Set the NAV2 radio frequency, optionally preceded by a radial]' \
'--ndb=[Specify starting position relative to an NDB]:NDB:->ndb' \
'--nmea=[Open connection using the NMEA protocol]' \
'--no-default-config[Enable/Disable not loading any default config files unless explicitly specified with --config]:Boolean values:(true false 1 0 yes no)' \
'--offset-azimuth=[Specify heading to reference point (in degrees)]' \
'--offset-distance=[Specify distance to reference point (in miles)]' \
'--opengc=[Open connection using the OpenGC protocol]' \
'--panel[Enable/disable instrument panel]:Boolean values:(true false 1 0 yes no)' \
'--disable-panel[Disable instrument panel]' \
'--enable-panel[Enable instrument panel]' \
'--parking-id=[Specify parking position]' \
'--parkpos=[Specify parking position]' \
'--prop\:[Set the given property to the given value]' \
'--prop\:browser=[Open the properties dialog immediately on the given property]' \
'--props=[Open connection using the interactive property manager]' \
'--proxy=[Specify which proxy server (and port) to use (user:pwd@host:port)]' \
'--pve=[Open connection using the PVE protocol]' \
'--random-objects[Enable/disable random scenery objects (buildings, etc.)]:Boolean values:(true false 1 0 yes no)' \
'--disable-random-objects[Exclude random scenery objects (buildings, etc.)]' \
'--enable-random-objects[Include random scenery objects (buildings, etc.)]' \
'--random-wind[Set up random wind direction and speed]' \
'--ray=[Open connection using the Ray Woodworth motion chair protocol]' \
'--read-only[Enable/disable folder $FG_HOME read-only]:Boolean values:(true false 1 0 yes no)' \
'--enable-read-only[Enable folder $FG_HOME read-only]' \
'--disable-read-only[Disable folder $FG_HOME read-only]' \
'--real-weather-fetch[Enable/disbale METAR based real weather fetching]:Boolean values:(true false 1 0 yes no)' \
'--disable-real-weather-fetch[Disbale METAR based real weather fetching]' \
'--enable-real-weather-fetch[Enable METAR based real weather fetching]' \
'--restart-launcher[Enable/Disable automatic opening of the Launcher when exiting FlightGear]:Boolean values:(true false 1 0 yes no)' \
'--enable-restart-launcher[Enable automatic opening of the Launcher when exiting FlightGear]' \
'--disable-restart-launcher[Disable automatic opening of the Launcher when exiting FlightGear]' \
'--restore-defaults[Enable/disable resetting all user settings to their defaults]:Boolean values:(true false 1 0 yes no)' \
'--enable-restore-defaults[Enable resetting all user settings to their defaults]' \
'--disable-restore-defaults[Disable resetting all user settings to their defaults]' \
'--roc=[Specify initial climb rate]' \
'--rul=[Open connection using the RUL protocol]' \
'--runway=[Specify starting runway (must also specify an airport)]:Runway:->runway' \
'--save-on-exit[Enable/disable saving preferences at program exit]:Boolean values:(true false 1 0 yes no)' \
'--enable-save-on-exit[Allow saving preferences at program exit]' \
'--disable-save-on-exit[Do not save preferences upon program exit]' \
'--sentry[Enable/disable sending crash and error reports to the development team]:Boolean values:(true false 1 0 yes no)' \
'--enable-sentry[Enable sending crash and error reports to the development team]' \
'--disable-sentry[Disable sending crash and error reports to the development team]' \
'--shading-flat[Enable flat shading]' \
'--shading-smooth[Enable smooth shading]' \
'--show-aircraft[Print a list of the currently available aircraft types]:Boolean values:(true false 1 0 yes no)' \
'--show-sound-devices[Enable/disable displaying the list of audio devices]:Boolean values:(true false 1 0 yes no)' \
'--sound[Enable/disable sound effects]:Boolean values:(true false 1 0 yes no)' \
'--disable-sound[Disable sound effects]' \
'--enable-sound[Enable sound effects]' \
'--sound-device=[Explicitly specify the audio device to use]' \
'--specular-highlight[Enable/disable specular reflections on textured objects]:Boolean values:(true false 1 0 yes no)' \
'--disable-specular-highlight[Disable specular reflections on textured objects]' \
'--enable-specular-highlight[Enable specular reflections on textured objects]' \
'--speed=[Run the FDM n times faster than real time]' \
'--splash-screen[Enable/disable splash screen]:Boolean values:(true false 1 0 yes no)' \
'--disable-splash-screen[Disable splash screen]' \
'--enable-splash-screen[Enable splash screen]' \
'--start-date-gmt=[Specify a starting date/time with respect to Greenwich Mean Time (yyyy:mm:dd:hh:mm:ss)]' \
'--start-date-lat=[Specify a starting date/time with respect to Local Aircraft Time (yyyy:mm:dd:hh:mm:ss)]' \
'--start-date-sys=[Specify a starting date/time with respect to system time (yyyy:mm:dd:hh:mm:ss)]' \
'--state=[Specify the initial state of the aircraft]' \
'--telnet=[Enable telnet server on the specified port]' \
'--terrain-engine=[Specify the terrain engine you want to use]:Terrain engine:(tilecache pagedLOD)' \
'--terrasync[Enable/disable automatic scenery downloads/updates]:Boolean values:(true false 1 0 yes no)' \
'--enable-terrasync[Enable automatic scenery downloads/updates]' \
'--disable-terrasync[Disable automatic scenery downloads/updates]' \
'--terrasync-dir=[Specify the TerraSync scenery path]:Directories:_directories' \
'--texture-cache[Enable/disable texture cache (DDS)]:Boolean values:(true false 1 0 yes no)' \
'--enable-texture-cache[Enable texture cache (DDS)]' \
'--disable-texture-cache[Disable texture cache (DDS)]' \
'--texture-cache-dir=[Specify the DDS texture cache directory]:Directories:_directories' \
'--texture-filtering=[Specify anisotropic filtering of terrain textures]:Anisotropic filtering:(1 2 4 8 16)' \
'--time-match-local[Synchronize time with local real-world time]' \
'--time-match-real[Synchronize time with real-world time]' \
'--timeofday=[Specify a time of day]:Time of day:(real dawn morning noon afternoon dusk evening midnight)' \
'--time-offset=[Add this time offset (+/-hh:mm:ss)]' \
'--trace-read=[Trace the reads for a property]' \
'--trace-write=[Trace the writes for a property]' \
'--trim[Trim the model (only with --fdm=jsbsim)]' \
'--notrim[Do NOT attempt to trim the model (only with --fdm=jsbsim)]' \
'--turbulence=[Specify turbulence from 0.0 (calm) to 1.0 (severe)]' \
'--uninstall[Remove $FG_HOME directory]' \
'--units-feet[Use feet for distances]' \
'--units-meters[Use meters for distances]' \
'--vc=[Specify initial airspeed (in knots)]' \
'--verbose[Show all command line options when combined --help or -h]' \
'--version[FlightGear version]' \
'--view-offset=[Specify the default forward view direction as an offset from straight ahead]' \
'--visibility=[Specify initial visibility (in meters)]' \
'--visibility-miles=[Specify initial visibility (in miles)]' \
'--vor=[Specify starting position relative to a VOR]:VOR:->vor' \
'--vr[Enable/disable VR]:Boolean values:(true false 1 0 yes no)' \
'--disable-vr[Disable VR]' \
'--enable-vr[Enable VR]' \
'--wind=[Specify wind coming from DIR (degrees) - SPEED (knots) - (DIR@SPEED)]' \
'--wireframe[Enable/disable wireframe drawing mode]:Boolean values:(true false 1 0 yes no)' \
'--disable-wireframe[Disable wireframe drawing mode]' \
'--enable-wireframe[Enable wireframe drawing mode]' \
'--wp=[Specify a waypoint for the GC autopilot]' \
'--uBody=[Specify velocity along the body X axis]' \ '--uBody=[Specify velocity along the body X axis]' \
'--vBody=[Specify velocity along the body Y axis]' \ '--vBody=[Specify velocity along the body Y axis]' \
'--wBody=[Specify velocity along the body Z axis]' \ '--wBody=[Specify velocity along the body Z axis]' \
'--vc=[Specify initial airspeed (in knots)]' \ '--vNorth=[Specify velocity along a South-North axis]' \
'--mach=[Specify initial mach number]' \ '--vEast=[Specify velocity along a West-East axis]' \
'--glideslope=[Specify flight path angle (in degrees)]' \ '--vDown=[Specify velocity along a vertical axis]'
'--roc=[Specify initial climb rate]' \
'--wp=[Specify a waypoint for the GC autopilot]' \
'--flight-plan=[Read all waypoints from a file]:Waypoints file:_files' \
'--nav1=[Set the NAV1 radio frequency, optionally preceded by a radial]' \
'--nav2=[Set the NAV2 radio frequency, optionally preceded by a radial]' \
'--adf1=[Set the ADF1 radio frequency, optionally preceded by a card rotation]' \
'--adf2=[Set the ADF2 radio frequency, optionally preceded by a card rotation]' \
'--dme=[Slave the ADF to one of the NAV radios, or set its internal frequency]' \
'--visibility=[Specify initial visibility (in meters)]' \
'--visibility-miles=[Specify initial visibility (in miles)]' \
'--wind=[Specify wind coming from DIR (degrees) - SPEED (knots) - (DIR@SPEED)]' \
'--turbulence=[Specify turbulence from 0.0 (calm) to 1.0 (severe)]' \
'--ceiling=[Create an overcast ceiling, optionally with a specific thickness]' \
'--multiplay=[Specify multipilot communication settings ({in|out},hz,address,port)]' \
'--proxy=[Specify which proxy server (and port) to use (user:pwd@host:port)]' \
'--httpd=[Enable http server on the specified port]' \
'--telnet=[Enable telnet server on the specified port]' \
'--jpg-httpd=[Enable screen shot http server on the specified port]' \
'--generic=[Open connection using a predefined communication interface]' \
'--garmin=[Open connection using the Garmin GPS protocol]' \
'--joyclient=[Open connection to an Agwagon joystick]' \
'--jsclient=[Open connection to a remote joystick]' \
'--native-ctrls=[Open connection using the FG Native Controls protocol]' \
'--native-fdm=[Open connection using the FG Native FDM protocol]' \
'--native=[Open connection using the FG Native protocol]' \
'--nmea=[Open connection using the NMEA protocol]' \
'--opengc=[Open connection using the OpenGC protocol]' \
'--props=[Open connection using the interactive property manager]' \
'--pve=[Open connection using the PVE protocol]' \
'--ray=[Open connection using the Ray Woodworth motion chair protocol]' \
'--rul=[Open connection using the RUL protocol]' \
'--log-level=[Specify which loggin level to use]:Log level:(bulk debug info warn alert)' \
'--trace-read=[Trace the reads for a property]' \
'--trace-write=[Trace the writes for a property]' \
'--season=[Specify the startup season]:Season:(summer winter)' \
'--vehicle=[Select a vehicle profile]:Vehicle:->vehicle' \
'--prop:[]'
) )
@ -272,9 +383,6 @@ case $state in
_fgfs_ai_scenario && return 0 _fgfs_ai_scenario && return 0
;; ;;
language)
;;
aircraft|vehicle) aircraft|vehicle)
_fgfs_aircraft && return 0 _fgfs_aircraft && return 0
;; ;;