#!/usr/bin/env bash

set -e

command:team() {
  get-args team_id
  api-get "/teams/$team_id"
}

ok:team() {
  fields=(
    name id permission members_count repos_count
  )
  report-data
}

command:teams() {
  require-auth
  get-args org
  report-list \
    "/orgs/$org/teams?per_page=PER_PAGE" \
    'name id'
}

format-entry:teams() {
  if "$raw_output"; then
    out "$3"
  else
    printf -v output_line "%2d) %-12s (ID %s)" "$1" "$2" "$3"
  fi
}

command:team-repos() {
  require-auth
  get-args team_id
  report-list \
    "/teams/$team_id/repos?per_page=PER_PAGE" \
    full_name
}

command:team-new() {
  require-auth
  get-args org name perm
  [[ "$perm" =~ ^(pull|push|admin)$ ]] ||
    error "3rd param (perm) must be pull, push or admin"
  api-post "/orgs/$org/teams" "$(
    json-dump-object name "$name" permission "$perm"
  )"
  msg_ok="Added new team '$name' to org '$org'"
}

command:team-delete() {
  require-auth
  get-args team_id
  api-delete "/teams/$team_id"
  msg_ok="Deleted team (id) '$team_id'"
}

# vim: set lisp:
