#compdef dotfiles.sh _dotfiles.sh() { integer ret=1 local -a args args+=( '*'{-a,--add=}'[add file to the dotfiles directory]:file:_files' '(-f --files)'{-f,--files}'[display all files added to the dotfiles directory]' '(-)'{-h,--help}'[display usage message and exit]' '(-p --packages)'{-p,--packages=}'[instal, list or store packages]:package functions:(( install\:"install all core packages of the stored list" install-aur\:"install all AUR packages of the stored list" list\:"display all packages installed on the system (default)" store\:"stores a list of all installed packages" ))' '(-l --pull)'{-l,--pull}'[pull each added file from system to dotfiles directory]' '(-s --push)'{-s,--push}'[push each added file to its location on the system]' ) _arguments -s -S $args[@] && ret=0 return ret } _dotfiles.sh