Skip to content

Commit

Permalink
Merge pull request #1053 from ripienaar/util_cleanup
Browse files Browse the repository at this point in the history
Start clearing out unanchored funcs from cli package
  • Loading branch information
ripienaar committed May 2, 2024
2 parents e45eb20 + f5acfff commit 249cc57
Show file tree
Hide file tree
Showing 24 changed files with 298 additions and 369 deletions.
2 changes: 1 addition & 1 deletion cli/auth_account_command.go
Original file line number Diff line number Diff line change
Expand Up @@ -564,7 +564,7 @@ func (c *authAccountCommand) showSk(limits ab.ScopeLimits) (string, error) {
cols.AddRow("Key", limits.Key())
cols.AddRow("Role", limits.Role())

err := renderUserLimits(limits, cols)
err := au.RenderUserLimits(limits, cols)
if err != nil {
return "", err
}
Expand Down
74 changes: 4 additions & 70 deletions cli/auth_command.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,9 @@ package cli
import (
"errors"
"fmt"
"github.com/synadia-io/jwt-auth-builder.go/providers/nsc"
"path/filepath"
"strings"

"github.com/AlecAivazis/survey/v2"
"github.com/nats-io/natscli/columns"
au "github.com/nats-io/natscli/internal/auth"
iu "github.com/nats-io/natscli/internal/util"
ab "github.com/synadia-io/jwt-auth-builder.go"
)

Expand All @@ -45,17 +41,8 @@ func init() {
registerCommand("auth", 0, configureAuthCommand)
}

func getAuthBuilder() (*ab.AuthImpl, error) {
storeDir, err := nscStore()
if err != nil {
return nil, err
}

return ab.NewAuth(nsc.NewNscProvider(filepath.Join(storeDir, "stores"), filepath.Join(storeDir, "keys")))
}

func selectOperator(operatorName string, pick bool, useSelected bool) (*ab.AuthImpl, ab.Operator, error) {
auth, err := getAuthBuilder()
auth, err := au.GetAuthBuilder()
if err != nil {
return nil, nil, err
}
Expand All @@ -79,7 +66,7 @@ func selectOperator(operatorName string, pick bool, useSelected bool) (*ab.AuthI
return auth, operators[0], nil
}

if !isTerminal() {
if !iu.IsTerminal() {
return nil, nil, fmt.Errorf("cannot pick an Operator without a terminal and no operator name supplied")
}

Expand Down Expand Up @@ -119,7 +106,7 @@ func selectOperatorAccount(operatorName string, accountName string, pick bool) (
return nil, nil, nil, fmt.Errorf("unknown Account: %v", accountName)
}

if !isTerminal() {
if !iu.IsTerminal() {
return nil, nil, nil, fmt.Errorf("cannot pick an Account without a terminal and no Account name supplied")
}

Expand All @@ -143,56 +130,3 @@ func selectOperatorAccount(operatorName string, accountName string, pick bool) (

return auth, operator, acct, nil
}

func renderUserLimits(limits ab.UserLimits, cols *columns.Writer) error {
cols.AddRowIfNotEmpty("Locale", limits.Locale())
cols.AddRow("Bearer Token", limits.BearerToken())

cols.AddSectionTitle("Limits")

cols.AddRowUnlimited("Max Payload", limits.MaxPayload(), -1)
cols.AddRowUnlimited("Max Data", limits.MaxData(), -1)
cols.AddRowUnlimited("Max Subscriptions", limits.MaxSubscriptions(), -1)
cols.AddRowIfNotEmpty("Connection Types", strings.Join(limits.ConnectionTypes().Types(), ", "))
cols.AddRowIfNotEmpty("Connection Sources", strings.Join(limits.ConnectionSources().Sources(), ", "))

ctimes := limits.ConnectionTimes().List()
if len(ctimes) > 0 {
ranges := []string{}
for _, tr := range ctimes {
ranges = append(ranges, fmt.Sprintf("%s to %s", tr.Start, tr.End))
}
cols.AddStringsAsValue("Connection Times", ranges)
}

cols.AddSectionTitle("Permissions")
cols.Indent(2)
cols.AddSectionTitle("Publish")
if len(limits.PubPermissions().Allow()) > 0 || len(limits.PubPermissions().Deny()) > 0 {
if len(limits.PubPermissions().Allow()) > 0 {
cols.AddStringsAsValue("Allow", limits.PubPermissions().Allow())
}
if len(limits.PubPermissions().Deny()) > 0 {
cols.AddStringsAsValue("Deny", limits.PubPermissions().Deny())
}
} else {
cols.Println("No permissions defined")
}

cols.AddSectionTitle("Subscribe")
if len(limits.SubPermissions().Allow()) > 0 || len(limits.SubPermissions().Deny()) > 0 {
if len(limits.SubPermissions().Allow()) > 0 {
cols.AddStringsAsValue("Allow", limits.SubPermissions().Allow())
}

if len(limits.SubPermissions().Deny()) > 0 {
cols.AddStringsAsValue("Deny", limits.SubPermissions().Deny())
}
} else {
cols.Println("No permissions defined")
}

cols.Indent(0)

return nil
}
11 changes: 6 additions & 5 deletions cli/auth_nkey_command.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"encoding/base64"
"errors"
"fmt"
iu "github.com/nats-io/natscli/internal/util"
"os"
"strings"

Expand Down Expand Up @@ -76,7 +77,7 @@ func configureAuthNkeyCommand(auth commandHost) {
}

func (c *authNKCommand) showAction(_ *fisk.ParseContext) error {
seed, err := readKeyFile(c.keyFile)
seed, err := iu.ReadKeyFile(c.keyFile)
if err != nil {
return err
}
Expand Down Expand Up @@ -176,7 +177,7 @@ func (c *authNKCommand) preForType(keyType string) (nkeys.PrefixByte, error) {
}

func (c *authNKCommand) signAction(_ *fisk.ParseContext) error {
seed, err := readKeyFile(c.keyFile)
seed, err := iu.ReadKeyFile(c.keyFile)
if err != nil {
return err
}
Expand Down Expand Up @@ -205,7 +206,7 @@ func (c *authNKCommand) verifyAction(_ *fisk.ParseContext) error {
var err error
var kp nkeys.KeyPair

keyData, err := readKeyFile(c.keyFile)
keyData, err := iu.ReadKeyFile(c.keyFile)
if err != nil {
return err
}
Expand Down Expand Up @@ -244,7 +245,7 @@ func (c *authNKCommand) verifyAction(_ *fisk.ParseContext) error {
}

func (c *authNKCommand) sealAction(_ *fisk.ParseContext) error {
keyData, err := readKeyFile(c.keyFile)
keyData, err := iu.ReadKeyFile(c.keyFile)
if err != nil {
return err
}
Expand Down Expand Up @@ -295,7 +296,7 @@ func (c *authNKCommand) sealAction(_ *fisk.ParseContext) error {
}

func (c *authNKCommand) unsealAction(_ *fisk.ParseContext) error {
keyData, err := readKeyFile(c.keyFile)
keyData, err := iu.ReadKeyFile(c.keyFile)
if err != nil {
return err
}
Expand Down
13 changes: 7 additions & 6 deletions cli/auth_operator_command.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"github.com/choria-io/appbuilder/forms"
"github.com/ghodss/yaml"
au "github.com/nats-io/natscli/internal/auth"
iu "github.com/nats-io/natscli/internal/util"
"io"
"net/url"
"os"
Expand Down Expand Up @@ -274,7 +275,7 @@ func (c *authOperatorCommand) skListAction(_ *fisk.ParseContext) error {
}

func (c *authOperatorCommand) importAction(_ *fisk.ParseContext) error {
auth, err := getAuthBuilder()
auth, err := au.GetAuthBuilder()
if err != nil {
return err
}
Expand Down Expand Up @@ -364,7 +365,7 @@ func (c *authOperatorCommand) editAction(_ *fisk.ParseContext) error {
return c.fShowOperator(os.Stdout, operator)
}
func (c *authOperatorCommand) restoreAction(_ *fisk.ParseContext) error {
auth, err := getAuthBuilder()
auth, err := au.GetAuthBuilder()
if err != nil {
return err
}
Expand All @@ -379,7 +380,7 @@ func (c *authOperatorCommand) restoreAction(_ *fisk.ParseContext) error {
}

if c.encKey != "" {
keyData, err := readKeyFile(c.encKey)
keyData, err := iu.ReadKeyFile(c.encKey)
if err != nil {
return err
}
Expand Down Expand Up @@ -438,7 +439,7 @@ func (c *authOperatorCommand) backupAction(_ *fisk.ParseContext) error {
}

if c.encKey != "" {
keyData, err := readKeyFile(c.encKey)
keyData, err := iu.ReadKeyFile(c.encKey)
if err != nil {
return err
}
Expand Down Expand Up @@ -488,7 +489,7 @@ func (c *authOperatorCommand) infoAction(_ *fisk.ParseContext) error {
}

func (c *authOperatorCommand) lsAction(_ *fisk.ParseContext) error {
auth, err := getAuthBuilder()
auth, err := au.GetAuthBuilder()
if err != nil {
return err
}
Expand Down Expand Up @@ -527,7 +528,7 @@ func (c *authOperatorCommand) addAction(_ *fisk.ParseContext) error {
}
}

auth, err := getAuthBuilder()
auth, err := au.GetAuthBuilder()
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion cli/auth_user_command.go
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,7 @@ func (c *authUserCommand) showUser(user ab.User, acct ab.Account) (string, error
limits = scope
}

err := renderUserLimits(limits, cols)
err := au.RenderUserLimits(limits, cols)
if err != nil {
return "", err
}
Expand Down
5 changes: 3 additions & 2 deletions cli/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package cli
import (
"encoding/json"
"fmt"
iu "github.com/nats-io/natscli/internal/util"
"os"
"path/filepath"
)
Expand All @@ -12,7 +13,7 @@ type config struct {
}

func loadConfig() (*config, error) {
parent, err := configDir()
parent, err := iu.ConfigDir()
if err != nil {
return nil, fmt.Errorf("could not determine configuration directory: %w", err)
}
Expand All @@ -37,7 +38,7 @@ func loadConfig() (*config, error) {
}

func saveConfig(cfg *config) error {
parent, err := configDir()
parent, err := iu.ConfigDir()
if err != nil {
return err
}
Expand Down
21 changes: 11 additions & 10 deletions cli/consumer_command.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"context"
"encoding/json"
"fmt"
iu "github.com/nats-io/natscli/internal/util"
"io"
"math"
"math/rand"
Expand Down Expand Up @@ -519,7 +520,7 @@ func (c *consumerCmd) lsAction(pc *fisk.ParseContext) error {
fisk.FatalIfError(err, "could not load Consumers")

if c.json {
err = printJSON(consumers)
err = iu.PrintJSON(consumers)
fisk.FatalIfError(err, "could not display Consumers")
return nil
}
Expand Down Expand Up @@ -583,7 +584,7 @@ func (c *consumerCmd) renderBackoff(bo []time.Duration) string {

func (c *consumerCmd) showInfo(config api.ConsumerConfig, state api.ConsumerInfo) {
if c.json {
printJSON(state)
iu.PrintJSON(state)
return
}

Expand Down Expand Up @@ -806,7 +807,7 @@ func (c *consumerCmd) setStartPolicy(cfg *api.ConsumerConfig, policy string) {
cfg.DeliverPolicy = api.DeliverByStartSequence
cfg.OptStartSeq = uint64(seq)
} else {
d, err := parseDurationString(policy)
d, err := fisk.ParseDuration(policy)
fisk.FatalIfError(err, "could not parse starting delta")
t := time.Now().UTC().Add(-d)
cfg.DeliverPolicy = api.DeliverByStartTime
Expand Down Expand Up @@ -876,7 +877,7 @@ func (c *consumerCmd) cpAction(pc *fisk.ParseContext) (err error) {
}

if c.idleHeartbeat != "" && c.idleHeartbeat != "-1" {
hb, err := parseDurationString(c.idleHeartbeat)
hb, err := fisk.ParseDuration(c.idleHeartbeat)
fisk.FatalIfError(err, "Invalid heartbeat duration")
cfg.Heartbeat = hb
}
Expand Down Expand Up @@ -1200,7 +1201,7 @@ func (c *consumerCmd) prepareConfig(pc *fisk.ParseContext) (cfg *api.ConsumerCon
if c.idleHeartbeat == "-1" {
cfg.Heartbeat = 0
} else if c.idleHeartbeat != "" {
cfg.Heartbeat, err = parseDurationString(c.idleHeartbeat)
cfg.Heartbeat, err = fisk.ParseDuration(c.idleHeartbeat)
fisk.FatalIfError(err, "invalid heartbeat duration")
} else {
idle := "0s"
Expand All @@ -1210,7 +1211,7 @@ func (c *consumerCmd) prepareConfig(pc *fisk.ParseContext) (cfg *api.ConsumerCon
Default: "0s",
}, &idle)
fisk.FatalIfError(err, "could not ask for idle heartbeat")
cfg.Heartbeat, err = parseDurationString(idle)
cfg.Heartbeat, err = fisk.ParseDuration(idle)
fisk.FatalIfError(err, "invalid heartbeat duration")
}
}
Expand Down Expand Up @@ -1312,7 +1313,7 @@ func (c *consumerCmd) parsePauseUntil(until string) (time.Time, error) {

ts, err = time.Parse(time.DateTime, until)
if err != nil {
dur, err := parseDurationString(until)
dur, err := fisk.ParseDuration(until)
if err != nil {
return ts, fmt.Errorf("could not parse the pause time as either timestamp or duration")
}
Expand Down Expand Up @@ -1423,7 +1424,7 @@ func (c *consumerCmd) askBackoffPolicy() error {
if err != nil {
return err
}
c.backoffMin, err = parseDurationString(d)
c.backoffMin, err = fisk.ParseDuration(d)
if err != nil {
return err
}
Expand All @@ -1436,7 +1437,7 @@ func (c *consumerCmd) askBackoffPolicy() error {
if err != nil {
return err
}
c.backoffMax, err = parseDurationString(d)
c.backoffMax, err = fisk.ParseDuration(d)
if err != nil {
return err
}
Expand Down Expand Up @@ -1868,7 +1869,7 @@ func (c *consumerCmd) renderMissing(out io.Writer, missing []string) {
fmt.Fprintln(out)
sort.Strings(missing)
table := newTableWriter("Inaccessible Consumers")
sliceGroups(missing, 4, func(names []string) {
iu.SliceGroups(missing, 4, func(names []string) {
table.AddRow(toany(names)...)
})
fmt.Fprint(out, table.Render())
Expand Down
5 changes: 3 additions & 2 deletions cli/context_command.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"bytes"
"encoding/json"
"fmt"
iu "github.com/nats-io/natscli/internal/util"
"os"
"os/exec"
"sort"
Expand Down Expand Up @@ -360,7 +361,7 @@ func (c *ctxCommand) renderListJson(current string, known []*natscontext.Context
return known[i].Name < known[j].Name
})

printJSON(known)
iu.PrintJSON(known)
}

func (c *ctxCommand) renderListCompletion(current string, known []*natscontext.Context) {
Expand Down Expand Up @@ -441,7 +442,7 @@ func (c *ctxCommand) showCommand(_ *fisk.ParseContext) error {
}

if c.json {
printJSON(cfg)
iu.PrintJSON(cfg)
return nil
}

Expand Down

0 comments on commit 249cc57

Please sign in to comment.