
  7   -l=J*e8n21h0a=J*e8n21h  #   /lY> T +n/)F]u ?     /# bash completion for lvm                                  -*- shell-script -*-

_lvm_volumegroups()
{
    COMPREPLY=( $(compgen -W "$( vgscan 2>/dev/null | \
        sed -n -e 's|.*Found.*"\(.*\)".*$|\1|p' )" -- "$cur" ) )
}

_lvm_physicalvolumes()
{
    COMPREPLY=( $(compgen -W "$( pvscan 2>/dev/null | \
        sed -n -e 's|^.*PV \(.*\) VG.*$|\1|p' )" -- "$cur" ) )
}

_lvm_logicalvolumes()
{
    COMPREPLY=( $(compgen -W "$( lvscan 2>/dev/null | \
        sed -n -e "s|^.*'\(.*\)'.*$|\1|p" )" -- "$cur" ) )
    if [[ $cur == /dev/mapper/* ]]; then
        _filedir
        local i
        for i in ${!COMPREPLY[@]}; do
            [[ ${COMPREPLY[i]} == */control ]] && unset COMPREPLY[i]
        done
    fi
}

_lvm_units()
{
    COMPREPLY=( $( compgen -W 'h s b k m g t H K M G T' -- "$cur" ) )
}

_lvm_sizes()
{
    COMPREPLY=( $( compgen -W 'k K m M g G t T' -- "$cur" ) )
}

# @param $1 glob matching args known to take an argument
_lvm_count_args()
{
    args=0
    local offset=1
    if [[ "${words[0]}" == lvm ]]; then
        offset=2
    fi
    local i prev=${words[$offset-1]}
    for (( i=$offset; i < cword; i++ )); do
        if [[ "${words[i]}" != -* && $prev != $1 ]]; then
            args=$(($args + 1))
        fi
        prev=${words[i]}
    done
}

_lvmdiskscan()
{
    local cur prev words cword
    _init_completion || return

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '$( _parse_usage "$1" --help )' -- "$cur" ) )
    fi
} &&
complete -F _lvmdiskscan lvmdiskscan

_pvscan()
{
    local cur prev words cword
    _init_completion || return

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '--debug --exported --novolumegroup --help
            --ignorelockingfailure --partial --short --uuid --verbose
            --version' -- "$cur" ) )
    fi
} &&
complete -F _pvscan pvscan

_pvs()
{
    local cur prev words cword
    _init_completion || return

    case $prev in
        -o|-O|--options|--sort)
            COMPREPLY=( $( compgen -W 'pv_fmt pv_uuid pv_size pv_free pv_used
                pv_name pv_attr pv_pe_count pv_pe_alloc_count' -- "$cur" ) )
            return 0
            ;;
        --units)
            _lvm_units
            return 0
            ;;
    esac

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '$( _parse_usage "$1" --help )' -- "$cur" ) )
    else
        _lvm_physicalvolumes
    fi
} &&
complete -F _pvs pvs

_pvdisplay()
{
    local cur prev words cword
    _init_completion || return

    case $prev in
        --units)
            _lvm_units
            return 0
            ;;
    esac

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '$( _parse_usage "$1" --help )' -- "$cur" ) )
    else
        _lvm_physicalvolumes
    fi
} &&
complete -F _pvdisplay pvdisplay

_pvchange()
{
    local cur prev words cword
    _init_completion || return

    case $prev in
        -A|-x|--autobackup|--allocatable)
            COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) )
            return 0
            ;;
    esac

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '$( _parse_usage "$1" --help )' -- "$cur" ) )
    else
        _lvm_physicalvolumes
    fi
} &&
complete -F _pvchange pvchange

_pvcreate()
{
    local cur prev words cword
    _init_completion || return

    case $prev in
        --restorefile)
            _filedir
            return 0
            ;;
        -M|--metadatatype)
            COMPREPLY=( $( compgen -W '1 2' -- "$cur" ) )
            return 0
            ;;
        --metadatacopies)
            COMPREPLY=( $( compgen -W '0 1 2' -- "$cur" ) )
            return 0
            ;;
        --metadatasize|--setphysicalvolumesize)
            _lvm_sizes
            return 0
            ;;
    esac

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '$( _parse_usage "$1" --help )' -- "$cur" ) )
    else
        _lvm_physicalvolumes
    fi
} &&
complete -F _pvcreate pvcreate

_pvmo