mirror of
https://github.com/jech/galene.git
synced 2024-11-21 16:15:57 +01:00
Add pattern support to galenectl.
This commit is contained in:
parent
8de77fe417
commit
ed61b208a9
1 changed files with 36 additions and 7 deletions
|
@ -15,6 +15,7 @@ import (
|
|||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
"strings"
|
||||
|
@ -704,22 +705,31 @@ func formatPermissions(permissions group.Permissions) string {
|
|||
return formatRawPermissions(permissions.Permissions(nil))
|
||||
}
|
||||
|
||||
func match(patterns []string, value string) (bool, error) {
|
||||
for _, p := range patterns {
|
||||
found, err := path.Match(p, value)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
if found {
|
||||
return true, nil
|
||||
}
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
|
||||
func listUsersCmd(cmdname string, args []string) {
|
||||
var groupname string
|
||||
var long bool
|
||||
cmd := flag.NewFlagSet(cmdname, flag.ExitOnError)
|
||||
setUsage(cmd, cmdname,
|
||||
"%v [option...] %v [option...]\n",
|
||||
"%v [option...] %v [option...] [pattern...]\n",
|
||||
os.Args[0], cmdname,
|
||||
)
|
||||
cmd.StringVar(&groupname, "group", "", "group `name`")
|
||||
cmd.BoolVar(&long, "l", false, "display permissions")
|
||||
cmd.Parse(args)
|
||||
|
||||
if cmd.NArg() != 0 {
|
||||
cmd.Usage()
|
||||
os.Exit(1)
|
||||
}
|
||||
patterns := cmd.Args()
|
||||
|
||||
if groupname == "" {
|
||||
fmt.Fprintf(cmd.Output(),
|
||||
|
@ -741,6 +751,15 @@ func listUsersCmd(cmdname string, args []string) {
|
|||
return users[i] < users[j]
|
||||
})
|
||||
for _, user := range users {
|
||||
if len(patterns) > 0 {
|
||||
found, err := match(patterns, user)
|
||||
if err != nil {
|
||||
log.Fatalf("Match: %v", err)
|
||||
}
|
||||
if !found {
|
||||
continue
|
||||
}
|
||||
}
|
||||
if !long {
|
||||
fmt.Println(user)
|
||||
} else {
|
||||
|
@ -930,10 +949,11 @@ func deleteUserCmd(cmdname string, args []string) {
|
|||
func listGroupsCmd(cmdname string, args []string) {
|
||||
cmd := flag.NewFlagSet(cmdname, flag.ExitOnError)
|
||||
setUsage(cmd, cmdname,
|
||||
"%v [option...] %v\n",
|
||||
"%v [option...] %v [pattern...]\n",
|
||||
os.Args[0], cmdname,
|
||||
)
|
||||
cmd.Parse(args)
|
||||
patterns := cmd.Args()
|
||||
|
||||
u, err := url.JoinPath(serverURL, "/galene-api/v0/.groups/")
|
||||
if err != nil {
|
||||
|
@ -949,6 +969,15 @@ func listGroupsCmd(cmdname string, args []string) {
|
|||
return groups[i] < groups[j]
|
||||
})
|
||||
for _, g := range groups {
|
||||
if len(patterns) > 0 {
|
||||
found, err := match(patterns, g)
|
||||
if err != nil {
|
||||
log.Fatalf("Match: %v", err)
|
||||
}
|
||||
if !found {
|
||||
continue
|
||||
}
|
||||
}
|
||||
fmt.Println(g)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue