Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
rgzr committed Dec 26, 2017
2 parents c74e784 + 2b580c5 commit 298ebc6
Show file tree
Hide file tree
Showing 2 changed files with 199 additions and 4 deletions.
49 changes: 49 additions & 0 deletions interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,16 @@ var (

taskList = app.Command("list", "Show push/pulls happening on a prefix")
taskListPrefix = taskList.Arg("prefix", "prefix").Default("").String()
taskListDepth = taskList.Flag("depth", "Limit the search to a depth of subprefixes").Default("-1").Int()
taskListFilter = taskList.Flag("filter", "A RE2 regular expression to filter the results by prefix").Default("").String()
taskListLimit = taskList.Flag("limit", "Limit the number of tasks returned").Default("100").Int()
taskListSkip = taskList.Flag("skip", "Skip a number of tasks before applying the limit").Default("0").Int()

taskCount = app.Command("count", "Count push/pulls happening on a prefix")
taskCountPrefix = taskCount.Arg("prefix", "prefix").Default("").String()
taskCountSubprefixes = taskCount.Flag("subprefixes", "Include a detailed count of the subprefixes").Default("false").Bool()
taskCountFilter = taskCount.Flag("filter", "A RE2 regular expression to filter the results by prefix").Default("").String()

///

pipeCmd = app.Command("pipe", "Pipe tasks")
Expand All @@ -71,15 +78,26 @@ var (
userDelete = userCmd.Command("delete", "Delete an user")
userDeleteName = userDelete.Arg("username", "username").Required().String()

userRename = userCmd.Command("rename", "Rename a user")
userRenameName = userRename.Arg("username", "username").Required().String()
userRenameNew = userRename.Arg("newusername", "newusername").Required().String()

userPass = userCmd.Command("passwd", "Change an user password")
userPassName = userPass.Arg("username", "username").Required().String()
userPassPass = userPass.Arg("password", "password").Required().String()

userList = userCmd.Command("list", "List users on a prefix")
userListPrefix = userList.Arg("prefix", "prefix").Default("").String()
userListDepth = userList.Flag("depth", "Limit the search to a depth of subprefixes").Default("-1").Int()
userListFilter = userList.Flag("filter", "A RE2 regular expression to filter the results by user").Default("").String()
userListLimit = userList.Flag("limit", "Limit the number of users returned").Default("100").Int()
userListSkip = userList.Flag("skip", "Skip a number of elements before applying the limit").Default("0").Int()

userCount = userCmd.Command("count", "Count users on a prefix")
userCountPrefix = userCount.Arg("prefix", "prefix").Default("").String()
userCountSubprefixes = userCount.Flag("subprefixes", "Include a detailed count of the subprefixes").Default("false").Bool()
userCountFilter = userCount.Flag("filter", "A RE2 regular expression to filter the results by prefix").Default("").String()

userKick = userCmd.Command("kick", "Kick users on a prefix")
userKickPrefix = userKick.Arg("prefix", "prefix").Required().String()

Expand All @@ -100,9 +118,16 @@ var (

sessionsList = sessionsCmd.Command("list", "List active sessions")
sessionsListPrefix = sessionsList.Arg("prefix", "User prefix").Default("").String()
sessionsListDepth = sessionsList.Flag("depth", "Limit the search to a depth of subprefixes").Default("-1").Int()
sessionsListFilter = sessionsList.Flag("filter", "A RE2 regular expression to filter the results by user").Default("").String()
sessionsListLimit = sessionsList.Flag("limit", "Limit the number of sessions returned").Default("100").Int()
sessionsListSkip = sessionsList.Flag("skip", "Skip a number of elements before applying the limit").Default("0").Int()

sessionsCount = sessionsCmd.Command("count", "Count sessions from a user on a prefix")
sessionsCountPrefix = sessionsCount.Arg("prefix", "prefix").Default("").String()
sessionsCountSubprefixes = sessionsCount.Flag("subprefixes", "Include a detailed count of the subprefixes").Default("false").Bool()
sessionsCountFilter = sessionsCount.Flag("filter", "A RE2 regular expression to filter the results by prefix").Default("").String()

sessionsKick = sessionsCmd.Command("kick", "Kick any active connection with matching prefix")
sessionsKickConn = sessionsKick.Arg("connId", "connId prefix").Required().String()

Expand Down Expand Up @@ -197,6 +222,18 @@ var (
chanPubJChan = chanPubJ.Arg("topic", "Topic to publish to").Required().String()
chanPubJMsg = chanPubJ.Arg("data", "JSON data to send").Required().String()

chanList = chanCmd.Command("list", "List topics on a prefix")
chanListPrefix = chanList.Arg("prefix", "prefix").Default("").String()
chanListDepth = chanList.Flag("depth", "Limit the search to a depth of subprefixes").Default("-1").Int()
chanListFilter = chanList.Flag("filter", "A RE2 regular expression to filter the results by topic").Default("").String()
chanListLimit = chanList.Flag("limit", "Limit the number of topics returned").Default("100").Int()
chanListSkip = chanList.Flag("skip", "Skip a number of elements before applying the limit").Default("0").Int()

chanCount = chanCmd.Command("count", "Count topics on a prefix")
chanCountPrefix = chanCount.Arg("prefix", "prefix").Default("").String()
chanCountSubprefixes = chanCount.Flag("subprefixes", "Include a detailed count of the subprefixes").Default("false").Bool()
chanCountFilter = chanCount.Flag("filter", "A RE2 regular expression to filter the results by prefix").Default("").String()

//

syncCmd = app.Command("sync", "Sync commands")
Expand All @@ -206,4 +243,16 @@ var (

syncUnlock = syncCmd.Command("unlock", "Release a lock")
syncUnlockName = syncUnlock.Arg("name", "Name of the lock").Required().String()

syncList = syncCmd.Command("list", "List locks on a prefix")
syncListPrefix = syncList.Arg("prefix", "prefix").Default("").String()
syncListDepth = syncList.Flag("depth", "Limit the search to a depth of subprefixes").Default("-1").Int()
syncListFilter = syncList.Flag("filter", "A RE2 regular expression to filter the results by lock").Default("").String()
syncListLimit = syncList.Flag("limit", "Limit the number of locks returned").Default("100").Int()
syncListSkip = syncList.Flag("skip", "Skip a number of elements before applying the limit").Default("0").Int()

syncCount = syncCmd.Command("count", "Count locks on a prefix")
syncCountPrefix = syncCount.Arg("prefix", "prefix").Default("").String()
syncCountSubprefixes = syncCount.Flag("subprefixes", "Include a detailed count of the subprefixes").Default("false").Bool()
syncCountFilter = syncCount.Flag("filter", "A RE2 regular expression to filter the results by prefix").Default("").String()
)
154 changes: 150 additions & 4 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ func execCmd(nc *nexus.NexusConn, parsed string) {
}

case taskList.FullCommand():
if res, err := nc.TaskList(*taskListPrefix, *taskListLimit, *taskListSkip); err != nil {
if res, err := nc.TaskList(*taskListPrefix, *taskListLimit, *taskListSkip, &nexus.ListOpts{LimitByDepth: true, Depth: *taskListDepth, Filter: *taskListFilter}); err != nil {
log.Println(err)
return
} else {
Expand All @@ -229,6 +229,26 @@ func execCmd(nc *nexus.NexusConn, parsed string) {
table.Render()
}

case taskCount.FullCommand():
if res, err := nc.TaskCount(*taskCountPrefix, &nexus.CountOpts{Subprefixes: *taskCountSubprefixes, Filter: *taskCountFilter}); err != nil {
log.Println(err)
return
} else {
table := tablewriter.NewWriter(os.Stdout)
table.SetHeader([]string{"Prefix", "Count", "PushCount", "PullCount"})
table.SetBorders(tablewriter.Border{Left: false, Top: false, Right: false, Bottom: false})

if *taskCountSubprefixes {
for _, el := range ei.N(res).SliceZ() {
table.Append([]string{ei.N(el).M("prefix").StringZ(), fmt.Sprintf("%d", ei.N(el).M("count").IntZ()), fmt.Sprintf("%d", ei.N(el).M("pushCount").IntZ()), fmt.Sprintf("%d", ei.N(el).M("pullCount").IntZ())})
}
} else {
table.Append([]string{*taskCountPrefix, fmt.Sprintf("%d", ei.N(res).M("count").IntZ()), fmt.Sprintf("%d", ei.N(res).M("pushCount").IntZ()), fmt.Sprintf("%d", ei.N(res).M("pullCount").IntZ())})
}

table.Render()
}

case pipeWrite.FullCommand():
// Clean afterwards in case we are looping on shell mode
defer func() { *pipeWriteData = []string{} }()
Expand Down Expand Up @@ -286,15 +306,24 @@ func execCmd(nc *nexus.NexusConn, parsed string) {
log.Println("OK")
}

case userRename.FullCommand():
log.Printf("Renaming user \"%s\" to \"%s\"", *userRenameName, *userRenameNew)
if _, err := nc.UserRename(*userRenameName, *userRenameNew); err != nil {
log.Println(err)
return
} else {
log.Println("OK")
}

case userList.FullCommand():
log.Printf("Listing users on \"%s\"", *userListPrefix)

if res, err := nc.UserList(*userListPrefix, *userListLimit, *userListSkip); err != nil {
if res, err := nc.UserList(*userListPrefix, *userListLimit, *userListSkip, &nexus.ListOpts{LimitByDepth: true, Depth: *userListDepth, Filter: *userListFilter}); err != nil {
log.Println(err)
return
} else {
table := tablewriter.NewWriter(os.Stdout)
table.SetHeader([]string{"User", "Templates", "Whitelist", "Blacklist", "Max Sessions", "Prefix", "Tags", "Disabled"})
table.SetHeader([]string{"User", "Created At", "Templates", "Whitelist", "Blacklist", "Max Sessions", "Prefix", "Tags", "Disabled"})
table.SetBorders(tablewriter.Border{Left: false, Top: false, Right: false, Bottom: false})
table.SetAlignment(tablewriter.ALIGN_CENTER)
table.SetRowLine(true)
Expand All @@ -306,6 +335,7 @@ func execCmd(nc *nexus.NexusConn, parsed string) {
if lines == 0 {
table.Append([]string{
user.User,
user.CreatedAt.String(),
fmt.Sprintf("%v", user.Templates),
fmt.Sprintf("%v", user.Whitelist),
fmt.Sprintf("%v", user.Blacklist),
Expand All @@ -323,6 +353,7 @@ func execCmd(nc *nexus.NexusConn, parsed string) {
if lines == 0 {
table.Append([]string{
user.User,
user.CreatedAt.String(),
fmt.Sprintf("%v", user.Templates),
fmt.Sprintf("%v", user.Whitelist),
fmt.Sprintf("%v", user.Blacklist),
Expand All @@ -338,6 +369,26 @@ func execCmd(nc *nexus.NexusConn, parsed string) {
fmt.Println()
}

case userCount.FullCommand():
if res, err := nc.UserCount(*userCountPrefix, &nexus.CountOpts{Subprefixes: *userCountSubprefixes, Filter: *userCountFilter}); err != nil {
log.Println(err)
return
} else {
table := tablewriter.NewWriter(os.Stdout)
table.SetHeader([]string{"Prefix", "Count"})
table.SetBorders(tablewriter.Border{Left: false, Top: false, Right: false, Bottom: false})

if *userCountSubprefixes {
for _, el := range ei.N(res).SliceZ() {
table.Append([]string{ei.N(el).M("prefix").StringZ(), fmt.Sprintf("%d", ei.N(el).M("count").IntZ())})
}
} else {
table.Append([]string{*userCountPrefix, fmt.Sprintf("%d", ei.N(res).M("count").IntZ())})
}

table.Render()
}

case userPass.FullCommand():
if _, err := nc.UserSetPass(*userPassName, *userPassPass); err != nil {
log.Println(err)
Expand Down Expand Up @@ -397,7 +448,7 @@ func execCmd(nc *nexus.NexusConn, parsed string) {
}

case sessionsList.FullCommand():
if res, err := nc.SessionList(*sessionsListPrefix, *sessionsListLimit, *sessionsListSkip); err != nil {
if res, err := nc.SessionList(*sessionsListPrefix, *sessionsListLimit, *sessionsListSkip, &nexus.ListOpts{LimitByDepth: true, Depth: *sessionsListDepth, Filter: *sessionsListFilter}); err != nil {
log.Println(err)
return
} else {
Expand All @@ -421,6 +472,26 @@ func execCmd(nc *nexus.NexusConn, parsed string) {

}

case sessionsCount.FullCommand():
if res, err := nc.SessionCount(*sessionsCountPrefix, &nexus.CountOpts{Subprefixes: *sessionsCountSubprefixes, Filter: *sessionsCountFilter}); err != nil {
log.Println(err)
return
} else {
table := tablewriter.NewWriter(os.Stdout)
table.SetHeader([]string{"Prefix", "Count"})
table.SetBorders(tablewriter.Border{Left: false, Top: false, Right: false, Bottom: false})

if *sessionsCountSubprefixes {
for _, el := range ei.N(res).SliceZ() {
table.Append([]string{ei.N(el).M("prefix").StringZ(), fmt.Sprintf("%d", ei.N(el).M("count").IntZ())})
}
} else {
table.Append([]string{*sessionsCountPrefix, fmt.Sprintf("%d", ei.N(res).M("count").IntZ())})
}

table.Render()
}

case sessionsKick.FullCommand():
if res, err := nc.SessionKick(*sessionsKickConn); err != nil {
log.Println(err)
Expand Down Expand Up @@ -664,6 +735,44 @@ func execCmd(nc *nexus.NexusConn, parsed string) {
log.Println("Result:", res)
}

case chanList.FullCommand():
if res, err := nc.TopicList(*chanListPrefix, *chanListLimit, *chanListSkip, &nexus.ListOpts{LimitByDepth: true, Depth: *chanListDepth, Filter: *chanListFilter}); err != nil {
log.Println(err)
return
} else {
table := tablewriter.NewWriter(os.Stdout)
table.SetHeader([]string{"Topic", "Subscribers"})
table.SetBorders(tablewriter.Border{Left: false, Top: false, Right: false, Bottom: false})
for _, topic := range res {
table.Append([]string{topic.Topic, fmt.Sprintf("%d", topic.Subscribers)})

}

table.Render() // Send output
fmt.Println()

}

case chanCount.FullCommand():
if res, err := nc.TopicCount(*chanCountPrefix, &nexus.CountOpts{Subprefixes: *chanCountSubprefixes, Filter: *chanCountFilter}); err != nil {
log.Println(err)
return
} else {
table := tablewriter.NewWriter(os.Stdout)
table.SetHeader([]string{"Prefix", "Count"})
table.SetBorders(tablewriter.Border{Left: false, Top: false, Right: false, Bottom: false})

if *chanCountSubprefixes {
for _, el := range ei.N(res).SliceZ() {
table.Append([]string{ei.N(el).M("prefix").StringZ(), fmt.Sprintf("%d", ei.N(el).M("count").IntZ())})
}
} else {
table.Append([]string{*chanCountPrefix, fmt.Sprintf("%d", ei.N(res).M("count").IntZ())})
}

table.Render()
}

case syncLock.FullCommand():
if res, err := nc.Lock(*syncLockName); err != nil {
log.Println(err)
Expand All @@ -680,6 +789,43 @@ func execCmd(nc *nexus.NexusConn, parsed string) {
log.Println("Result:", res)
}

case syncList.FullCommand():
if res, err := nc.LockList(*syncListPrefix, *syncListLimit, *syncListSkip, &nexus.ListOpts{LimitByDepth: true, Depth: *syncListDepth, Filter: *syncListFilter}); err != nil {
log.Println(err)
return
} else {
table := tablewriter.NewWriter(os.Stdout)
table.SetHeader([]string{"ID", "Owner"})
table.SetBorders(tablewriter.Border{Left: false, Top: false, Right: false, Bottom: false})
for _, lock := range res {
table.Append([]string{lock.Id, lock.Owner})
}

table.Render() // Send output
fmt.Println()

}

case syncCount.FullCommand():
if res, err := nc.LockCount(*syncCountPrefix, &nexus.CountOpts{Subprefixes: *syncCountSubprefixes, Filter: *syncCountFilter}); err != nil {
log.Println(err)
return
} else {
table := tablewriter.NewWriter(os.Stdout)
table.SetHeader([]string{"Prefix", "Count"})
table.SetBorders(tablewriter.Border{Left: false, Top: false, Right: false, Bottom: false})

if *syncCountSubprefixes {
for _, el := range ei.N(res).SliceZ() {
table.Append([]string{ei.N(el).M("prefix").StringZ(), fmt.Sprintf("%d", ei.N(el).M("count").IntZ())})
}
} else {
table.Append([]string{*syncCountPrefix, fmt.Sprintf("%d", ei.N(res).M("count").IntZ())})
}

table.Render()
}

case chanPubJ.FullCommand():
var msg map[string]interface{}
if json.Unmarshal([]byte(*chanPubJMsg), &msg) != nil {
Expand Down

0 comments on commit 298ebc6

Please sign in to comment.