Bash completion: ignore namespace for xmllint parsing
authorJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Mon, 28 May 2018 21:31:48 +0000 (17:31 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 5 Jun 2018 17:03:47 +0000 (13:03 -0400)
xmllint cli does not "easily" support namespace.

One can use the local_name() xpath function and other "trick".
The simplest trick for bash completion is to ignore the namespace
altogether.

Replacing "xmlns" by "ignore" does the job.

Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
extras/lttng-bash_completion

index ef1a71ab348fac0ed468721b91dacd870f40131b..c7482c5450be01613a6aee8b142de7627e85d7ff 100644 (file)
@@ -18,7 +18,7 @@
 # Generates COMPREPLY with the existing session names
 _lttng_complete_sessions() {
        local sessions
-       sessions=$(lttng --mi xml list |  xmllint --xpath "//command/output/sessions/session/name" - 2>/dev/null | sed  -e 's/<name>//g' -e $'s/<\/name>/\\n/g')
+       sessions=$(lttng --mi xml list | sed '2 s/xmlns/ignore/g' | xmllint --xpath "//command/output/sessions/session/name" - 2>/dev/null | sed  -e 's/<name>//g' -e $'s/<\/name>/\\n/g')
        COMPREPLY=( $(compgen -W "${sessions}" -- $cur) )
        return
 }
@@ -27,7 +27,7 @@ _lttng_complete_sessions() {
 # Generates COMPREPLY with the available kernel event
 _lttng_complete_kernel_events() {
        local kernel_event
-       kernel_event=$(lttng --mi xml list -k | xmllint --xpath "//command/output/domains/domain[./type = 'KERNEL']/events/event/name" - 2>/dev/null | sed -e "s/<name>//g" -e $"s/<\/name>/\\n/g")
+       kernel_event=$(lttng --mi xml list -k |sed '2 s/xmlns/ignore/g' | xmllint --xpath "//command/output/domains/domain[./type = 'KERNEL']/events/event/name" - 2>/dev/null | sed -e "s/<name>//g" -e $"s/<\/name>/\\n/g")
        COMPREPLY=( $(compgen -W "${kernel_event}" -- $cur) )
        return
 }
@@ -35,7 +35,7 @@ _lttng_complete_kernel_events() {
 # Generates COMPREPLY with the available ust event
 _lttng_complete_ust_events() {
        local ust_event
-       ust_event=$(lttng --mi xml list -u | xmllint --xpath "//command/output/domains/domain[./type = 'UST']/pids/pid/events/event/name" - 2>/dev/null | sed -e "s/<name>//g" -e $"s/<\/name>/\\n/g")
+       ust_event=$(lttng --mi xml list -u | sed '2 s/xmlns/ignore/g' | xmllint --xpath "//command/output/domains/domain[./type = 'UST']/pids/pid/events/event/name" - 2>/dev/null | sed -e "s/<name>//g" -e $"s/<\/name>/\\n/g")
        COMPREPLY=( $(compgen -W "${ust_event}" -- $cur) )
        return
 }
@@ -43,7 +43,7 @@ _lttng_complete_ust_events() {
 # Generates COMPREPLY with the available jul event
 _lttng_complete_jul_events() {
        local jul_event
-       jul_event=$(lttng --mi xml list -j | xmllint --xpath "//command/output/domains/domain[./type = 'JUL']/pids/pid/events/event/name" - 2>/dev/null | sed -e "s/<name>//g" -e $"s/<\/name>/\\n/g")
+       jul_event=$(lttng --mi xml list -j | sed '2 s/xmlns/ignore/g' | xmllint --xpath "//command/output/domains/domain[./type = 'JUL']/pids/pid/events/event/name" - 2>/dev/null | sed -e "s/<name>//g" -e $"s/<\/name>/\\n/g")
        COMPREPLY=( $(compgen -W "${jul_event}" -- $cur) )
        return
 }
This page took 0.034213 seconds and 4 git commands to generate.