@@ -96,7 +96,7 @@ user::exists () {
9696
9797 fi
9898
99- if sys::is_linux || sys::is_wsl ; then
99+ if sys::is_linux; then
100100
101101 if sys::has getent; then
102102 getent passwd " ${user} " > /dev/null 2>&1 || return 1
@@ -152,7 +152,7 @@ user::all () {
152152
153153 if [[ -z " ${group} " ]]; then
154154
155- if sys::is_linux || sys::is_wsl ; then
155+ if sys::is_linux; then
156156
157157 if sys::has getent; then
158158 getent passwd 2> /dev/null | awk -F: ' { print $1 }' | awk ' NF && !seen[$0]++ { print }'
@@ -219,7 +219,7 @@ user::all () {
219219 return
220220
221221 fi
222- if sys::is_linux || sys::is_wsl ; then
222+ if sys::is_linux; then
223223
224224 while IFS=: read -r _user _x _uid _gid _rest || [[ -n " ${_user:- } " ]]; do
225225
@@ -293,7 +293,7 @@ user::add () {
293293
294294 group::exists " ${group} " || return 1
295295
296- if sys::is_linux || sys::is_wsl ; then
296+ if sys::is_linux; then
297297
298298 if sys::has useradd; then
299299 useradd -m -g " ${group} " " ${user} " > /dev/null 2>&1
@@ -385,7 +385,7 @@ user::del () {
385385
386386 user::exists " ${user} " || return 0
387387
388- if sys::is_linux || sys::is_wsl ; then
388+ if sys::is_linux; then
389389
390390 if sys::has userdel; then
391391 userdel " ${user} " > /dev/null 2>&1
@@ -517,7 +517,7 @@ user::add_group () {
517517 group::exists " ${group} " || return 1
518518 user::exists " ${user} " " ${group} " && return 0
519519
520- if sys::is_linux || sys::is_wsl ; then
520+ if sys::is_linux; then
521521
522522 if sys::has usermod; then
523523 usermod -a -G " ${group} " " ${user} " > /dev/null 2>&1
@@ -578,7 +578,7 @@ user::del_group () {
578578 group::exists " ${group} " || return 1
579579 user::exists " ${user} " " ${group} " || return 0
580580
581- if sys::is_linux || sys::is_wsl ; then
581+ if sys::is_linux; then
582582
583583 if sys::has gpasswd; then
584584 gpasswd -d " ${user} " " ${group} " > /dev/null 2>&1
@@ -639,7 +639,7 @@ user::shell () {
639639 printf ' %s\n' " ${SHELL} "
640640 return 0
641641 fi
642- if sys::is_linux || sys::is_wsl ; then
642+ if sys::is_linux; then
643643
644644 if sys::has getent; then
645645 v=" $( getent passwd " ${user} " 2> /dev/null | awk -F: ' NR == 1 { print $7 }' ) "
@@ -702,7 +702,7 @@ user::home () {
702702
703703 fi
704704
705- if sys::is_linux || sys::is_wsl ; then
705+ if sys::is_linux; then
706706
707707 if sys::has getent; then
708708 v=" $( getent passwd " ${user} " 2> /dev/null | awk -F: ' NR == 1 { print $6 }' ) "
@@ -916,7 +916,7 @@ group::exists () {
916916 [[ -n " ${group} " ]] || return 1
917917 [[ " ${group} " != * $' \n ' * && " ${group} " != * $' \r ' * ]] || return 1
918918
919- if sys::is_linux || sys::is_wsl ; then
919+ if sys::is_linux; then
920920
921921 if sys::has getent; then
922922 getent group " ${group} " > /dev/null 2>&1 || return 1
@@ -965,73 +965,20 @@ group::all () {
965965 current=" $( user::name 2> /dev/null || true) "
966966 [[ " ${user} " != * $' \n ' * && " ${user} " != * $' \r ' * ]] || return 1
967967
968- if [[ -n " ${user} " ]]; then
969-
970- if sys::is_windows && sys::has powershell.exe; then
971-
972- # shellcheck disable=SC2016
973- SYS_USER_QUERY=" ${user} " powershell.exe -NoProfile -NonInteractive -Command '
974- $u = $env:SYS_USER_QUERY
975- Get-LocalGroup | ForEach-Object {
976- try {
977- $name = $_.Name
978- $hit = Get-LocalGroupMember -Group $name -ErrorAction Stop | Where-Object {
979- $short = ( $_.Name -split "\\" )[ -1 ]
980- $short -eq $u -or $_.Name -eq $u
981- }
982- if ( $hit ) { $name }
983- } catch {}
984- }
985- ' 2> /dev/null | tr -d ' \r' | awk ' NF && !seen[$0]++ { print }'
986-
987- return
988-
989- fi
990- if sys::has id; then
991-
992- if [[ -n " ${current} " && " ${user} " == " ${current} " ]]; then v=" $( id -Gn 2> /dev/null || true) "
993- else v=" $( id -Gn " ${user} " 2> /dev/null || true) "
994- fi
995-
996- [[ -n " ${v} " ]] || return 1
997- for x in ${v} ; do printf ' %s\n' " ${x} " ; done | awk ' NF && !seen[$0]++ { print }'
998-
999- return 0
1000-
1001- fi
1002-
1003- return 1
1004-
1005- fi
1006- if sys::is_linux || sys::is_wsl; then
1007-
1008- if sys::has getent; then
1009- getent group 2> /dev/null | awk -F: ' { print $1 }' | awk ' NF && !seen[$0]++ { print }'
1010- return
1011- fi
1012-
1013- [[ -r /etc/group ]] || return 1
1014- awk -F: ' { print $1 }' /etc/group 2> /dev/null | awk ' NF && !seen[$0]++ { print }'
1015- return
1016-
1017- fi
1018- if sys::is_macos; then
1019-
1020- sys::has dscl || return 1
1021- dscl . -list /Groups 2> /dev/null | awk ' NF && !seen[$0]++ { print }'
1022- return
1023-
1024- fi
1025968 if sys::is_windows; then
1026969
1027970 if sys::has powershell.exe; then
1028971
1029972 if [[ -n " ${user} " ]]; then
1030973
974+ user::exists " ${user} " || return 1
975+
1031976 # shellcheck disable=SC2016
1032977 v=" $( SYS_USER_QUERY=" ${user} " powershell.exe -NoProfile -NonInteractive -Command '
978+ $u = $env:SYS_USER_QUERY
979+ $out = @()
980+
1033981 try {
1034- $u = $env:SYS_USER_QUERY
1035982 Get-LocalUser -Name $u -ErrorAction Stop | Out-Null
1036983
1037984 Get-LocalGroup | ForEach-Object {
@@ -1042,35 +989,46 @@ group::all () {
1042989 $short -eq $u -or $_.Name -eq $u
1043990 }
1044991
1045- if ( $hit ) { $name }
992+ if ( $hit ) { $out += $ name }
1046993 } catch {}
1047994 }
1048995
996+ if ( $out.Count -lt 1 ) { exit 1 }
997+
998+ $out | Select-Object -Unique
1049999 exit 0
10501000 } catch {
10511001 exit 1
10521002 }
1053- ' 2> /dev/null | tr -d ' \r' | awk ' NF && !seen[$0]++ { print } ' | | true) "
1003+ ' 2> /dev/null | tr -d ' \r' || true) "
10541004
10551005 [[ -n " ${v} " ]] || return 1
1056- printf ' %s\n' " ${v} "
1006+ printf ' %s\n' " ${v} " | awk ' NF && !seen[$0]++ { print } '
10571007
10581008 return 0
10591009
10601010 fi
10611011
1062- powershell.exe -NoProfile -NonInteractive -Command " Get-LocalGroup | Select-Object -ExpandProperty Name" 2> /dev/null |
1063- tr -d ' \r' |
1064- awk ' NF && !seen[$0]++ { print }'
1012+ v=" $( powershell.exe -NoProfile -NonInteractive -Command '
1013+ try {
1014+ Get-LocalGroup | Select-Object -ExpandProperty Name
1015+ exit 0
1016+ } catch {
1017+ exit 1
1018+ }
1019+ ' 2> /dev/null | tr -d ' \r' || true) "
1020+
1021+ [[ -n " ${v} " ]] || return 1
1022+ printf ' %s\n' " ${v} " | awk ' NF && !seen[$0]++ { print }'
10651023
1066- return
1024+ return 0
10671025
10681026 fi
10691027 if sys::has net.exe; then
10701028
10711029 [[ -n " ${user} " ]] && return 1
10721030
1073- net.exe localgroup 2> /dev/null | tr -d ' \r' | awk '
1031+ v= " $( net.exe localgroup 2> /dev/null | tr -d ' \r' | awk '
10741032 BEGIN { cap = 0 }
10751033 /^---/ { cap = 1; next }
10761034 /^The command completed successfully\./ { cap = 0 }
@@ -1079,14 +1037,61 @@ group::all () {
10791037 sub(/^[[:space:]]+/, "", line)
10801038 if ( line != "" ) print line
10811039 }
1082- ' | awk ' NF && !seen[$0]++ { print } '
1040+ ' || true ) "
10831041
1084- return
1042+ [[ -n " ${v} " ]] || return 1
1043+ printf ' %s\n' " ${v} " | awk ' NF && !seen[$0]++ { print }'
1044+
1045+ return 0
10851046
10861047 fi
10871048
10881049 return 1
10891050
1051+ fi
1052+ if [[ -n " ${user} " ]]; then
1053+
1054+ user::exists " ${user} " || return 1
1055+
1056+ if sys::has id; then
1057+
1058+ if [[ -n " ${current} " && " ${user} " == " ${current} " ]]; then v=" $( id -Gn 2> /dev/null || true) "
1059+ else v=" $( id -Gn " ${user} " 2> /dev/null || true) "
1060+ fi
1061+
1062+ [[ -n " ${v} " ]] || return 1
1063+
1064+ for x in ${v} ; do
1065+ printf ' %s\n' " ${x} "
1066+ done | awk ' NF && !seen[$0]++ { print }'
1067+
1068+ return 0
1069+
1070+ fi
1071+
1072+ return 1
1073+
1074+ fi
1075+ if sys::is_linux; then
1076+
1077+ if sys::has getent; then
1078+ getent group 2> /dev/null | awk -F: ' { print $1 }' | awk ' NF && !seen[$0]++ { print }'
1079+ return
1080+ fi
1081+
1082+ [[ -r /etc/group ]] || return 1
1083+ awk -F: ' { print $1 }' /etc/group 2> /dev/null | awk ' NF && !seen[$0]++ { print }'
1084+
1085+ return
1086+
1087+ fi
1088+ if sys::is_macos; then
1089+
1090+ sys::has dscl || return 1
1091+ dscl . -list /Groups 2> /dev/null | awk ' NF && !seen[$0]++ { print }'
1092+
1093+ return
1094+
10901095 fi
10911096
10921097 return 1
@@ -1101,7 +1106,7 @@ group::add () {
11011106
11021107 group::exists " ${group} " && return 0
11031108
1104- if sys::is_linux || sys::is_wsl ; then
1109+ if sys::is_linux; then
11051110
11061111 if sys::has groupadd; then
11071112 groupadd " ${group} " > /dev/null 2>&1
@@ -1172,7 +1177,7 @@ group::del () {
11721177
11731178 group::exists " ${group} " || return 0
11741179
1175- if sys::is_linux || sys::is_wsl ; then
1180+ if sys::is_linux; then
11761181
11771182 if sys::has groupdel; then
11781183 groupdel " ${group} " > /dev/null 2>&1
0 commit comments