#compdef xbps-src setopt localoptions extended_glob local ret=0 archs top archs=(aarch64-musl aarch64 armv6hf-musl armv6hf armv7hf-musl armv7hf i686-musl i686 mips mipsel ppc64le-musl ppc64le ppc64-musl x86_64-musl) # path to masterdir and srcpkgs. top=$~_comp_command1:h _xbps_src_all_packages() { compadd "$@" -- $top/srcpkgs/*(:t) } _xbps_src_destdir_packages() { local -a dirs dirs=( $top/masterdir/destdir/*~[^-]#-linux-[^-]#(N/) ) compadd "$@" -- ${${dirs:t}%-*} } _xbps_src_build_packages() { local -a dirs dirs=( $top/masterdir/builddir/*~[^-]#-linux-[^-]#(N/) ) compadd "$@" -- ${${dirs:t}%-*} } _arguments -s : \ '-a[Cross compile packages]:architecture:($archs)' \ '-C[Do not remove build directory/autodeps/destdir]' \ '-E[Exit immediately when binary package already exists]' \ '-f[Force building and registering binary packages]' \ '-G[Enable XBPS_USE_GIT_REVS]' \ '-g[Enable building -dbg packages]' \ '-H[Absolute path to hostdir]:hostdir:_files -/' \ '-h[Help]' \ '-I[Ignore required dependencies]' \ '-j[Number of parallel build jobs]:number: ' \ '-L[Disable ASCII colors]' \ '-m[Absolute path to masterdir]:masterdir:_files -/' \ '-N[Disable use of remote repositories]' \ '-o[Set package build options]:options: ' \ '-r[Use alternative local repository]:repo:_files -/' \ '-t[Create a temporary masterdir]' \ '1:target:->target' \ '*::args:->args' && ret=0 case $state in target) _values "target" binary-bootstrap bootstrap bootstrap-update \ build chroot clean configure extract fetch install \ list patch pkg remove remove-autodeps show show-build-deps \ show-deps show-files show-options show-shlib-provides \ show-shlib-requires show-var show-repo-updates \ show-sys-updates update-bulk update-check update-sys zap ret=0;; args) case $words[1] in build|configure|extract|fetch|install|pkg|show|show-build-deps|update-check) _arguments ':package:_xbps_src_all_packages' && ret=0;; binary-bootstrap) _arguments '::architecture:($archs)' && ret=0;; bootstrap|bootstrap-update|chroot|list|remove-autodeps|show-repo-updates|show-sys-updates|update-bulk|update-sys) # no further arguments ret=0;; clean) _arguments '::package:_xbps_src_build_packages' && ret=0;; remove|show-deps|show-files|show-options|show-shlib-provides|show-shlib-requires) _arguments ':package:_xbps_src_destdir_packages' && ret=0;; esac;; esac return $ret