-
Alessio Igor Bogani authored97719baf
curl-inau 3.35 KiB
function ispresent() {
for item in $2
do
if [ $item = $1 ]; then
return 0
fi
done
return 1
}
function _curl-inau()
{
local h options dirname basename
h=inau.elettra.eu
dirname=$(dirname "${COMP_WORDS[COMP_CWORD]}")
basename=$(basename "${COMP_WORDS[COMP_CWORD]}")
# echo -e "\n$dirname#$basename"
case "$dirname#$basename" in
//$h/v2/cs/facilities/*/hosts/*/files#*)
local facility=$(basename $(dirname $(dirname $(dirname $dirname))))
local host=$(basename $(dirname $dirname))
local files="$(curl -s https://$h/v2/cs/facilities/$facility/hosts/$host/files | tail -n +3 | cut -d" " -f1)"
options="$(for elem in $files; do echo //$h/v2/cs/facilities/$facility/hosts/$host/files/$elem; done)"
;;
//$h/v2/cs/facilities/*/hosts/*#files)
local facility=$(basename $(dirname $(dirname $dirname)))
local host=$(basename $dirname)
local files="$(curl -s https://$h/v2/cs/facilities/$facility/hosts/$host/files | tail -n +3 | cut -d" " -f1)"
options="$(for elem in $files; do echo //$h/v2/cs/facilities/$facility/hosts/$host/files/$elem; done)"
;;
//$h/v2/cs/facilities/*/hosts/*#*)
local facility=$(basename $(dirname $(dirname $dirname)))
local host=$(basename $dirname)
options="//$h/v2/cs/facilities/$facility/hosts/$host/files
//$h/v2/cs/facilities/$facility/hosts/$host/installations"
;;
//$h/v2/cs/facilities/*/hosts#*)
local facility=$(basename $(dirname $dirname))
local hosts="$(curl -s https://$h/v2/cs/facilities/$facility/hosts | tail -n +3 | cut -d" " -f1)"
ispresent $basename "$hosts"
if [ $? -eq 0 ]; then
options="//$h/v2/cs/facilities/$facility/hosts/$basename/installations
//$h/v2/cs/facilities/$facility/hosts/$basename/files"
else
options="//$h/v2/cs/facilities/$facility/hosts/installations
$(for elem in $hosts; do echo //$h/v2/cs/facilities/$facility/hosts/$elem; done)"
fi;;
//$h/v2/cs/facilities/*#hosts)
local facility=$(basename $dirname)
local hosts="$(curl -s https://$h/v2/cs/facilities/$facility/hosts | tail -n +3 | cut -d" " -f1)"
options="//$h/v2/cs/facilities/$facility/hosts/installations
$(for elem in $hosts; do echo //$h/v2/cs/facilities/$facility/hosts/$elem; done)"
;;
//$h/v2/cs/facilities/*#*)
local facility=$(basename $dirname)
options="//$h/v2/cs/facilities/$facility/hosts
//$h/v2/cs/facilities/$facility/installations"
;;
//$h/v2/cs/facilities#*)
local facilities="$(curl -s https://$h/v2/cs/facilities | tail -n +3)"
ispresent $basename "$facilities"
if [ $? -eq 0 ]; then
options="//$h/v2/cs/facilities/$basename/hosts/
//$h/v2/cs/facilities/$basename/installations"
else
options="//$h/v2/cs/facilities/installations
$(for elem in $facilities; do echo //$h/v2/cs/facilities/$elem/; done)"
fi
;;
//$h/v2/cs#facilities)
local facilities="$(curl -s https://$h/v2/cs/facilities | tail -n +3)"
options="//$h/v2/cs/facilities/installations
$(for elem in $facilities; do echo //$h/v2/cs/facilities/$elem/; done)"
;;
//$h/v2#cs | //$h/v2/cs#*)
local subpaths="$(curl -s https://$h/v2/cs | tail -n +3)"
options="//$h/v2/cs/installations
$(for elem in $subpaths; do echo //$h/v2/cs/$elem/; done)"
;;
/#$h | //$h#* | //$h/v2#*)
options="//$h/v2/cs/"
;;
esac
COMPREPLY=($(compgen -W "${options}" -- "${COMP_WORDS[COMP_CWORD]}"))
compopt -o nospace
}
complete -F _curl-inau curl