Any projects which want to use Hush code from now on will need to be licensed as GPLv3 or we will send the lawyers: https://www.softwarefreedom.org/ Notably, Komodo (KMD) is licensed as GPLv2 and is no longer compatible to receive code changes, without causing legal issues. MIT projects, such as Zcash, also cannot pull in changes from the Hush Full Node without permission from The Hush Developers, which may in some circumstances grant an MIT license on a case-by-case basis.
162 lines
4.9 KiB
Bash
162 lines
4.9 KiB
Bash
# bash programmable completion for hush-cli(1)
|
|
# Copyright (c) 2012-2016 The Bitcoin Core developers
|
|
# Copyright (c) 2018 The Hush developers
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
|
|
|
|
# call $hush-cli for RPC
|
|
_hush_rpc() {
|
|
# determine already specified args necessary for RPC
|
|
local rpcargs=()
|
|
for i in ${COMP_LINE}; do
|
|
case "$i" in
|
|
-conf=*|-datadir=*|-regtest|-rpc*|-testnet)
|
|
rpcargs=( "${rpcargs[@]}" "$i" )
|
|
;;
|
|
esac
|
|
done
|
|
$hush_cli "${rpcargs[@]}" "$@"
|
|
}
|
|
|
|
# Add wallet accounts to COMPREPLY
|
|
_hush_accounts() {
|
|
local accounts
|
|
# Accounts are deprecated in hush
|
|
#accounts=$(_hush_rpc listaccounts | awk -F '"' '{ print $2 }')
|
|
accounts="\\\"\\\""
|
|
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$accounts" -- "$cur" ) )
|
|
}
|
|
|
|
_hush_cli() {
|
|
local cur prev words=() cword
|
|
local hush_cli
|
|
|
|
# save and use original argument to invoke hush-cli for -help, help and RPC
|
|
# as hush-cli might not be in $PATH
|
|
hush_cli="$1"
|
|
|
|
COMPREPLY=()
|
|
_get_comp_words_by_ref -n = cur prev words cword
|
|
|
|
if ((cword > 5)); then
|
|
case ${words[cword-5]} in
|
|
sendtoaddress)
|
|
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
if ((cword > 4)); then
|
|
case ${words[cword-4]} in
|
|
importaddress|listtransactions|setban)
|
|
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
signrawtransaction)
|
|
COMPREPLY=( $( compgen -W "ALL NONE SINGLE ALL|ANYONECANPAY NONE|ANYONECANPAY SINGLE|ANYONECANPAY" -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
if ((cword > 3)); then
|
|
case ${words[cword-3]} in
|
|
addmultisigaddress)
|
|
_hush_accounts
|
|
return 0
|
|
;;
|
|
getbalance|gettxout|importaddress|importpubkey|importprivkey|listreceivedbyaccount|listreceivedbyaddress|listsinceblock)
|
|
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
if ((cword > 2)); then
|
|
case ${words[cword-2]} in
|
|
addnode)
|
|
COMPREPLY=( $( compgen -W "add remove onetry" -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
setban)
|
|
COMPREPLY=( $( compgen -W "add remove" -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
fundrawtransaction|getblock|getblockheader|getmempoolancestors|getmempooldescendants|getrawtransaction|gettransaction|listaccounts|listreceivedbyaccount|listreceivedbyaddress|sendrawtransaction)
|
|
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
z_importkey|z_importviewingkey)
|
|
COMPREPLY=( $( compgen -W "yes no whenkeyisnew" -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
move|setaccount)
|
|
_hush_accounts
|
|
return 0
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
case "$prev" in
|
|
backupwallet|dumpwallet|importwallet|z_exportwallet|z_importwallet)
|
|
_filedir
|
|
return 0
|
|
;;
|
|
getaddednodeinfo|getrawmempool|lockunspent|setgenerate)
|
|
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
getaccountaddress|getaddressesbyaccount|getbalance|getnewaddress|getreceivedbyaccount|listtransactions|move|sendfrom|sendmany)
|
|
_hush_accounts
|
|
return 0
|
|
;;
|
|
esac
|
|
|
|
case "$cur" in
|
|
-conf=*)
|
|
cur="${cur#*=}"
|
|
_filedir
|
|
return 0
|
|
;;
|
|
-datadir=*)
|
|
cur="${cur#*=}"
|
|
_filedir -d
|
|
return 0
|
|
;;
|
|
-*=*) # prevent nonsense completions
|
|
return 0
|
|
;;
|
|
*)
|
|
local helpopts commands
|
|
|
|
# only parse -help if senseful
|
|
if [[ -z "$cur" || "$cur" =~ ^- ]]; then
|
|
helpopts=$($hush_cli -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' )
|
|
fi
|
|
|
|
# only parse help if senseful
|
|
if [[ -z "$cur" || "$cur" =~ ^[a-z] ]]; then
|
|
commands=$(_hush_rpc help 2>/dev/null | awk '$1 ~ /^[a-z]/ { print $1; }')
|
|
fi
|
|
|
|
COMPREPLY=( $( compgen -W "$helpopts $commands" -- "$cur" ) )
|
|
|
|
# Prevent space if an argument is desired
|
|
if [[ $COMPREPLY == *= ]]; then
|
|
compopt -o nospace
|
|
fi
|
|
return 0
|
|
;;
|
|
esac
|
|
} &&
|
|
complete -F _hush_cli hush-cli
|
|
|
|
# Local variables:
|
|
# mode: shell-script
|
|
# sh-basic-offset: 4
|
|
# sh-indent-comment: t
|
|
# indent-tabs-mode: nil
|
|
# End:
|
|
# ex: ts=4 sw=4 et filetype=sh
|