From 75f436542cf58cc54817d095788b24ea1101d95f Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Sun, 17 Dec 2017 21:06:07 +0000 Subject: zsh: complete targets --- data/shell-completions/zsh/_meson | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'data/shell-completions') diff --git a/data/shell-completions/zsh/_meson b/data/shell-completions/zsh/_meson index 481d04cc5..b48b0f8b0 100644 --- a/data/shell-completions/zsh/_meson +++ b/data/shell-completions/zsh/_meson @@ -49,8 +49,22 @@ local -a meson_commands=( # TODO: implement build option completion (( $+functions[__meson_build_options] )) || __meson_build_options() {} -# TODO: implement target name completion -(( $+functions[__meson_targets] )) || __meson_targets() {} + +(( $+functions[__meson_targets] )) || __meson_targets() { + local tests_json + # TODO: get builddir out of the cmdline and pass it here + if tests_json="$(_call_program meson meson introspect --targets)"; + then + local -a tests_ids=$(_call_program python3 python3 -c 'import sys, json; +for target in json.load(sys.stdin): + print(target["id"]) +' <<< "$tests_json") + _describe -t "tests" "Meson tests IDs" tests_ids + else + _message -r "current working directory is not a build directory" + fi +} + # `meson introspect` currently can provide that information in JSON. # We can: # 1) pipe its output to python3 -m json.tool | grep "$alovelyregex" | cut <...> -- cgit v1.3