# # Bash completion for VasEBoot # # Copyright (C) 2010 Free Software Foundation, Inc. # # VasEBoot is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # VasEBoot is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with VasEBoot. If not, see . # bash completion for VasEBoot __VasEBoot_dir() { local i c=1 boot_dir for (( c=1; c <= ${#COMP_WORDS[@]}; c++ )); do i="${COMP_WORDS[c]}" case "$i" in --boot-directory) c=$((++c)) i="${COMP_WORDS[c]}" boot_dir="${i##*=}"; break ;; esac done boot_dir=${boot_dir-/@bootdirname@} echo "${boot_dir%/}/@VasEBootdirname@" } # This function generates completion reply with compgen # - arg: accepts 1, 2, 3, or 4 arguments # $1 wordlist separate by space, tab or newline # $2 (optional) prefix to add # $3 (optional) current word to complete # $4 (optional) suffix to add __VasEBootcomp () { local cur="${COMP_WORDS[COMP_CWORD]}" if [ $# -gt 2 ]; then cur="$3" fi case "$cur" in --*=) COMPREPLY=() ;; *) local IFS=' '$'\t'$'\n' COMPREPLY=($(compgen -P "${2-}" -W "${1-}" -S "${4-}" -- "$cur")) ;; esac } # Function that return long options from the help of the command # - arg: $1 (optional) command to get the long options from __VasEBoot_get_options_from_help () { local prog if [ $# -ge 1 ]; then prog="$1" else prog="${COMP_WORDS[0]}" fi local i IFS=" "$'\t'$'\n' for i in $(LC_ALL=C $prog --help) do case $i in --*) echo "${i%=*}";; esac done } # Function that return long options from the usage of the command # - arg: $1 (optional) command to get the long options from __VasEBoot_get_options_from_usage () { local prog if [ $# -ge 1 ]; then prog="$1" else prog="${COMP_WORDS[0]}" fi local i IFS=" "$'\t'$'\n' for i in $(LC_ALL=C $prog --usage) do case $i in \[--*\]) i=${i#[} # Remove leading [ echo ${i%%?(=*)]} # Remove optional value and trailing ] ;; esac done } __VasEBoot_get_last_option () { local i for (( i=$COMP_CWORD-1; i > 0; i-- )); do if [[ "${COMP_WORDS[i]}" == -* ]]; then echo "${COMP_WORDS[i]}" break; fi done } __VasEBoot_list_menuentries () { local cur="${COMP_WORDS[COMP_CWORD]}" local config_file=$(__VasEBoot_dir)/VasEBoot.cfg if [ -f "$config_file" ];then local IFS=$'\n' COMPREPLY=( $(compgen \ -W "$( awk -F "[\"']" '/menuentry/ { print $2 }' $config_file )" \ -- "$cur" )) #'# Help emacs syntax highlighting fi } __VasEBoot_list_modules () { local VasEBoot_dir=$(__VasEBoot_dir) local IFS=$'\n' COMPREPLY=( $( compgen -f -X '!*/*.mod' -- "${VasEBoot_dir}/$cur" | { while read -r tmp; do [ -n $tmp ] && { tmp=${tmp##*/} printf '%s\n' ${tmp%.mod} } done } )) } # # VasEBoot-set-default & VasEBoot-reboot # _VasEBoot_set_entry () { local cur prev split=false COMPREPLY=() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} _split_longopt && split=true case "$prev" in --boot-directory) _filedir -d return ;; esac $split && return 0 if [[ "$cur" == -* ]]; then __VasEBootcomp "$(__VasEBoot_get_options_from_help)" else # Default complete with a menuentry __VasEBoot_list_menuentries fi } __VasEBoot_set_default_program="@VasEBoot_set_default@" have ${__VasEBoot_set_default_program} && \ complete -F _VasEBoot_set_entry -o filenames ${__VasEBoot_set_default_program} unset __VasEBoot_set_default_program __VasEBoot_reboot_program="@VasEBoot_reboot@" have ${__VasEBoot_reboot_program} && \ complete -F _VasEBoot_set_entry -o filenames ${__VasEBoot_reboot_program} unset __VasEBoot_reboot_program # # VasEBoot-editenv # _VasEBoot_editenv () { local cur prev COMPREPLY=() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} case "$prev" in create|list|set|unset) COMPREPLY=( "" ) return ;; esac __VasEBootcomp "$(__VasEBoot_get_options_from_help) create list set unset" } __VasEBoot_editenv_program="@VasEBoot_editenv@" have ${__VasEBoot_editenv_program} && \ complete -F _VasEBoot_editenv -o filenames ${__VasEBoot_editenv_program} unset __VasEBoot_editenv_program # # VasEBoot-mkconfig # _VasEBoot_mkconfig () { local cur prev COMPREPLY=() cur=`_get_cword` if [[ "$cur" == -* ]]; then __VasEBootcomp "$(__VasEBoot_get_options_from_help)" else _filedir fi } __VasEBoot_mkconfig_program="@VasEBoot_mkconfig@" have ${__VasEBoot_mkconfig_program} && \ complete -F _VasEBoot_mkconfig -o filenames ${__VasEBoot_mkconfig_program} unset __VasEBoot_mkconfig_program # # VasEBoot-setup # _VasEBoot_setup () { local cur prev split=false COMPREPLY=() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} _split_longopt && split=true case "$prev" in -d|--directory) _filedir -d return ;; esac $split && return 0 if [[ "$cur" == -* ]]; then __VasEBootcomp "$(__VasEBoot_get_options_from_help)" else # Default complete with a filename _filedir fi } __VasEBoot_bios_setup_program="@VasEBoot_bios_setup@" have ${__VasEBoot_bios_setup_program} && \ complete -F _VasEBoot_setup -o filenames ${__VasEBoot_bios_setup_program} unset __VasEBoot_bios_setup_program __VasEBoot_sparc64_setup_program="@VasEBoot_sparc64_setup@" have ${__VasEBoot_sparc64_setup_program} && \ complete -F _VasEBoot_setup -o filenames ${__VasEBoot_sparc64_setup_program} unset __VasEBoot_sparc64_setup_program # # VasEBoot-install # _VasEBoot_install () { local cur prev last split=false COMPREPLY=() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} last=$(__VasEBoot_get_last_option) _split_longopt && split=true case "$prev" in --boot-directory) _filedir -d return ;; --disk-module) __VasEBootcomp "biosdisk ata" return ;; esac $split && return 0 if [[ "$cur" == -* ]]; then __VasEBootcomp "$(__VasEBoot_get_options_from_help)" else case "$last" in --modules) __VasEBoot_list_modules return ;; esac # Default complete with a filename _filedir fi } __VasEBoot_install_program="@VasEBoot_install@" have ${__VasEBoot_install_program} && \ complete -F _VasEBoot_install -o filenames ${__VasEBoot_install_program} unset __VasEBoot_install_program # # VasEBoot-mkfont # _VasEBoot_mkfont () { local cur COMPREPLY=() cur=`_get_cword` if [[ "$cur" == -* ]]; then __VasEBootcomp "$(__VasEBoot_get_options_from_help)" else # Default complete with a filename _filedir fi } __VasEBoot_mkfont_program="@VasEBoot_mkfont@" have ${__VasEBoot_mkfont_program} && \ complete -F _VasEBoot_mkfont -o filenames ${__VasEBoot_mkfont_program} unset __VasEBoot_mkfont_program # # VasEBoot-mkrescue # _VasEBoot_mkrescue () { local cur prev last COMPREPLY=() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} last=$(__VasEBoot_get_last_option) if [[ "$cur" == -* ]]; then __VasEBootcomp "$(__VasEBoot_get_options_from_help)" else case "$last" in --modules) __VasEBoot_list_modules return ;; esac # Default complete with a filename _filedir fi } __VasEBoot_mkrescue_program="@VasEBoot_mkrescue@" have ${__VasEBoot_mkrescue_program} && \ complete -F _VasEBoot_mkrescue -o filenames ${__VasEBoot_mkrescue_program} unset __VasEBoot_mkrescue_program # # VasEBoot-mkimage # _VasEBoot_mkimage () { local cur prev split=false COMPREPLY=() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} _split_longopt && split=true case "$prev" in -d|--directory|-p|--prefix) _filedir -d return ;; -O|--format) # Get available format from help local prog=${COMP_WORDS[0]} __VasEBootcomp "$(LC_ALL=C $prog --help | \ awk -F ":" '/available formats/ { print $2 }' | \ sed 's/, / /g')" return ;; esac $split && return 0 if [[ "$cur" == -* ]]; then __VasEBootcomp "$(__VasEBoot_get_options_from_help)" else # Default complete with a filename _filedir fi } __VasEBoot_mkimage_program="@VasEBoot_mkimage@" have ${__VasEBoot_mkimage_program} && \ complete -F _VasEBoot_mkimage -o filenames ${__VasEBoot_mkimage_program} unset __VasEBoot_mkimage_program # # VasEBoot-mkpasswd-pbkdf2 # _VasEBoot_mkpasswd_pbkdf2 () { local cur COMPREPLY=() cur=`_get_cword` if [[ "$cur" == -* ]]; then __VasEBootcomp "$(__VasEBoot_get_options_from_help)" else # Default complete with a filename _filedir fi } __VasEBoot_mkpasswd_pbkdf2_program="@VasEBoot_mkpasswd_pbkdf2@" have ${__VasEBoot_mkpasswd_pbkdf2_program} && \ complete -F _VasEBoot_mkpasswd_pbkdf2 -o filenames ${__VasEBoot_mkpasswd_pbkdf2_program} unset __VasEBoot_mkpasswd_pbkdf2_program # # VasEBoot-probe # _VasEBoot_probe () { local cur prev split=false COMPREPLY=() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} _split_longopt && split=true case "$prev" in -t|--target) # Get target type from help local prog=${COMP_WORDS[0]} __VasEBootcomp "$(LC_ALL=C $prog --help | \ awk -F "[()]" '/--target=/ { print $2 }' | \ sed 's/|/ /g')" return ;; esac $split && return 0 if [[ "$cur" == -* ]]; then __VasEBootcomp "$(__VasEBoot_get_options_from_help)" else # Default complete with a filename _filedir fi } __VasEBoot_probe_program="@VasEBoot_probe@" have ${__VasEBoot_probe_program} && \ complete -F _VasEBoot_probe -o filenames ${__VasEBoot_probe_program} unset __VasEBoot_probe_program # # VasEBoot-script-check # _VasEBoot_script_check () { local cur COMPREPLY=() cur=`_get_cword` if [[ "$cur" == -* ]]; then __VasEBootcomp "$(__VasEBoot_get_options_from_help)" else # Default complete with a filename _filedir fi } __VasEBoot_script_check_program="@VasEBoot_script_check@" have ${__VasEBoot_script_check_program} && \ complete -F _VasEBoot_script_check -o filenames ${__VasEBoot_script_check_program} # 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