Skip to content

Commit

Permalink
Merge pull request #11 from nipsufn/fix/address
Browse files Browse the repository at this point in the history
fix: address
  • Loading branch information
flowerinthenight committed Feb 13, 2023
2 parents 093879e + deb3c07 commit c68de81
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 9 deletions.
18 changes: 11 additions & 7 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ var (
)

// Returns the kubectl args, kubectl context name, resource name, and the port pair (i.e. 8080:1222) from the input.
func parse(in string) ([]string, string, string, string) {
func parse(in string) ([]string, string, string, string, string) {
var args []string
var ctx, name, ports, address string
rctype := "pod"
Expand Down Expand Up @@ -126,7 +126,6 @@ func parse(in string) ([]string, string, string, string) {
"--no-headers=true",
fmt.Sprintf("--context=%s", ctx),
fmt.Sprintf("--namespace=%s", ns),
fmt.Sprintf("--address=%s", address),
"-o",
"custom-columns=:metadata.name,:metadata.namespace",
}
Expand All @@ -135,7 +134,7 @@ func parse(in string) ([]string, string, string, string) {
fail("skip unknown target: " + in)
}

return args, ctx, name, ports
return args, ctx, name, ports, address
}

func Run(cmd *cobra.Command, args []string) error {
Expand All @@ -153,7 +152,7 @@ func Run(cmd *cobra.Command, args []string) error {

// Range through our input targets.
for _, c := range targets {
v, ctx, name, portpair := parse(c)
v, ctx, name, portpair, address := parse(c)
if v == nil {
return fmt.Errorf("invalid target: %v", c)
}
Expand Down Expand Up @@ -185,13 +184,18 @@ func Run(cmd *cobra.Command, args []string) error {
targetList := re.FindAllString(parts[0], -1)
if len(targetList) > 0 {
var addcmd *exec.Cmd
if ctx == "" {
switch {
case ctx == "" && address == "":
addcmd = exec.Command("kubectl", "port-forward", "-n", parts[1], rctype+"/"+targetList[0], portpair)
} else {
case address == "":
addcmd = exec.Command("kubectl", "--context", ctx, "port-forward", "-n", parts[1], rctype+"/"+targetList[0], portpair)
case ctx == "":
addcmd = exec.Command("kubectl", "port-forward", "-n", parts[1], rctype+"/"+targetList[0], "--address", address, portpair)
default:
addcmd = exec.Command("kubectl", "--context", ctx, "port-forward", "-n", parts[1], rctype+"/"+targetList[0], "--address", address, portpair)
}

key := fmt.Sprintf("%s:%s:%s:%s", ctx, parts[1], name, portpair)
key := fmt.Sprintf("%s:%s:%s:%s:%s", ctx, parts[1], name, address, portpair)
if _, ok := cs[key]; !ok {
cs[key] = addcmd
}
Expand Down
7 changes: 5 additions & 2 deletions main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ type check struct {

func Test_parse(t *testing.T) {
var args []string
args, _, _, _ = parse("8080:1222")
args, _, _, _, _ = parse("8080:1222")
if args != nil {
t.Fatal("should be nil")
}
Expand All @@ -31,7 +31,7 @@ func Test_parse(t *testing.T) {
{"ctx=minikube:ns=system:deployment/name:127.0.0.2:8080:1222", "minikube", "deployment", "deployment/name", "system", "8080:1222", "127.0.0.2"},
{"ctx=minikube:system:name:8080:1222", "minikube", "pod", "name", "system", "8080:1222", ""},
} {
args, ctx, name, ports := parse(v.target)
args, ctx, name, ports, address := parse(v.target)
if ctx != v.ctx {
t.Fatalf("[%v] context should be %v, got %v", v.target, v.ctx, ctx)
}
Expand All @@ -52,5 +52,8 @@ func Test_parse(t *testing.T) {
if ports != v.ports {
t.Fatalf("[%v] ports should be %v, got %v", v.target, v.ports, ports)
}
if address != v.address {
t.Fatalf("[%v] address should be %v, got %v", v.target, v.address, address)
}
}
}

0 comments on commit c68de81

Please sign in to comment.