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 }