# 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 "has"|"set"|"get"|"set_file"|"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 NAME=$(eval "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 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 ~/quantum_package/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 -d "$(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