Updated to use bashtools
This commit is contained in:
parent
9e14f38735
commit
a195a48803
143
gnscli.sh
143
gnscli.sh
|
@ -12,36 +12,11 @@
|
||||||
VER=1.0
|
VER=1.0
|
||||||
SPINNERFRAMES='|/-\'
|
SPINNERFRAMES='|/-\'
|
||||||
|
|
||||||
function start_spinner() {
|
. ${HOME}/code/bashtools/bashtools.sh
|
||||||
local idx=0 len spid
|
if [[ -z $HAVE_BASHTOOLS ]]; then
|
||||||
|
echo "ERROR: bashtools not installed download from https://git.nethack.net/rob/bashtools" >/dev/stderr
|
||||||
(
|
exit 1
|
||||||
len=${#SPINNERFRAMES}
|
fi
|
||||||
echo -n " "
|
|
||||||
while [ 1 ] ; do
|
|
||||||
echo -en "\b${SPINNERFRAMES:$idx:1}"
|
|
||||||
idx=$((idx + 1))
|
|
||||||
[[ $idx -ge $len ]] && idx=0
|
|
||||||
sleep 0.1
|
|
||||||
done
|
|
||||||
) &
|
|
||||||
spid=$!
|
|
||||||
echo $spid >>"$SPINNERFILE"
|
|
||||||
}
|
|
||||||
|
|
||||||
function stop_spinner() {
|
|
||||||
local f pid
|
|
||||||
|
|
||||||
[[ ! -e "$SPINNERFILE" ]] && return 1
|
|
||||||
|
|
||||||
while read -r pid ; do
|
|
||||||
if [[ $pid = *[[:digit:]]* ]]; then
|
|
||||||
{ kill $pid && wait $pid; } 2>/dev/null
|
|
||||||
echo -en "\b " >/dev/stderr
|
|
||||||
fi
|
|
||||||
done < "$SPINNERFILE"
|
|
||||||
rm -f "$SPINNERFILE"
|
|
||||||
}
|
|
||||||
|
|
||||||
# helper function to turn a directory of scripts into inline
|
# helper function to turn a directory of scripts into inline
|
||||||
# defaults at the end of this script
|
# defaults at the end of this script
|
||||||
|
@ -120,7 +95,7 @@ function initauth() {
|
||||||
if [[ $doscripts -eq 1 ]]; then
|
if [[ $doscripts -eq 1 ]]; then
|
||||||
mkscripts "$SCRIPTDIR"
|
mkscripts "$SCRIPTDIR"
|
||||||
fi
|
fi
|
||||||
cecho -s "$CYAN" "Initialisation of ^b$CONFDIR^p complete."
|
csecho "$CYAN" "Initialisation of ^b$CONFDIR^p complete."
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,7 +318,7 @@ function profile() {
|
||||||
local fname
|
local fname
|
||||||
fname=${FUNCNAME[2]}
|
fname=${FUNCNAME[2]}
|
||||||
[[ -z $fname ]] && fname=${FUNCNAME[1]}
|
[[ -z $fname ]] && fname=${FUNCNAME[1]}
|
||||||
[[ $PROFILING -eq 1 ]] && cecho -s "$YELLOW" "^b${FUNCNAME[1]}(): ^p$*" 1>&2
|
[[ $PROFILING -eq 1 ]] && csecho "$YELLOW" "^b${FUNCNAME[1]}(): ^p$*" 1>&2
|
||||||
}
|
}
|
||||||
|
|
||||||
function harddebug() {
|
function harddebug() {
|
||||||
|
@ -377,80 +352,6 @@ function debug() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# 'str' can contain:
|
|
||||||
# ^b bold
|
|
||||||
# ^i italic
|
|
||||||
# ^p plain
|
|
||||||
#
|
|
||||||
function cecho() { # [-n] [-s] col boldcol "str"
|
|
||||||
local col bcol str minusn="" autobold=0
|
|
||||||
|
|
||||||
while [[ ${1:0:1} == "-" ]]; do
|
|
||||||
if [[ $1 == "-n" ]]; then
|
|
||||||
minusn="-n"
|
|
||||||
fi
|
|
||||||
if [[ $1 == "-s" ]]; then
|
|
||||||
autobold=1
|
|
||||||
fi
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
col="$1"
|
|
||||||
shift
|
|
||||||
if [[ $autobold -eq 1 ]]; then
|
|
||||||
bcol="$col$BOLD"
|
|
||||||
else
|
|
||||||
bcol="$1"
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
str="$*"
|
|
||||||
str=${str//\^b/${bcol}}
|
|
||||||
str=${str//\^p/${PLAIN}${col}}
|
|
||||||
str=${str//\^i/${col}${ITALIC}}
|
|
||||||
|
|
||||||
echo $minusn -e "${col}${str}${PLAIN}" 1>&2
|
|
||||||
}
|
|
||||||
|
|
||||||
function info() {
|
|
||||||
cecho -s "$CYAN" "^i[$*]" 1>&2
|
|
||||||
}
|
|
||||||
|
|
||||||
function error() {
|
|
||||||
[[ $innotify -eq 1 ]] && fail
|
|
||||||
cecho -s "$RED" "^bERROR: ^p$*" 1>&2
|
|
||||||
}
|
|
||||||
|
|
||||||
function notify() {
|
|
||||||
#echo -en "${NOTIFYCOLB}* ${NOTIFYCOL}$*...${PLAIN} " 1>&2
|
|
||||||
cecho -n "$NOTIFYCOL" "$NOTIFYCOLB" "^b* ^p$*... " 1>&2
|
|
||||||
start_spinner &
|
|
||||||
innotify=1
|
|
||||||
}
|
|
||||||
|
|
||||||
function inform() {
|
|
||||||
#echo -e "${INFORMCOLB}* ${INFORMCOL}$*${PLAIN} " 1>&2
|
|
||||||
cecho "$INFORMCOL" "$INFORMCOLB" "^b* ^p$* " 1>&2
|
|
||||||
}
|
|
||||||
|
|
||||||
function ok() {
|
|
||||||
local msg=${*:-ok}
|
|
||||||
stop_spinner
|
|
||||||
[[ $innotify -eq 0 ]] && return 1
|
|
||||||
innotify=0
|
|
||||||
echo -e "$GREEN$msg$PLAIN" 1>&2
|
|
||||||
}
|
|
||||||
|
|
||||||
function fail() {
|
|
||||||
local msg=${*:-failed}
|
|
||||||
stop_spinner
|
|
||||||
[[ $innotify -eq 0 ]] && return 1
|
|
||||||
innotify=0
|
|
||||||
echo -e "$RED$msg$PLAIN" 1>&2
|
|
||||||
}
|
|
||||||
|
|
||||||
function warn() {
|
|
||||||
cecho -s "$YELLOW" "^bWarning: ^p$*" 1>&2
|
|
||||||
}
|
|
||||||
|
|
||||||
function usage() {
|
function usage() {
|
||||||
echo "usage: $0 OPTIONS command"
|
echo "usage: $0 OPTIONS command"
|
||||||
echo
|
echo
|
||||||
|
@ -638,7 +539,7 @@ function loadprojectlist() {
|
||||||
rv=$?
|
rv=$?
|
||||||
if [[ $rv -ne 0 || -z $jqoutput ]]; then
|
if [[ $rv -ne 0 || -z $jqoutput ]]; then
|
||||||
error "$rv Got bad data from initial project list query to API"
|
error "$rv Got bad data from initial project list query to API"
|
||||||
cecho -s "${RED}" "^bErrors:^p"
|
csecho "${RED}" "^bErrors:^p"
|
||||||
echo -en "${RED}"
|
echo -en "${RED}"
|
||||||
cat "${errfile}" | sed -e 's/^/ /'
|
cat "${errfile}" | sed -e 's/^/ /'
|
||||||
echo -en "${PLAIN}"
|
echo -en "${PLAIN}"
|
||||||
|
@ -671,11 +572,11 @@ function loadprojectlist() {
|
||||||
else
|
else
|
||||||
fail
|
fail
|
||||||
error "Could not obtain initial project list from API"
|
error "Could not obtain initial project list from API"
|
||||||
cecho -s "${RED}" "^bOutput:^p"
|
csecho "${RED}" "^bOutput:^p"
|
||||||
echo -en "${RED}"
|
echo -en "${RED}"
|
||||||
echo "${output}" | sed -e 's/^/ /'
|
echo "${output}" | sed -e 's/^/ /'
|
||||||
echo -en "${PLAIN}"
|
echo -en "${PLAIN}"
|
||||||
cecho -s "${RED}" "^bErrors:^p"
|
csecho "${RED}" "^bErrors:^p"
|
||||||
echo -en "${RED}"
|
echo -en "${RED}"
|
||||||
cat "${errfile}" | sed -e 's/^/ /'
|
cat "${errfile}" | sed -e 's/^/ /'
|
||||||
echo -en "${PLAIN}"
|
echo -en "${PLAIN}"
|
||||||
|
@ -860,8 +761,6 @@ function addcmdoption() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function showcmdhelp() {
|
function showcmdhelp() {
|
||||||
local real_cname cname idx text ln x format optname_arr optdesc_arr len
|
local real_cname cname idx text ln x format optname_arr optdesc_arr len
|
||||||
local otheraliases
|
local otheraliases
|
||||||
|
@ -931,7 +830,6 @@ function showcmdhelp() {
|
||||||
echo
|
echo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function getprojidx() { # getprojidx project_name_or_uuid
|
function getprojidx() { # getprojidx project_name_or_uuid
|
||||||
local x
|
local x
|
||||||
for x in ${!proj_name[@]}; do
|
for x in ${!proj_name[@]}; do
|
||||||
|
@ -969,7 +867,6 @@ function getalllocs() {
|
||||||
echo ${loc_name[@]}
|
echo ${loc_name[@]}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function getfield() { # endpoint jqfilter fieldname
|
function getfield() { # endpoint jqfilter fieldname
|
||||||
getdata "$1" list -q -e -R"$3" -r -F -f"$2"
|
getdata "$1" list -q -e -R"$3" -r -F -f"$2"
|
||||||
}
|
}
|
||||||
|
@ -1175,7 +1072,6 @@ function makejson() { # makejson key1:val1^key2:val2^...
|
||||||
printf "%s\n" '}'
|
printf "%s\n" '}'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function action_needs_curldata() { # actionname
|
function action_needs_curldata() { # actionname
|
||||||
local a
|
local a
|
||||||
a="$1"
|
a="$1"
|
||||||
|
@ -1538,7 +1434,6 @@ function getbasefilter() { # epidx [regexp_filter]
|
||||||
echo "${bf}"
|
echo "${bf}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function profile_start() {
|
function profile_start() {
|
||||||
profile "start profiling"
|
profile "start profiling"
|
||||||
prof_start=$(($($GDATE +%s%N)/1000))
|
prof_start=$(($($GDATE +%s%N)/1000))
|
||||||
|
@ -1862,7 +1757,7 @@ debug -f "--> extrainfo = $extrainfo"
|
||||||
if [[ $errs -gt 0 ]]; then
|
if [[ $errs -gt 0 ]]; then
|
||||||
local fullres_bad
|
local fullres_bad
|
||||||
fail
|
fail
|
||||||
cecho -s "${RED}" "$errs x '^b$actionname^p' actions failed:"
|
csecho "${RED}" "$errs x '^b$actionname^p' actions failed:"
|
||||||
echo -e "${RED}"
|
echo -e "${RED}"
|
||||||
echo "$allbadresults" | sed -e 's/^/ /'
|
echo "$allbadresults" | sed -e 's/^/ /'
|
||||||
echo -e "${PLAIN}"
|
echo -e "${PLAIN}"
|
||||||
|
@ -1872,7 +1767,7 @@ debug -f "--> extrainfo = $extrainfo"
|
||||||
if [[ $good -ge 1 ]]; then
|
if [[ $good -ge 1 ]]; then
|
||||||
local fullres
|
local fullres
|
||||||
ok
|
ok
|
||||||
cecho -s "${GREEN}" "$good x '^b$actionname^p' actions submitted successfully."
|
csecho "${GREEN}" "$good x '^b$actionname^p' actions submitted successfully."
|
||||||
|
|
||||||
# More than just a heading?
|
# More than just a heading?
|
||||||
if [[ $(echo -e "$allgoodresults" | wc -l | bc) -gt 1 ]]; then
|
if [[ $(echo -e "$allgoodresults" | wc -l | bc) -gt 1 ]]; then
|
||||||
|
@ -2075,7 +1970,7 @@ debug all pids finished
|
||||||
|
|
||||||
rescount=$(printf %d $(echo -n "$all" | wc -c))
|
rescount=$(printf %d $(echo -n "$all" | wc -c))
|
||||||
if [[ $rescount -eq 0 ]]; then
|
if [[ $rescount -eq 0 ]]; then
|
||||||
cecho -s "$YELLOW" " ^b(no results)"
|
csecho "$YELLOW" " ^b(no results)"
|
||||||
echo
|
echo
|
||||||
rm -f $TMPDIR/get.*
|
rm -f $TMPDIR/get.*
|
||||||
rm -f $TMPDIR/err.*
|
rm -f $TMPDIR/err.*
|
||||||
|
@ -2527,8 +2422,6 @@ function convert_link_ids() { # endpoint str
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function addline() { # varname "string_to_append"
|
function addline() { # varname "string_to_append"
|
||||||
local newstr varname extra
|
local newstr varname extra
|
||||||
varname="$1"
|
varname="$1"
|
||||||
|
@ -2540,8 +2433,6 @@ function addline() { # varname "string_to_append"
|
||||||
eval "$varname=\"${newstr}\""
|
eval "$varname=\"${newstr}\""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function processcmd() {
|
function processcmd() {
|
||||||
local cmd arg newarg rv newlocs x err admin idx opts pipe gotargs
|
local cmd arg newarg rv newlocs x err admin idx opts pipe gotargs
|
||||||
local whattolist actionname="" actionfilter=""
|
local whattolist actionname="" actionfilter=""
|
||||||
|
@ -2760,11 +2651,11 @@ debug "post replacedargs is [$replacedargs]"
|
||||||
echo -e "$PLAIN"
|
echo -e "$PLAIN"
|
||||||
res=$(uuid_to_name ${arg})
|
res=$(uuid_to_name ${arg})
|
||||||
if [[ $? -eq 0 ]]; then
|
if [[ $? -eq 0 ]]; then
|
||||||
cecho -s "${CYAN}" " UUID ^b${arg}^p -> ${res}"
|
csecho "${CYAN}" " UUID ^b${arg}^p -> ${res}"
|
||||||
else
|
else
|
||||||
res=$(name_to_uuid ${arg})
|
res=$(name_to_uuid ${arg})
|
||||||
if [[ $? -eq 0 ]]; then
|
if [[ $? -eq 0 ]]; then
|
||||||
cecho -s "${CYAN}" " UUID ${res} -> ^b${arg}^p"
|
csecho "${CYAN}" " UUID ${res} -> ^b${arg}^p"
|
||||||
else
|
else
|
||||||
error "No cache results found for ${arg}"
|
error "No cache results found for ${arg}"
|
||||||
fi
|
fi
|
||||||
|
@ -3366,12 +3257,13 @@ addendpoint projects projects project project_id name
|
||||||
addepalias projects p
|
addepalias projects p
|
||||||
addeptitles projects "Project " "UUID" "Status "
|
addeptitles projects "Project " "UUID" "Status "
|
||||||
addepfields projects ".name" ".project_id" ".status"
|
addepfields projects ".name" ".project_id" ".status"
|
||||||
addepactions projects open close add del dupe
|
addepactions projects open close add del dupe mv
|
||||||
addepactionusage projects "add" "new_projectname"
|
addepactionusage projects "add" "new_projectname"
|
||||||
addepactionusage projects "del" "existing_projectname"
|
addepactionusage projects "del" "existing_projectname"
|
||||||
addepactionusage projects "open" "[existing_projectname]"
|
addepactionusage projects "open" "[existing_projectname]"
|
||||||
addepactionusage projects "close" "[existing_projectname]"
|
addepactionusage projects "close" "[existing_projectname]"
|
||||||
addepactionusage projects "dupe" "existing_projectname new_projectname"
|
addepactionusage projects "dupe" "existing_projectname new_projectname"
|
||||||
|
addepactionusage projects "mv" "old_project_name new_project_name"
|
||||||
|
|
||||||
addendpoint nodes projects/_CURPROJECT_/nodes node node_id name
|
addendpoint nodes projects/_CURPROJECT_/nodes node node_id name
|
||||||
addepalias nodes n
|
addepalias nodes n
|
||||||
|
@ -3451,6 +3343,7 @@ addcmdalias "delink" "action link del" ""
|
||||||
addcmdalias "padd" "action project add" ""
|
addcmdalias "padd" "action project add" ""
|
||||||
addcmdalias "pdel" "action project del" ""
|
addcmdalias "pdel" "action project del" ""
|
||||||
addcmdalias "pdupe" "action project dupe" "_CURPROJECT_"
|
addcmdalias "pdupe" "action project dupe" "_CURPROJECT_"
|
||||||
|
addcmdalias "pmv" "action project mv" ""
|
||||||
|
|
||||||
addcmd help "List regular commands" 0 "?" "h"
|
addcmd help "List regular commands" 0 "?" "h"
|
||||||
addcmd exit "Exit from gnscli" 0 quit
|
addcmd exit "Exit from gnscli" 0 quit
|
||||||
|
|
Loading…
Reference in New Issue