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"
return 0
# value stored in environment variable $FG_ROOT?
else if [ -n "$FG_ROOT" ]
elif [ -n "$FG_ROOT" ]
then
root="$FG_ROOT"
return 0
@ -71,7 +71,6 @@ _get_fg_root()
fi
done
fi
fi
}
_get_fg_scenery()
@ -84,7 +83,7 @@ _get_fg_scenery()
then
scenery="$value"
# value stored in environment variable $FG_SCENERY?
else if [ -n "$FG_SCENERY" ]
elif [ -n "$FG_SCENERY" ]
then
scenery="$FG_SCENERY"
# no clue! try default:
@ -93,8 +92,7 @@ _get_fg_scenery()
_get_fg_root
scenery="$root/Scenery"
fi
fi
return 0
}
@ -108,7 +106,7 @@ _get_fg_aircraft()
then
aircraft_dir="$value"
# value stored in environment variable $FG_AIRCRAFT?
else if [ -n "$FG_AIRCRAFT" ]
elif [ -n "$FG_AIRCRAFT" ]
then
aircraft_dir="$FG_AIRCRAFT"
# no clue! try default:
@ -117,7 +115,6 @@ _get_fg_aircraft()
_get_fg_root
aircraft_dir="$root/Aircraft"
fi
fi
}
_get_airport()
@ -146,7 +143,15 @@ _get_scenarios()
local value
_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
_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 )
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
_filedir
return 0 ;;
--ai-scenario)
# list of scenarios in $FG_ROOT/AI
_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}) )
return 0 ;;
--aircraft|--vehicle)
# list of aircrafts in $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}) )
return 0 ;;
@ -186,12 +206,11 @@ _fgfs()
COMPREPLY=( $(compgen -W "$(awk 'BEGIN { FS="|"; } { print $1 }' "$scenery/Airports/index.txt")" -- ${cur}) )
return 0
# or at least the apt.dat file?
else if [ -e "$root/Airports/apt.dat.gz" ]
elif [ -e "$root/Airports/apt.dat.gz" ]
then
COMPREPLY=( $(compgen -W "$(zcat "$root/Airports/apt.dat.gz" | awk '/^1 / { print $5 }')" -- ${cur}) )
return 0
fi
fi
return 0 ;;
--carrier)
@ -242,18 +261,16 @@ BEGIN { carrier=0; name=""; }
COMPREPLY=( $(compgen -W "${runways}" -- ${cur}) )
return 0 ;;
--parkpos)
--carrier-position)
# try to find out the name of the carrier or the ID of the airport
_get_carrier
if [ -n "$carrier" ]
then
_get_fg_root
_get_scenarios
for scenario in $scenarios
do
positions="$(awk -v carrier_name="$carrier" '
_get_fg_root
_get_scenarios
for scenario in $scenarios
do
positions="$(awk -v carrier_name="$carrier" '
BEGIN { carrier=0; name=0; parkpos=0; }
/<type>/ {
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;
}' "$root/AI/$scenario.xml")"
if [ -n "$positions" ]
then
break
fi
done
if [ -n "$positions" ]
then
break
fi
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
_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"
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 -- '
# no file found => do not try to analyze it!
return 0
fi
# build a list of the parking positions at that airport
positions="$(awk -- '
/<Parking/ {
pos_active=1;
name=number="";
@ -324,13 +342,9 @@ BEGIN { carrier=0; name=0; parkpos=0; }
pos_active=0;
name=number="";
}' "$path/$file")"
fi
COMPREPLY=( $(compgen -W "${positions}" -- ${cur}) )
return 0 ;;
--control)
COMPREPLY=( $(compgen -W "joystick keyboard mouse" -- ${cur}) )
return 0 ;;
--failure)
COMPREPLY=( $(compgen -W "pitot static vacuum electrical" -- ${cur}) )
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}) )
return 0 ;;
--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 ;;
--min-status)
COMPREPLY=( $(compgen -W "alpha beta early-production production" -- ${cur}) )
COMPREPLY=( $(compgen -W "alpha beta early-production production advanced-production" -- ${cur}) )
return 0 ;;
--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 ;;
--log-level)
COMPREPLY=( $(compgen -W "bulk debug info warn alert" -- ${cur}) )
@ -359,8 +375,8 @@ BEGIN { carrier=0; name=0; parkpos=0; }
_get_opt "ndb"
COMPREPLY=( $(compgen -W "$(zcat "$root/Navaids/nav.dat.gz" | awk -v nav=$value '/^2 / { if($8 == nav) print $5 }')" -- ${cur}) )
return 0 ;;
--season)
COMPREPLY=( $(compgen -W "summer winter" -- ${cur}) )
--dme)
COMPREPLY=( $(compgen -W "nav1 nav2" -- ${cur}) )
return 0 ;;
--texture-filtering)
COMPREPLY=( $(compgen -W "1 2 4 8 16" -- ${cur}) )
@ -380,16 +396,140 @@ BEGIN { carrier=0; name=0; parkpos=0; }
_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}) )
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
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
COMPREPLY=( $(compgen -W "$(_parse_help fgfs "--help --verbose")" -- ${cur}) )
COMPREPLY=( $(compgen -W "$(_parse_help fgfs "--help --verbose") ${EnableDisableOptions}" -- ${cur}) )
# no whitespace after keys
[[ $COMPREPLY == *= ]] && compopt -o nospace ;;
*)
_filedir
return 0
esac
return 0

View file

@ -10,162 +10,273 @@ _fgfs_root=${FG_ROOT:-/usr/local/share/FlightGear}
_fgfs_options=(
'(-h --help)'{-h,--help}'[Show the most relevant command line options]' \
'--version[FlightGear version]' \
'--verbose[Show all command line options when combined --help or -h]' \
'--disable-intro-music[Disable introduction music]' \
'--enable-intro-music[Enable introduction music]' \
'--units-feet[Use feet for distances]' \
'--units-meters[Use meters for distances]' \
'--disable-sound[Disable sound effects]' \
'--enable-sound[Enable sound effects]' \
'--disable-panel[Disable instrument panel]' \
'--enable-panel[Enable instrument panel]' \
'--disable-hud[Disable Heads Up Display (HUD)]' \
'--enable-hud[Enable Heads Up Display (HUD)]' \
'--disable-anti-alias-hud[Disable anti-aliased HUD]' \
'--enable-anti-alias-hud[Enable anti-aliased HUD]' \
'--disable-hud-3d[Disable 3D HUD]' \
'--enable-hud-3d[Enable 3D HUD]' \
'--hud-tris[Hud displays number of triangles rendered]' \
'--hud-culled[Hud displays percentage of triangles culled]' \
'--disable-random-objects[Exclude random scenery objects (buildings, etc.)]' \
'--enable-random-objects[Include random scenery objects (buildings, etc.)]' \
'--disable-ai-models[Disable the artifical traffic subsystem]' \
'--enable-ai-models[Enable the artifical traffic]' \
'--disable-freeze[Start in a running state]' \
'--enable-freeze[Start in a frozen state]' \
'--disable-fuel-freeze[Fuel is consumed normally]' \
'--enable-fuel-freeze[Fuel tank quantity forced to remain constant]' \
'--disable-clock-freeze[Clock advances normally]' \
'--enable-clock-freeze[Do not advance clock]' \
'--disable-splash-screen[Disable splash screen]' \
'--enable-splash-screen[Enable splash screen]' \
'--disable-mouse-pointer[Disable extra mouse pointer]' \
'--enable-mouse-pointer[Enable extra mouse pointer]' \
'--addon=[Specify a path to addon. Multiple instances can be used]:Directories:_directories' \
'--adf1=[Set the ADF1 radio frequency, optionally preceded by a card rotation]' \
'--adf2=[Set the ADF2 radio frequency, optionally preceded by a card rotation]' \
'--aero=[Select aircraft aerodynamics model to load]' \
'--ai-models[Enable/disable the artifical traffic subsystem]:Boolean values:(true false 1 0 yes no)' \
'--disable-ai-models[Disable the artifical traffic subsystem]' \
'--enable-ai-models[Enable the artifical traffic]' \
'--aircraft=[Select an aircraft profile]:Aircraft:->aircraft' \
'--vehicle=[Select an aircraft profile]:Aircraft:->vehicle' \
'--aircraft-dir=[Aircraft directory relative to the path of the executable]:Aircraft directory:_directories' \
'--airport=[Specify starting position relative to an airport]:Airport:->airport' \
'--ai-scenario=[Add and enable a new scenario]:AI scenario:->ai-scenario' \
'--allow-nasal-from-sockets[Enable/disable allowing executing Nasal scripts from sockets]:Boolean values:(true false 1 0 yes no)' \
'--enable-allow-nasal-from-sockets[Enable allowing executing Nasal scripts from sockets]' \
'--disable-allow-nasal-from-sockets[Disable allowing executing Nasal scripts from sockets]' \
'--allow-nasal-read=[Allow Nasal scripts to read files from directories]:Directories:_directories' \
'--altitude=[Starting altitude]' \
'--anti-alias-hud[Enable/disable anti-aliased HUD]:Boolean values:(true false 1 0 yes no)' \
'--disable-anti-alias-hud[Disable anti-aliased HUD]' \
'--enable-anti-alias-hud[Enable anti-aliased HUD]' \
'--aspect-ratio-multiplier=[Specify a multiplier for the aspect ratio]' \
'--atcsim=[Open connection using the ATC sim protocol (atc610x)]' \
'--atlas=[Open connection using the Atlas protocol]' \
'--auto-coordination[Enable/disable auto coordination]:Boolean values:(true false 1 0 yes no)' \
'--enable-auto-coordination[Enable auto coordination]' \
'--disable-auto-coordination[Disable auto coordination]' \
'--AV400=[Emit the Garmin AV400 protocol]' \
'--AV400Sim=[Emit the set of AV400 strings]' \
'--AV400WSimA=[Open connection for "A" channel using Garmin WAAS GPS protocol]' \
'--AV400WSimB=[Open connection for "B" channel using Garmin WAAS GPS protocol]' \
'--bpp=[Specify the bits per pixel]:Bits per pixel:(16 24 32)' \
'--browser-app=[Specify path to your web browser]:Directories:_directories' \
'--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-fastest[Enable fastest 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]' \
'--callsign=[Assign a unique name to a player]' \
'--aspect-ratio-multiplier=[Specify a multiplier for the aspect ratio]' \
'--fpe[Enable/Disable aborting on encountering a floating point exception]:Boolean values:(true false 1 0 yes no)' \
'--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)]' \
'--view-offset=[Specify the default forward view direction as an offset from straight ahead]' \
'--aircraft=[Select an aircraft profile]:Aircraft:->aircraft' \
'--min-status=[Allows you to define a minimum status level for all listed aircraft]:Minimum status level:(alpha beta early-production production)' \
'--fdm=[Select the core flight dynamics model]:Core flight dynamics model:(jsb larcsim yasim magic balloon ada external)' \
'--aero=[Select aircraft aerodynamics model to load]' \
'--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]' \
'--glideslope=[Specify flight path angle (in degrees)]' \
'--graphics-preset=[Specify a graphic preset]:Graphic presets:(minimal-quality low-quality medium-quality high-quality ultra-quality)' \
'--gui[Enable/disable GUI (disabling GUI enables headless mode)]:Boolean values:(true false 1 0 yes no)' \
'--enable-gui[Enable GUI]' \
'--disable-gui[Disable GUI (disabling GUI enables headless mode)]' \
'--heading=[Specify heading (yaw) angle (Psi)]' \
'--roll=[Specify roll angle (Phi)]' \
'--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]' \
'--vBody=[Specify velocity along the body Y axis]' \
'--wBody=[Specify velocity along the body Z axis]' \
'--vc=[Specify initial airspeed (in knots)]' \
'--mach=[Specify initial mach number]' \
'--glideslope=[Specify flight path angle (in degrees)]' \
'--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:[]'
'--vNorth=[Specify velocity along a South-North axis]' \
'--vEast=[Specify velocity along a West-East axis]' \
'--vDown=[Specify velocity along a vertical axis]'
)
@ -272,9 +383,6 @@ case $state in
_fgfs_ai_scenario && return 0
;;
language)
;;
aircraft|vehicle)
_fgfs_aircraft && return 0
;;