Skip to content

Commit

Permalink
Merge pull request #485 from ripienaar/mappings
Browse files Browse the repository at this point in the history
Support testing server mappings
  • Loading branch information
ripienaar authored Jun 3, 2022
2 parents 0d4a8f0 + b2eeefd commit 4d32be8
Show file tree
Hide file tree
Showing 4 changed files with 113 additions and 6 deletions.
1 change: 1 addition & 0 deletions cli/server_command.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ func configureServerCommand(app commandHost) {
configureServerReportCommand(srv)
configureServerRequestCommand(srv)
configureServerRaftCommand(srv)
configureServerMappingCommand(srv)
configureServerPasswdCommand(srv)
configureServerCheckCommand(srv)
configureServerRunCommand(srv)
Expand Down
101 changes: 101 additions & 0 deletions cli/server_mapping_command.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
// Copyright 2020 The NATS Authors
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package cli

import (
"fmt"

"github.com/AlecAivazis/survey/v2"
"github.com/alecthomas/kingpin"
"github.com/nats-io/nats-server/v2/server"
)

type SrvMappingCmd struct {
src string
dest string
subj string
}

func configureServerMappingCommand(srv *kingpin.CmdClause) {
c := &SrvMappingCmd{}

m := srv.Command("mappings", "Test subject mapping patterns").Alias("mapping").Action(c.mappingAction)
m.Arg("source", "Source subject pattern").StringVar(&c.src)
m.Arg("dest", "Destination subject pattern").StringVar(&c.dest)
m.Arg("subject", "Subject to transform").StringVar(&c.subj)
}

func (c *SrvMappingCmd) mappingAction(_ *kingpin.ParseContext) error {
if c.src == "" {
err := askOne(&survey.Input{
Message: "Source subject pattern",
Help: "The pattern matching source subjects",
}, &c.src, survey.WithValidator(survey.Required))
if err != nil {
return err
}
}

if c.dest == "" {
err := askOne(&survey.Input{
Message: "Destination subject pattern",
Help: "The pattern matching describing the mapping to test",
}, &c.dest, survey.WithValidator(survey.Required))
if err != nil {
return err
}
}

trans, err := server.NewSubjectTransformer(c.src, c.dest)
if err != nil {
return err
}

transAndShow := func(trans server.SubjectTransformer, subj string) {
s, err := trans.Match(subj)
if err != nil {
fmt.Printf("Error: %v\n", err)
}

fmt.Println(s)
fmt.Println()
}

if c.subj != "" {
transAndShow(trans, c.subj)
return nil
}

fmt.Println("Enter subjects to test, empty subject terminates.")
fmt.Println()

for {
c.subj = ""
err = askOne(&survey.Input{
Message: "Subject",
Help: "Enter a subject that matching source and the mapping will be shown",
}, &c.subj)
if err != nil {
return err
}

if c.subj == "" {
break
}

transAndShow(trans, c.subj)
}

return nil
}
6 changes: 3 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ require (
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
github.com/klauspost/compress v1.15.5
github.com/nats-io/jsm.go v0.0.33
github.com/nats-io/nats-server/v2 v2.8.4
github.com/nats-io/nats-server/v2 v2.8.5-0.20220603052622-d836076443f5
github.com/nats-io/nats.go v1.16.0
github.com/nats-io/nuid v1.0.1
github.com/prometheus/client_golang v1.12.2
Expand Down Expand Up @@ -44,9 +44,9 @@ require (
github.com/nats-io/nkeys v0.3.0 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/procfs v0.7.3 // indirect
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 // indirect
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11 // indirect
golang.org/x/time v0.0.0-20220411224347-583f2d630306 // indirect
google.golang.org/protobuf v1.26.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
)
11 changes: 8 additions & 3 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -210,8 +210,11 @@ github.com/nats-io/jsm.go v0.0.33 h1:mNxlZEnSiHo9BwAFpjZYuopVvtwVUdtoAana2ovyWOU
github.com/nats-io/jsm.go v0.0.33/go.mod h1:1ySvWrDbPo/Rs1v0Ccoy7QjZKBGfVhvmolfJRBX+fCg=
github.com/nats-io/jwt/v2 v2.2.1-0.20220330180145-442af02fd36a h1:lem6QCvxR0Y28gth9P+wV2K/zYUUAkJ+55U8cpS0p5I=
github.com/nats-io/jwt/v2 v2.2.1-0.20220330180145-442af02fd36a/go.mod h1:0tqz9Hlu6bCBFLWAASKhE5vUA4c24L9KPUUgvwumE/k=
github.com/nats-io/nats-server/v2 v2.8.4 h1:0jQzze1T9mECg8YZEl8+WYUXb9JKluJfCBriPUtluB4=
github.com/nats-io/nats-server/v2 v2.8.4/go.mod h1:8zZa+Al3WsESfmgSs98Fi06dRWLH5Bnq90m5bKD/eT4=
github.com/nats-io/nats-server/v2 v2.8.5-0.20220602053006-eaa100d8e87f h1:TqFAv3IQH/4gc/Hz5uHWUwCZ2MVP47+cog3PEShuHws=
github.com/nats-io/nats-server/v2 v2.8.5-0.20220602053006-eaa100d8e87f/go.mod h1:lZPG1sK+0r7tR7Q89EcpiuJnqF8y1PtYNC5Cz69RPko=
github.com/nats-io/nats-server/v2 v2.8.5-0.20220603052622-d836076443f5 h1:xJ+DOQg1kN0oeIv1fGO2zkh/AhVp6BIafPfilkYQW0o=
github.com/nats-io/nats-server/v2 v2.8.5-0.20220603052622-d836076443f5/go.mod h1:lZPG1sK+0r7tR7Q89EcpiuJnqF8y1PtYNC5Cz69RPko=
github.com/nats-io/nats.go v1.15.0/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w=
github.com/nats-io/nats.go v1.16.0 h1:zvLE7fGBQYW6MWaFaRdsgm9qT39PJDQoju+DS8KsO1g=
github.com/nats-io/nats.go v1.16.0/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w=
Expand Down Expand Up @@ -412,8 +415,9 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0=
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4ajbZsCe5lw1metzhBm9T3x7oIY=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
Expand All @@ -430,8 +434,9 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11 h1:GZokNIeuVkl3aZHJchRrr13WCsols02MLUcz1U9is6M=
golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20220411224347-583f2d630306 h1:+gHMid33q6pen7kv9xvT+JRinntgeXO2AeZVd0AWD3w=
golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
Expand Down

0 comments on commit 4d32be8

Please sign in to comment.