Skip to content

Instantly share code, notes, and snippets.

@albertogalan
Created Jul 18, 2020
Embed
What would you like to do?
function jq() {
if [ -f $1 ]; then
FILE=$1; shift
# Move FILE at the end as expected by native jq
command jq "$@" "$FILE"
else
command jq "$@"
fi
}
function _jq() {
COMPREPLY=()
local curr prev
curr=$2
prev=$3
#set -x
case $COMP_CWORD in
1)
COMPREPLY=( $(compgen -f -- $curr) )
;;
2)
keys=$(command jq -c 'paths | map(.|tostring)|join(".")' $prev | tr -d '"' | sed 's=^=\.=')
COMPREPLY=( $(compgen -W "$keys" -- $curr ) )
;;
esac
}
complete -F _jq jq
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment