#!/usr/bin/env bash

set -e

command:orgs() {
  get-args user:get-user
  local title="Organizations for User '$user':"
  msg_fail="Can't find Organizations for User '$user'"
  report-list \
    "/users/$user/orgs?per_page=PER_PAGE" \
    login
}

command:org() {
  get-args org
  api-get "/orgs/$org"
}

ok:org() {
  fields=(
    login type name billing_email email blog location company
    html_url public_repos public created_at
  )
  report-data
}

command:org-get() {
  get-args org key
  api-get "/orgs/$org"
  OK || {
    msg_fail="Organization '$org' not found"
    return
  }
  local value="$(JSON.get -a "/$key" -)"
  if [ -n "$value" ]; then
    msg_ok="$value"
  else
    msg_fail="Couldn't get value for '$key'"
    OK=1
  fi
}

command:org-edit() {
  require-auth
  get-args org %pairs
  api-patch "/orgs/$org" "$(json-dump-object-pairs)"
}

command:org-repos() {
  get-args org
  title="Repos for '$org':"
  report-list \
    "/orgs/$org/repos?sort=pushed;per_page=PER_PAGE" \
    'pushed_at full_name description'
}

format-entry:org-repos() {
  if "$raw_output"; then
    out "$3"
  else
    printf -v output_line "%d) (%s)  %-30s %s" "$1" "${2/T*}" "$3" "$4"
  fi
}

command:org-members() {
  get-args org
  report-list \
    "/orgs/$org/members?per_page=PER_PAGE" \
    login
}

# vim: set lisp:
