github.com/koron/hk@v0.0.0-20150303213137-b8aeaa3ab34c/members.go (about)

     1  package main
     2  
     3  import (
     4  	"os"
     5  	"sort"
     6  	"text/tabwriter"
     7  
     8  	"github.com/heroku/hk/Godeps/_workspace/src/github.com/bgentry/heroku-go"
     9  )
    10  
    11  var cmdMembers = &Command{
    12  	Run:      runMembers,
    13  	Usage:    "members <orgname>",
    14  	NeedsApp: false,
    15  	Category: "members",
    16  	Short:    "list member permissions for an organization" + extra,
    17  	Long: `
    18  List member permissions for an organization. Members are listed
    19  alphabetically.
    20  
    21  Examples:
    22  
    23      $ hk members
    24      b@heroku.com    member
    25      max@heroku.com  admin
    26  `,
    27  }
    28  
    29  func runMembers(cmd *Command, args []string) {
    30  	w := tabwriter.NewWriter(os.Stdout, 1, 2, 2, ' ', 0)
    31  	defer w.Flush()
    32  
    33  	if len(args) != 1 {
    34  		cmd.PrintUsage()
    35  		os.Exit(2)
    36  	}
    37  
    38  	orgname := args[0]
    39  
    40  	orgMembers, err := client.OrganizationMemberList(orgname, nil)
    41  	must(err)
    42  
    43  	sort.Sort(membersByEmail(orgMembers))
    44  	for _, oc := range orgMembers {
    45  		listRec(w,
    46  			oc.Email,
    47  			oc.Role,
    48  		)
    49  	}
    50  }
    51  
    52  type membersByEmail []heroku.OrganizationMember
    53  
    54  func (a membersByEmail) Len() int      { return len(a) }
    55  func (a membersByEmail) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
    56  func (a membersByEmail) Less(i, j int) bool {
    57  	return a[i].Email < a[j].Email
    58  }