function cmd::group::set_main() { local group_name="" peer_name="" type="" while [[ $# -gt 0 ]]; do case "$1" in --name) group_name="$2"; shift 2 ;; --peer) peer_name="$2"; shift 2 ;; --type) type="$2"; shift 2 ;; *) log::error "Unknown flag: $1"; return 1 ;; esac done [[ -z "$group_name" ]] && log::error "Missing --name" && return 1 [[ -z "$peer_name" ]] && log::error "Missing --peer" && return 1 # Resolve peer name peer_name=$(peers::resolve_and_require "$peer_name" "$type") || return 1 # Verify peer is in the group if ! group::has_peer "$group_name" "$peer_name"; then log::error "Peer '${peer_name}' is not in group '${group_name}'" log::info "Add them first: wgctl group peer add --name ${group_name} --peer ${peer_name}" return 1 fi peers::set_main_group "$peer_name" "$group_name" log::wg_success "Main group for '${peer_name}' set to '${group_name}'" }