From 37508d1f1ee529f50a48264fa523f8f9df470e26 Mon Sep 17 00:00:00 2001 From: Kurtis Rader Date: Sun, 23 Apr 2017 20:08:40 -0700 Subject: [PATCH] refactor the __*_users functions Per my comment in issue #3980 this implements `__fish_print_users` in terms of `__fish_complete_users` so we don't have to modify both when a change to how users are enumerated is needed. --- share/functions/__fish_complete_users.fish | 10 ++++++---- share/functions/__fish_print_users.fish | 14 +++++--------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/share/functions/__fish_complete_users.fish b/share/functions/__fish_complete_users.fish index 120c62494..42473891d 100644 --- a/share/functions/__fish_complete_users.fish +++ b/share/functions/__fish_complete_users.fish @@ -1,10 +1,12 @@ - +# This should be used where you want user names with a description. Such as in an argument +# completion. If you just want a list of user names use __fish_print_users. function __fish_complete_users --description "Print a list of local users, with the real user name as a description" if test -x /usr/bin/getent - getent passwd | cut -d : -f 1,5 | string replace -r ':' \t + /usr/bin/getent passwd | cut -d : -f 1,5 | string replace -r ':' \t else if test -x /usr/bin/dscl - dscl . -list /Users RealName | string match -r -v '^_' | string replace -r ' {2,}' \t - else if test -e /etc/passwd + # This is the "Directory Service command line utility" used on macOS in place of getent. + /usr/bin/dscl . -list /Users RealName | string match -r -v '^_' | string replace -r ' {2,}' \t + else if test -r /etc/passwd string match -v -r '^\s*#'