#!/usr/bin/env bash
# Usage: p4_group_members.sh <groupname>
declare -A SEEN_GROUPS
get_members() {
local group="$1"
[[ -v SEEN_GROUPS[$group] ]] && return
SEEN_GROUPS[$group]=1
local section=""
while IFS= read -r line; do
case "$line" in
Users:*) section="users" ;;
Subgroups:*) section="subgroups" ;;
[A-Za-z]*:*) section="" ;;
$'\t'*)
local val="${line# }" # strip leading tab
[[ -z "$val" ]] && continue
if [[ "$section" == "users" ]]; then echo "$val"
elif [[ "$section" == "subgroups" ]]; then get_members "$val"
fi
;;
esac
done < <(p4 group -o "$1" 2>/dev/null)
}
get_members "$1" | sort -u
| # | Change | User | Description | Committed | |
|---|---|---|---|---|---|
| #1 | 32446 | C. Thomas Tyler |
Added p4_group_members.sh, a script to display all effective members of a p4 group, including direct members as well as members of subgroups (recursively). |