mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-04 13:19:51 -05:00
bash-completion: Support CMakePresets in cmake and ctest completion
Co-Authored-By: Craig Scott <craig.scott@crascit.com>
This commit is contained in:
committed by
Craig Scott
parent
050354d268
commit
f7a6e036ad
@@ -96,7 +96,15 @@ _cmake()
|
|||||||
_filedir
|
_filedir
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
--build|--install|--open)
|
--build)
|
||||||
|
# Seed the reply with non-directory arguments that we know are
|
||||||
|
# allowed to follow --build. _filedir will then prepend any valid
|
||||||
|
# directory matches to these.
|
||||||
|
COMPREPLY=( $( compgen -W "--preset --list-presets" -- "$cur" ) )
|
||||||
|
_filedir -d
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
--install|--open)
|
||||||
_filedir -d
|
_filedir -d
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
@@ -149,6 +157,34 @@ _cmake()
|
|||||||
2>/dev/null | grep -v "^cmake version " )' -- "$cur" ) )
|
2>/dev/null | grep -v "^cmake version " )' -- "$cur" ) )
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
|
--list-presets)
|
||||||
|
local IFS=$'\n'
|
||||||
|
local quoted
|
||||||
|
printf -v quoted %q "$cur"
|
||||||
|
|
||||||
|
if [[ ! "${IFS}${COMP_WORDS[*]}${IFS}" =~ "${IFS}--build${IFS}" ]]; then
|
||||||
|
COMPREPLY=( $( compgen -W "configure${IFS}build${IFS}test${IFS}all" -- "$quoted" ) )
|
||||||
|
fi
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
--preset)
|
||||||
|
local IFS=$'\n'
|
||||||
|
local quoted
|
||||||
|
printf -v quoted %q "$cur"
|
||||||
|
|
||||||
|
local build_or_configure="configure"
|
||||||
|
if [[ "${IFS}${COMP_WORDS[*]}${IFS}" =~ "${IFS}--build${IFS}" ]]; then
|
||||||
|
build_or_configure="build"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local presets=$( cmake --list-presets="$build_or_configure" 2>/dev/null |
|
||||||
|
grep -o "^ \".*\"" | sed \
|
||||||
|
-e "s/^ //g" \
|
||||||
|
-e "s/\"//g" \
|
||||||
|
-e 's/ /\\\\ /g' )
|
||||||
|
COMPREPLY=( $( compgen -W "$presets" -- "$quoted" ) )
|
||||||
|
return
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
$split && return
|
$split && return
|
||||||
|
|||||||
@@ -103,6 +103,17 @@ _ctest()
|
|||||||
2>/dev/null | grep -v "^ctest version " )' -- "$cur" ) )
|
2>/dev/null | grep -v "^ctest version " )' -- "$cur" ) )
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
|
--preset)
|
||||||
|
local IFS=$'\n'
|
||||||
|
local quoted
|
||||||
|
printf -v quoted %q "$cur"
|
||||||
|
COMPREPLY=( $( compgen -W '$( ctest --list-presets 2>/dev/null |
|
||||||
|
grep -o "^ \".*\"" | sed \
|
||||||
|
-e "s/^ //g" \
|
||||||
|
-e "s/\"//g" \
|
||||||
|
-e "s/ /\\\\ /g" )' -- "$quoted" ) )
|
||||||
|
return
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [[ "$cur" == -* ]]; then
|
if [[ "$cur" == -* ]]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user