_minios_cmd() {
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD - 1]}"
    opts="--help --version --build-dir --config-file --config-only --distribution --architecture --desktop-environment --package-variant --compression-type --kernel-type --kernel-backports --kernel-aufs --kernel-build-dkms --locale --multilingual --keep-locales --timezone"

    if [[ ${cur} == -* ]]; then
        COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
    fi

    case "${prev}" in
    --build-dir | -b)
        local build_dirs=$(find . -type d -name '*')
        COMPREPLY=($(compgen -W "${build_dirs}" -- ${cur}))
        ;;
    --config-file)
        local build_dirs=$(find . -type d -name '*')
        COMPREPLY=($(compgen -W "${build_dirs}" -- ${cur}))
        ;;
    --distribution | -d)
        local distributions="bookworm buster sid trixie jammy noble"
        COMPREPLY=($(compgen -W "${distributions}" -- ${cur}))
        ;;
    --architecture | -a)
        local architectures="amd64 i386 i386-pae"
        COMPREPLY=($(compgen -W "${architectures}" -- ${cur}))
        ;;
    --desktop-environment | -de)
        local desktop_environments="xfce lxqt flux"
        COMPREPLY=($(compgen -W "${desktop_environments}" -- ${cur}))
        ;;
    --package-variant | -pv)
        local package_variants="minimum standard toolbox ultra puzzle"
        COMPREPLY=($(compgen -W "${package_variants}" -- ${cur}))
        ;;
    --compression-type | -c)
        local compression_types="zstd lz4 xz"
        COMPREPLY=($(compgen -W "${compression_types}" -- ${cur}))
        ;;
    --kernel-type | -kt)
        local kernel_types="default rt cloud"
        COMPREPLY=($(compgen -W "${kernel_types}" -- ${cur}))
        ;;
    --kernel-backports | -bpo)
        local kernel_backports="true false"
        COMPREPLY=($(compgen -W "${kernel_backports}" -- ${cur}))
        ;;
    --kernel-aufs | -aufs)
        local kernel_aufs="true false"
        COMPREPLY=($(compgen -W "${kernel_aufs}" -- ${cur}))
        ;;
    --kernel-build-dkms | -dkms)
        local kernel_build_dkms="true false"
        COMPREPLY=($(compgen -W "${kernel_build_dkms}" -- ${cur}))
        ;;
    --locale | -l)
        local locales="en_US ru_RU es_ES bt_BR"
        COMPREPLY=($(compgen -W "${locales}" -- ${cur}))
        ;;
    --multilingual | -ml)
        local multilingual_opts="true false"
        COMPREPLY=($(compgen -W "${multilingual_opts}" -- ${cur}))
        ;;
    --keep-locales | -kl)
        local keep_locales_opts="true false"
        COMPREPLY=($(compgen -W "${keep_locales_opts}" -- ${cur}))
        ;;
    --timezone | -tz)
        local timezones="Etc/UTC Europe/Moscow"
        COMPREPLY=($(compgen -W "${timezones}" -- ${cur}))
        ;;
    esac

    return 0
}

complete -F _minios_cmd minios-cmd
