You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
506 lines
18 KiB
Bash
506 lines
18 KiB
Bash
#
|
|
# Copyright (c) 1991-2024 by the GMT Team (https://www.generic-mapping-tools.org/team.html)
|
|
# See LICENSE.TXT file for copying and redistribution conditions.
|
|
#
|
|
# If you source this file from your .bashrc, bash should be able to
|
|
# tab-complete a command line that uses gmt with all the available
|
|
# commands and options.
|
|
|
|
# check for bash
|
|
[ -z "$BASH_VERSION" ] && return
|
|
|
|
# provide _filedir if not already defined
|
|
if ! type -t _filedir >/dev/null 2>&1 ; then
|
|
_gmt_comp_option="-o filenames"
|
|
_filedir()
|
|
{
|
|
local IFS=$'\n'
|
|
COMPREPLY=( ${COMPREPLY[@]} $( compgen -o plusdirs -f -- "$cur" ) )
|
|
}
|
|
fi
|
|
|
|
_gmt_in_array()
|
|
{
|
|
local hay needle=$1
|
|
shift
|
|
for hay; do
|
|
[[ $hay == $needle ]] && return 0
|
|
done
|
|
return 1
|
|
}
|
|
|
|
_gmt()
|
|
{
|
|
local arg1 cur fileopts modopts opts progs
|
|
COMPREPLY=()
|
|
arg1="${COMP_WORDS[1]}"
|
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
fileopts=()
|
|
|
|
opts=( --help --show-datadir --show-bindir --version )
|
|
|
|
# strip off any leading "gmt" in module names:
|
|
progs=($(gmt --show-modules | sed -e 's/^gmt//g'))
|
|
|
|
# complete first arg
|
|
if [[ ${COMP_CWORD} -eq 1 ]]; then
|
|
COMPREPLY=($(compgen -W '${opts[@]} ${progs[@]}' -- ${cur}))
|
|
return 0
|
|
fi
|
|
|
|
# if first arg is ins progs
|
|
if [[ "${progs[@]}" =~ "${arg1}" ]] && _gmt_in_array "${arg1}" "${progs[@]}"; then
|
|
case ${arg1} in
|
|
backtracker)
|
|
modopts=( -: -A -D -E -F -L -N -Q -S -T -V -W -b -f -g -h -i -o -s )
|
|
fileopts=( -E )
|
|
;;
|
|
blockmean)
|
|
modopts=( -: -C -E -I -R -S -V -W -a -b -f -g -h -i -o -r )
|
|
;;
|
|
blockmedian)
|
|
modopts=( -: -C -E -I -Q -R -T -V -W -a -b -f -g -h -i -o -r )
|
|
;;
|
|
blockmode)
|
|
modopts=( -: -C -D -E -I -Q -R -V -W -a -b -f -g -h -i -o -r )
|
|
;;
|
|
dimfilter)
|
|
modopts=( -: -D -F -G -I -N -Q -R -T -V -f -h )
|
|
fileopts=( -G )
|
|
;;
|
|
filter1d)
|
|
modopts=( -: -D -E -F -I -L -N -Q -S -T -V -a -b -f -g -h -i -o )
|
|
;;
|
|
fitcircle)
|
|
modopts=( -: -L -S -V -a -b -f -g -h -i -o )
|
|
;;
|
|
gmt2kml|2kml)
|
|
modopts=( -: -A -C -D -E -F -G -I -K -L -N -O -Q -R -S -T -V -W -Z -a -b -f -g -h -i )
|
|
fileopts=( -C -D )
|
|
;;
|
|
gmtconnect|connect)
|
|
modopts=( -: -C -D -L -Q -T -V -a -b -f -g -h -i -o -s )
|
|
fileopts=( -L )
|
|
;;
|
|
gmtconvert|convert)
|
|
modopts=( -: -A -D -E -I -L -Q -S -T -V -a -b -f -g -h -i -o -s )
|
|
;;
|
|
gmtdefaults|defaults)
|
|
modopts=( -D -V )
|
|
;;
|
|
gmtflexure|flexure)
|
|
modopts=( -A -C -D -F -S -T -V -W -Z -h )
|
|
;;
|
|
gmtget|get)
|
|
modopts=( -G -L -V \
|
|
$(gmt defaults | awk '/^[^#]/ {printf "%s ", $1}') )
|
|
fileopts=( -G )
|
|
;;
|
|
gmtgravmag3d|gravmag3d)
|
|
modopts=( -: -C -E -F -G -H -I -L -R -S -T -V -Z -f -r )
|
|
fileopts=( -F -G -T )
|
|
;;
|
|
gmtinfo|info)
|
|
modopts=( -: -A -C -D -E -I -S -T -V -b -f -g -h -i -o -r -s )
|
|
;;
|
|
gmtlogo|logo)
|
|
modopts=( -D -F -K -O -P -W -V -X -Y -c -t -x -y )
|
|
;;
|
|
gmtmath|math)
|
|
modopts=( -: -A -C -E -I -L -N -Q -S -T -V -b -f -g -h -i -o -s \
|
|
$(gmt gmtmath 2>&1 | awk '/^\t[A-Z0-9]*[\t ]*[ ][1-3=] / {printf "%s ", $1}') )
|
|
fileopts=( -T )
|
|
;;
|
|
gmtselect|select)
|
|
modopts=( -: -A -C -D -E -F -I -J -L -N -R -V -Z -a -b -f -g -h -i -o -s )
|
|
fileopts=( -C -F -L )
|
|
;;
|
|
gmtset|set)
|
|
modopts=( -B -C -D -G -J -R -V -X -Y -c -p \
|
|
$(gmt defaults | awk '/^[^#]/ {printf "%s= ", $1}') )
|
|
fileopts=( -G )
|
|
;;
|
|
gmtsimplify|simplify)
|
|
modopts=( -: -G -T -V -b -f -g -h -i -o )
|
|
;;
|
|
gmtspatial|spatial)
|
|
modopts=( -: -A -C -D -E -I -L -Q -R -S -T -V -a -b -f -g -h -i -o -s )
|
|
fileopts=( -D -N )
|
|
;;
|
|
gmtsplit)
|
|
modopts=( -: -A -C -D -F -N -Q -S -V -Z -b -f -g -h -i -s )
|
|
;;
|
|
gmtvector|vector)
|
|
modopts=( -: -A -C -E -N -S -T -V -b -f -g -h -i -o -s )
|
|
;;
|
|
gmtwhich|which)
|
|
modopts=( -A -C -D -V )
|
|
;;
|
|
gravfft)
|
|
modopts=( -C -D -E -F -G -I -N -Q -T -V -Z -f )
|
|
fileopts=( -G )
|
|
;;
|
|
grd2cpt)
|
|
modopts=( -A -C -D -E -F -G -I -L -M -N -Q -R -S -T -V -Z -h )
|
|
fileopts=( -C )
|
|
;;
|
|
grd2xyz)
|
|
modopts=( -: -C -N -R -V -W -Z -b -f -h -o -s )
|
|
;;
|
|
grdblend)
|
|
modopts=( -: -C -G -I -N -Q -R -V -W -Z -f -r )
|
|
fileopts=( -G )
|
|
;;
|
|
grdclip)
|
|
modopts=( -G -R -S -V )
|
|
fileopts=( -G )
|
|
;;
|
|
grdcontour)
|
|
modopts=( -A -B -C -D -F -G -J -K -L -O -P -Q -R -S -T -U -V -W -X -Y -Z -b -c -f -h -p -t -x -y )
|
|
fileopts=( -C )
|
|
;;
|
|
grdcut)
|
|
modopts=( -G -N -R -S -V -Z -f )
|
|
fileopts=( -G )
|
|
;;
|
|
grdedit)
|
|
modopts=( -: -A -D -E -N -R -S -T -V -b -f -h -i )
|
|
;;
|
|
grdfft)
|
|
modopts=( -A -C -D -E -F -G -I -N -S -V -f -h )
|
|
fileopts=( -G )
|
|
;;
|
|
grdfilter)
|
|
modopts=( -D -F -G -I -N -R -T -V -f )
|
|
fileopts=( -G )
|
|
;;
|
|
grdflexure)
|
|
modopts=( -A -C -D -E -F -G -L -M -N -S -T -V -W -Z -f )
|
|
;;
|
|
grdgradient)
|
|
modopts=( -A -D -E -G -N -R -S -V -f )
|
|
fileopts=( -G -S )
|
|
;;
|
|
grdgravmag3d)
|
|
modopts=( -: -C -D -F -G -I -L -Q -R -V -Z -f )
|
|
fileopts=( -F -G )
|
|
;;
|
|
grdhisteq)
|
|
modopts=( -C -D -G -N -Q -R -V -h )
|
|
fileopts=( -D -G )
|
|
;;
|
|
grdimage)
|
|
modopts=( -A -B -C -D -E -G -I -J -K -M -N -O -P -Q -R -T -U -V -X -Y -c -f -p -t -x -y )
|
|
fileopts=( -A -C -G -I )
|
|
;;
|
|
grdinfo)
|
|
modopts=( -C -F -I -L -M -R -T -V -f -h )
|
|
;;
|
|
grdlandmask)
|
|
modopts=( -A -D -E -G -I -N -R -V -r )
|
|
fileopts=( -G )
|
|
;;
|
|
grdmask)
|
|
modopts=( -: -A -G -I -N -R -S -V -a -b -f -g -h -i -r -s )
|
|
fileopts=( -G )
|
|
;;
|
|
grdmath)
|
|
modopts=( -: -I -M -N -R -V -b -f -g -h -i -r -s \
|
|
$(gmt grdmath 2>&1 | awk '/^\t[A-Z0-9]*[\t ]*[ ][1-3=] / {printf "%s ", $1}') )
|
|
;;
|
|
grdpaste)
|
|
modopts=( -G -V -f )
|
|
fileopts=( -G )
|
|
;;
|
|
grdpmodeler)
|
|
modopts=( -: -E -F -G -I -R -S -T -V -b -h -i -r )
|
|
fileopts=( -E -F -G )
|
|
;;
|
|
grdproject)
|
|
modopts=( -A -C -D -E -G -I -J -M -R -V -r )
|
|
fileopts=( -G )
|
|
;;
|
|
grdredpol)
|
|
modopts=( -C -E -F -G -M -N -R -T -V -W -Z )
|
|
fileopts=( -E -G -Z )
|
|
;;
|
|
grdconvert)
|
|
modopts=( -N -R -V -f )
|
|
;;
|
|
grdrotater)
|
|
modopts=( -: -D -E -F -G -N -R -S -T -V -b -f -g -h -i -o )
|
|
fileopts=( -E -F -G )
|
|
;;
|
|
grdsample)
|
|
modopts=( -G -I -R -T -V -f -r )
|
|
fileopts=( -G )
|
|
;;
|
|
grdseamount)
|
|
modopts=( -: -A -C -E -G -I -L -N -R -S -T -V -Z -b -f -h -i -r )
|
|
fileopts=( -G )
|
|
;;
|
|
grdspotter)
|
|
modopts=( -: -A -D -E -G -I -L -M -N -Q -R -S -T -V -W -Z -h -r -u )
|
|
fileopts=( -A -D -E -L -P )
|
|
;;
|
|
grdtrack)
|
|
modopts=( -: -A -C -D -E -G -N -R -S -T -V -Z -a -b -f -g -h -i -o -s )
|
|
fileopts=( -D -G )
|
|
;;
|
|
grdtrend)
|
|
modopts=( -D -N -R -T -V -W )
|
|
;;
|
|
grdvector)
|
|
modopts=( -A -B -C -G -I -J -K -N -O -P -Q -R -S -T -U -V -W -X -Y -Z -c -f -p -t -x -y )
|
|
fileopts=( -C )
|
|
;;
|
|
grdview)
|
|
modopts=( -B -C -G -I -J -K -N -O -P -Q -R -S -T -U -V -W -X -Y -c -f -p -t -x -y )
|
|
fileopts=( -C -G -I -N )
|
|
;;
|
|
grdvolume)
|
|
modopts=( -C -L -R -S -T -V -Z -f -h -o )
|
|
;;
|
|
greenspline)
|
|
modopts=( -: -A -C -D -G -I -L -N -Q -R -S -T -V -W -b -f -g -h -i -o -r -s )
|
|
fileopts=( -A -C -G -N -T )
|
|
;;
|
|
gshhg)
|
|
modopts=( -: -A -G -I -L -N -Q -V -b -o )
|
|
;;
|
|
hotspotter)
|
|
modopts=( -: -D -E -G -I -N -R -S -T -V -b -g -h -i -r -s )
|
|
fileopts=( -E -G )
|
|
;;
|
|
img2grd)
|
|
modopts=( -C -D -E -G -I -M -N -R -S -T -V -W )
|
|
fileopts=( -G )
|
|
;;
|
|
kml2gmt)
|
|
modopts=( -: -V -Z -b -h )
|
|
;;
|
|
makecpt)
|
|
modopts=( -A -C -D -F -G -I -M -N -Q -T -V -Z -h )
|
|
;;
|
|
mapproject)
|
|
modopts=( -: -A -C -D -E -F -G -I -J -L -N -Q -R -S -T -V -b -f -g -h -i -o -s )
|
|
;;
|
|
mgd77convert)
|
|
modopts=( -C -D -F -L -T -V )
|
|
;;
|
|
mgd77info)
|
|
modopts=( -C -E -I -L -M -V )
|
|
;;
|
|
mgd77list)
|
|
modopts=( -: -A -C -D -E -F -G -I -L -N -Q -R -S -T -V -W -Z -b -h )
|
|
;;
|
|
mgd77magref)
|
|
modopts=( -: -A -C -D -E -F -G -L -S -V -b -h )
|
|
fileopts=( -C -D -E )
|
|
;;
|
|
mgd77manage)
|
|
modopts=( -A -C -D -E -F -I -N -R -V -b )
|
|
;;
|
|
mgd77path)
|
|
modopts=( -D -I -V )
|
|
;;
|
|
mgd77sniffer)
|
|
modopts=( -A -C -D -G -H -I -K -L -N -R -S -T -V -W -b )
|
|
fileopts=( -G -L )
|
|
;;
|
|
mgd77track)
|
|
modopts=( -A -B -C -D -F -G -I -J -K -L -N -O -P -R -S -T -U -V -W -X -Y -c -p -t -x -y )
|
|
;;
|
|
nearneighbor)
|
|
modopts=( -: -E -G -I -N -R -S -V -W -b -f -h -i -r -s )
|
|
fileopts=( -G )
|
|
;;
|
|
originator)
|
|
modopts=( -: -D -E -F -H -L -N -Q -S -T -V -W -Z -b -h -i -s )
|
|
fileopts=( -E -F )
|
|
;;
|
|
project)
|
|
modopts=( -: -A -C -E -F -G -L -N -Q -S -T -V -W -b -f -g -h -i -s )
|
|
;;
|
|
psconvert)
|
|
modopts=( -A -C -D -E -F -G -L -N -P -Q -S -TE -TF -TG -Tb -Te -Tf -Tg -Tj -Tm -Tt -V -W )
|
|
fileopts=( -D -G -L )
|
|
;;
|
|
psbasemap)
|
|
modopts=( -B -D -J -K -L -O -P -R -T -U -V -X -Y -c -f -p -t -x -y )
|
|
;;
|
|
psclip)
|
|
modopts=( -: -A -B -C -J -K -N -O -P -R -T -U -V -X -Y -b -c -f -g -h -i -p -s -t -x -y )
|
|
;;
|
|
pscoast)
|
|
modopts=( -: -A -B -C -D -F -G -I -J -K -L -M -N -O -P -Q -R -S -T -U -V -W -X -Y -b -c -p -t -x -y )
|
|
;;
|
|
pscontour)
|
|
modopts=( -: -A -B -C -D -G -I -J -K -L -N -O -P -Q -R -S -T -U -V -W -X -Y -b -c -h -i -p -s -t -x -y )
|
|
fileopts=( -C -Q )
|
|
;;
|
|
pscoupe)
|
|
modopts=( -: -A -B -E -F -G -H -J -K -L -M -N -O -P -R -S -T -U -V -W -X -Y -Z -c -h -i -x -y )
|
|
fileopts=( -Z )
|
|
;;
|
|
pshistogram)
|
|
modopts=( -5 -A -B -C -D -F -G -I -J -K -L -N -O -P -Q -R -S -U -V -W -X -Y -Z -b -c -f -h -i -p -s -t -x -y )
|
|
fileopts=( -C )
|
|
;;
|
|
psimage)
|
|
modopts=( -C -E -F -G -I -J -K -M -N -O -P -R -U -V -W -X -Y -c -p -t -x -y )
|
|
;;
|
|
pslegend)
|
|
modopts=( -B -C -D -F -J -K -L -O -P -R -U -V -X -Y -c -p -t )
|
|
;;
|
|
psmask)
|
|
modopts=( -: -B -C -D -G -I -J -K -N -O -P -Q -R -S -T -U -V -X -Y -b -c -h -i -p -r -s -t -x -y )
|
|
fileopts=( -D )
|
|
;;
|
|
psmeca)
|
|
modopts=( -: -B -C -D -E -F -G -H -J -K -L -M -N -O -P -R -S -T -U -V -W -X -Y -Z -c -h -i -x -y -z )
|
|
fileopts=( -Z )
|
|
;;
|
|
pspolar)
|
|
modopts=( -: -A -B -C -D -E -F -G -H -J -K -M -N -O -P -Q -R -S -T -U -V -W -X -Y -c -h -i -s -x -y )
|
|
;;
|
|
psrose)
|
|
modopts=( -: -A -B -C -D -G -I -K -L -M -N -O -P -R -S -T -U -V -W -X -Y -Z -b -c -h -i -p -s -t -x -y )
|
|
fileopts=( -C )
|
|
;;
|
|
psscale)
|
|
modopts=( -A -B -C -D -E -G -I -J -K -L -M -N -O -P -Q -R -S -T -U -V -X -Y -Z -c -p -t -x -y )
|
|
fileopts=( -C -Z )
|
|
;;
|
|
pssegy)
|
|
modopts=( -A -B -C -D -E -F -I -J -K -L -M -N -O -P -Q -R -S -T -U -V -W -X -Y -Z -c -p -t )
|
|
;;
|
|
pssegyz)
|
|
modopts=( -A -B -C -D -E -F -I -J -K -L -M -N -O -P -Q -R -S -T -U -V -W -X -Y -Z -c -p -t )
|
|
fileopts=( -T )
|
|
;;
|
|
pstext)
|
|
modopts=( -: -A -B -C -D -F -G -J -K -L -M -N -O -P -Q -R -T -U -V -W -X -Y -Z -a -c -f -h -p -t -x -y )
|
|
;;
|
|
psvelo)
|
|
modopts=( -: -A -B -G -H -J -K -L -N -O -P -R -S -U -V -W -X -Y -c -h -i -x -y )
|
|
;;
|
|
pswiggle)
|
|
modopts=( -: -A -B -C -G -I -J -K -O -P -R -S -T -U -V -W -X -Y -Z -b -c -f -g -h -i -p -s -t -x -y )
|
|
;;
|
|
psxy)
|
|
modopts=( -: -A -B -C -D -E -G -I -J -K -L -N -O -P -R -S -T -U -V -W -X -Y -a -b -c -f -g -h -i -p -s -t )
|
|
fileopts=( -C )
|
|
;;
|
|
psxyz)
|
|
modopts=( -: -B -C -D -G -I -J -K -L -N -O -P -Q -R -S -U -V -W -X -Y -a -b -c -f -g -h -i -p -s -t -x -y )
|
|
fileopts=( -C )
|
|
;;
|
|
rotconverter)
|
|
modopts=( -: -A -D -E -F -G -N -S -T -V -W -h )
|
|
;;
|
|
sample1d)
|
|
modopts=( -A -F -I -N -S -T -V -b -f -g -h -i -o -s )
|
|
fileopts=( -N )
|
|
;;
|
|
segy2grd)
|
|
modopts=( -A -D -G -I -L -M -N -Q -R -S -V -r )
|
|
fileopts=( -G -S )
|
|
;;
|
|
spectrum1d)
|
|
modopts=( -C -D -L -N -S -V -W -b -f -g -h -i -s )
|
|
;;
|
|
sph2grd)
|
|
modopts=( -D -E -F -G -I -N -Q -R -V -b -h -i -r -s )
|
|
fileopts=( -G )
|
|
;;
|
|
sphdistance)
|
|
modopts=( -: -C -E -G -I -L -N -Q -R -V -b -h -i -r -s )
|
|
fileopts=( -G )
|
|
;;
|
|
sphinterpolate)
|
|
modopts=( -: -G -I -Q -R -T -V -Z -b -h -i -r -s )
|
|
fileopts=( -G )
|
|
;;
|
|
sphtriangulate)
|
|
modopts=( -: -A -C -D -L -N -Q -R -T -V -b -h -i -s )
|
|
fileopts=( -N )
|
|
;;
|
|
surface)
|
|
modopts=( -: -A -C -D -G -I -L -N -Q -R -S -T -V -Z -a -b -f -h -i -r -s )
|
|
fileopts=( -G )
|
|
;;
|
|
trend1d)
|
|
modopts=( -: -C -F -I -N -V -W -b -f -h -i -s )
|
|
fileopts=( -N )
|
|
;;
|
|
trend2d)
|
|
modopts=( -: -C -F -I -N -V -W -b -f -h -i -s )
|
|
;;
|
|
triangulate)
|
|
modopts=( -: -D -E -G -I -J -M -N -Q -R -S -V -Z -b -f -h -i -r -s )
|
|
fileopts=( -G )
|
|
;;
|
|
x2sys_binlist)
|
|
modopts=( -D -E -T -V )
|
|
;;
|
|
x2sys_cross)
|
|
modopts=( -A -C -I -J -Q -R -S -T -V -W -Z -b )
|
|
;;
|
|
x2sys_datalist)
|
|
modopts=( -A -E -F -I -L -R -S -T -V -b )
|
|
;;
|
|
x2sys_get)
|
|
modopts=( -C -D -F -G -L -N -R -T -V )
|
|
;;
|
|
x2sys_init)
|
|
modopts=( -C -D -E -F -G -I -N -R -V -W -m )
|
|
fileopts=( -D )
|
|
;;
|
|
x2sys_list)
|
|
modopts=( -A -C -E -F -I -L -N -Q -R -S -T -V -W -m )
|
|
;;
|
|
x2sys_merge)
|
|
modopts=( -A -M -V )
|
|
;;
|
|
x2sys_put)
|
|
modopts=( -D -F -T -V )
|
|
;;
|
|
x2sys_report)
|
|
modopts=( -A -C -I -L -N -Q -R -S -T -V )
|
|
;;
|
|
x2sys_solve)
|
|
modopts=( -C -E -T -V -W -b )
|
|
;;
|
|
xyz2grd)
|
|
modopts=( -: -A -D -G -I -N -R -S -V -Z -b -f -h -i -r -s )
|
|
fileopts=( -G -S )
|
|
;;
|
|
*)
|
|
modopts=( )
|
|
;;
|
|
esac
|
|
|
|
# expand files and directories after options contained in ${fileopts}
|
|
fileopts=( "${fileopts[@]}" -R )
|
|
if [[ "${fileopts[@]}" =~ "${cur:0:2}" ]] && _gmt_in_array "${cur:0:2}" "${fileopts[@]}"; then
|
|
local cnt opt
|
|
opt=${cur:0:2}
|
|
cur="${cur:2}"
|
|
_filedir
|
|
cnt=${#COMPREPLY[@]}
|
|
for ((i=0;i<cnt;i++)); do
|
|
COMPREPLY[i]="${opt}${COMPREPLY[i]}"
|
|
done
|
|
return 0
|
|
fi
|
|
|
|
COMPREPLY=($(compgen -W '-? -^ ${modopts[@]}' -- ${cur}))
|
|
_filedir
|
|
|
|
fi
|
|
} &&
|
|
complete ${_gmt_comp_option} -o nospace -F _gmt gmt
|
|
|
|
# ex: ts=4 sw=4 et filetype=sh
|