p4_group_members.sh #1

  • //
  • guest/
  • tom_tyler/
  • sw/
  • main/
  • SSO_Cutover/
  • p4_group_members.sh
  • View
  • Commits
  • Open Download .zip Download (799 B)
#!/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).