use __fish_complete_groups to complete group names for chown (#3380)

chown completion chown currently uses cat /etc/group to fetch the list of group names. In Cygwin there's no /etc/group file any more (user and group names are fetched directly from the OS), so when a user tries to tab-complete the group name they get an error message:

ASchulma@LZ77E1AASCHULMA ~/d/fish> chown ASchulma🐱 /etc/group: No such file or directory

This change fixes that by using getent group (via __fish_complete_groups) by preference to get the group names, and falling back to /etc/group. This is more portable.
This commit is contained in:
Andrew Schulman 2016-09-16 10:35:55 -04:00 committed by Fabian Homborg
parent 85cd372a4e
commit 05b52eaa0b

View file

@ -9,4 +9,4 @@ complete -c chown -s v -l verbose --description "Output diagnostic for every fil
complete -c chown -s h -l help --description "Display help and exit" complete -c chown -s h -l help --description "Display help and exit"
complete -c chown -l version --description "Display version and exit" complete -c chown -l version --description "Display version and exit"
complete -c chown --description "Username" -a "(__fish_print_users):" complete -c chown --description "Username" -a "(__fish_print_users):"
complete -c chown --description "Username" -a "(echo (commandline -ct)| __fish_sgrep -o '.*:')(cat /etc/group |cut -d : -f 1)" complete -c chown --description "Username" -a "(echo (commandline -ct)| __fish_sgrep -o '.*:')(__fish_complete_groups)"