mirror of
https://github.com/LCPQ/quantum_package
synced 2024-10-19 22:41:48 +02:00
304 lines
6.8 KiB
Plaintext
304 lines
6.8 KiB
Plaintext
# Configuration of the qp shell command
|
|
|
|
if [[ "$(ps -p $$ -ocomm=)" == "zsh" ]] ; then
|
|
autoload bashcompinit
|
|
bashcompinit
|
|
fi
|
|
|
|
source ${QP_ROOT}/etc/ezfio.rc
|
|
|
|
function _qp_usage()
|
|
{
|
|
echo "
|
|
Usage:
|
|
qp set_file EZFIO_DIRECTORY
|
|
qp unset_file
|
|
|
|
qp has DIRECTORY ITEM
|
|
qp get DIRECTORY ITEM
|
|
qp set DIRECTORY ITEM VALUE : Scalar values
|
|
qp set DIRECTORY ITEM : Array values read from stdin
|
|
|
|
qp run PROGRAM
|
|
qp man PROGRAM
|
|
qp srun PROGRAM
|
|
qp mpirun PROGRAM
|
|
|
|
qp set_frozen_core
|
|
|
|
qp create_ezfio_from_xyz
|
|
qp convert_output_to_ezfio
|
|
qp update
|
|
qp set_mo_class
|
|
qp plugins
|
|
"
|
|
}
|
|
|
|
|
|
function qp()
|
|
{
|
|
case $1 in
|
|
"set_file")
|
|
if [[ -d ${2} ]] ; then
|
|
ezfio "$@"
|
|
else
|
|
>&2 echo "qp: ${2} not found"
|
|
fi;;
|
|
|
|
"has"|"set"|"get"|"unset_file")
|
|
ezfio "$@"
|
|
;;
|
|
|
|
"set_frozen_core")
|
|
shift
|
|
qp_set_frozen_core "$@" ${EZFIO_FILE}
|
|
;;
|
|
|
|
"create_ezfio_from_xyz")
|
|
shift
|
|
# Replace ':' by spaces
|
|
for arg in "$@" ; do
|
|
case $arg in
|
|
*:*)
|
|
_ARGS+=("\"${arg//:/ }\"") ;;
|
|
*)
|
|
_ARGS+=("${arg}") ;;
|
|
esac
|
|
done
|
|
echo qp_create_ezfio_from_xyz "${_ARGS[@]}"
|
|
NAME=$(qp_create_ezfio_from_xyz "${_ARGS[@]}")
|
|
if [[ -d $NAME ]] ; then
|
|
[[ -d $EZFIO_FILE ]] && ezfio unset_file
|
|
ezfio set_file $NAME
|
|
else
|
|
qp_create_ezfio_from_xyz -h | more
|
|
fi
|
|
unset _ARGS
|
|
;;
|
|
|
|
"convert_output_to_ezfio")
|
|
shift
|
|
qp_convert_output_to_ezfio "$@"
|
|
;;
|
|
|
|
"set_mo_class")
|
|
shift
|
|
qp_set_mo_class "$@" -- ${EZFIO_FILE}
|
|
;;
|
|
|
|
"edit")
|
|
shift
|
|
qp_edit "$@" -- ${EZFIO_FILE}
|
|
;;
|
|
|
|
"run")
|
|
shift
|
|
qp_run "$@" -- ${EZFIO_FILE}
|
|
;;
|
|
|
|
"srun")
|
|
shift
|
|
qp_srun "$@" ${EZFIO_FILE}
|
|
;;
|
|
|
|
"mpirun")
|
|
shift
|
|
qp_mpirun "$@" ${EZFIO_FILE}
|
|
;;
|
|
|
|
"man")
|
|
shift
|
|
man $QP_ROOT/man/${1}.?
|
|
;;
|
|
|
|
"prompt")
|
|
shift
|
|
python2 $QP_ROOT/scripts/hello.py
|
|
function _check_ezfio() {
|
|
if [[ -d ${EZFIO_FILE} ]] ; then
|
|
printf "\e[0;32m|${EZFIO_FILE}>\e[m"
|
|
else
|
|
printf "\e[0;31m|${EZFIO_FILE}>\e[m"
|
|
fi
|
|
}
|
|
PS1="\$(_check_ezfio)\n$PS1"
|
|
;;
|
|
|
|
"plugins")
|
|
shift
|
|
qp_plugins $@
|
|
;;
|
|
|
|
"update")
|
|
shift
|
|
qp_update $@
|
|
;;
|
|
|
|
*)
|
|
_qp_usage
|
|
;;
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
function _get_basis_sets () {
|
|
( qp_create_ezfio_from_xyz -b show \
|
|
| tr ' ' ':' \
|
|
| while IFS= read -r LINE ; do
|
|
printf '%s\n' ${LINE}
|
|
done
|
|
(cd ${QP_ROOT}/data/basis/ ; \ls)
|
|
) | sort | uniq
|
|
}
|
|
|
|
|
|
|
|
_qp_Complete()
|
|
{
|
|
local cur
|
|
|
|
COMPREPLY=()
|
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
first="${COMP_WORDS[1]}"
|
|
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
|
prev2="${COMP_WORDS[COMP_CWORD-2]}"
|
|
|
|
case "${first}" in
|
|
update)
|
|
COMPREPLY=( $(compgen -W "-h" -- $cur ) )
|
|
return 0
|
|
;;
|
|
man)
|
|
COMPREPLY=( $(compgen -W "$(cd ${QP_ROOT}/man ; \ls | sed 's/\.1//')" -- $cur ) )
|
|
return 0
|
|
;;
|
|
convert_output_to_ezfio)
|
|
COMPREPLY=( $(compgen -W "-o $(\ls)" -- ${cur} ) )
|
|
return 0
|
|
;;
|
|
create_ezfio_from_xyz)
|
|
case "${prev}" in
|
|
create_ezfio_from_xyz)
|
|
COMPREPLY=( $(compgen -W "-b -a -c -d -h -m -o -p -x" -- $cur ) )
|
|
return 0
|
|
;;
|
|
-m|-d|-c)
|
|
COMPREPLY=( $(compgen -W "" -- $cur ) )
|
|
return 0;;
|
|
-b)
|
|
for iter in $(_get_basis_sets); do
|
|
if [[ $iter =~ ^$cur ]]; then
|
|
COMPREPLY+=( "${iter}" )
|
|
fi
|
|
done;
|
|
return 0
|
|
;;
|
|
-p)
|
|
COMPREPLY=( $(compgen -W "$(cd ~/quantum_package/data/pseudo ; \ls)" -- $cur ) )
|
|
return 0
|
|
;;
|
|
*)
|
|
COMPREPLY=( $(compgen -W "-b -a -c -d -h -m -o -p -x $(\ls)" -- $cur ) )
|
|
return 0
|
|
;;
|
|
esac;;
|
|
plugins)
|
|
case "${prev}" in
|
|
plugins)
|
|
COMPREPLY=( $(compgen -W "list download install uninstall create" -- $cur ) )
|
|
return 0
|
|
;;
|
|
list)
|
|
COMPREPLY=( $(compgen -W "-i -u -q" -- $cur ) )
|
|
return 0;;
|
|
download)
|
|
COMPREPLY=( $(compgen -W "http:// git@github.com: git@gitlab.com: " -- $cur ) )
|
|
return 0;;
|
|
install)
|
|
COMPREPLY=( $(compgen -W "$(qp_plugins list -u)" -- $cur ) )
|
|
return 0;;
|
|
uninstall)
|
|
COMPREPLY=( $(compgen -W "$(qp_plugins list -i)" -- $cur ) )
|
|
return 0;;
|
|
create)
|
|
COMPREPLY=( $(compgen -W "-n " -- $cur ) )
|
|
return 0;;
|
|
*)
|
|
COMPREPLY=( $(compgen -W "$( \ls ; cd ~/quantum_package/src ; \ls )" -- $cur ) )
|
|
return 0
|
|
;;
|
|
esac;;
|
|
*)
|
|
COMPREPLY=( $(compgen -W 'plugins \
|
|
man \
|
|
create_ezfio_from_xyz \
|
|
convert_output_to_ezfio \
|
|
-h update' -- $cur ) )
|
|
|
|
esac
|
|
|
|
if [[ -n ${EZFIO_FILE} && -d ${EZFIO_FILE} ]]
|
|
then
|
|
|
|
case "${prev2}" in
|
|
set|has|get)
|
|
if [[ ${prev} == "qp" ]] ; then
|
|
COMPREPLY=( $(compgen -W "plugins set set_frozen_core set_mo_class" -- $cur ) )
|
|
elif [[ ! -d ${EZFIO_FILE}/${prev} ]] ; then
|
|
COMPREPLY=( $(compgen -W "" -- $cur ) )
|
|
else
|
|
COMPREPLY=( $(compgen -W "$(cd ${EZFIO_FILE}/${prev} ; \ls | sed 's/\.gz//' )" -- $cur ) )
|
|
fi
|
|
return 0
|
|
;;
|
|
esac
|
|
|
|
case "${first}" in
|
|
run|srun|mpirun)
|
|
COMPREPLY=( $(compgen -W "-h $(cat ${QP_ROOT}/data/executables | cut -d ' ' -f 1)" -- $cur ) )
|
|
return 0
|
|
;;
|
|
unset_file|set_frozen_core)
|
|
COMPREPLY=()
|
|
return 0
|
|
;;
|
|
set_mo_class)
|
|
COMPREPLY=( $(compgen -W "-h -c -i -a -v -d -q" -- $cur ) )
|
|
return 0
|
|
;;
|
|
set|has|get)
|
|
COMPREPLY=( $(compgen -W "$(cd ${EZFIO_FILE} ; \ls -d */ | sed 's|/||g')" -- $cur ) )
|
|
return 0
|
|
;;
|
|
edit)
|
|
COMPREPLY=( $(compgen -W "-h -c -n -s" -- $cur ) )
|
|
return 0
|
|
;;
|
|
*)
|
|
COMPREPLY+=( $(compgen -W 'has get set unset_file edit \
|
|
run srun mpirun set_frozen_core \
|
|
set_mo_class ' \
|
|
-- $cur ) )
|
|
return 0
|
|
;;
|
|
esac
|
|
|
|
else
|
|
|
|
case "${prev}" in
|
|
set_file)
|
|
COMPREPLY=( $(compgen -W "$(for i in * ; do [[ -f ${i}/ezfio/.version ]] && echo $i ; done)" -- ${cur} ) )
|
|
return 0
|
|
;;
|
|
*)
|
|
COMPREPLY+=( $(compgen -W "set_file" -- $cur ) )
|
|
return 0
|
|
;;
|
|
esac
|
|
|
|
fi
|
|
}
|
|
|
|
complete -F _qp_Complete qp
|