Skip to content

Commit 2e01ef5

Browse files
committed
CLI dev init
1 parent c27e82a commit 2e01ef5

16 files changed

Lines changed: 1354 additions & 374 deletions

File tree

backend/oidc/oidc.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"path"
2626
"time"
2727

28+
"github.com/davecgh/go-spew/spew"
2829
"github.com/gorilla/mux"
2930
"github.com/xrstf/mockoidc"
3031
)
@@ -86,6 +87,7 @@ func (s *Server) AddRoutes(mux *mux.Router) {
8687

8788
// URL returns the base URL of the embedded OIDC server.
8889
func (s *Server) Config() (*Config, error) {
90+
spew.Dump(s.server.Config())
8991
return &Config{
9092
ClientID: s.server.Config().ClientID,
9193
ClientSecret: s.server.Config().ClientSecret,

backend/options/options.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,10 @@ func (options *CompletedOptions) Validate() error {
228228
return fmt.Errorf("pretty name cannot be empty")
229229
}
230230

231+
if err := options.Serve.Validate(); err != nil {
232+
return err
233+
}
234+
231235
if err := options.OIDC.Validate(); err != nil {
232236
return err
233237
}

backend/options/serve.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ func (options *Serve) Complete() error {
5757
if options.ListenIP != "" {
5858
addr = net.JoinHostPort(options.ListenIP, strconv.Itoa(options.ListenPort))
5959
}
60-
options.Listener, err = net.Listen("tcp", addr)
60+
// We only support TCP4 for now to avoid dual stack complications in embedded OIDC server tests.
61+
options.Listener, err = net.Listen("tcp4", addr)
6162
if err != nil {
6263
return err
6364
}
@@ -66,7 +67,7 @@ func (options *Serve) Complete() error {
6667
}
6768

6869
func (options *Serve) Validate() error {
69-
if (options.ListenIP == "") != (options.ListenAddress == "") {
70+
if options.ListenIP == "" && options.ListenAddress == "" {
7071
return fmt.Errorf("either listen-ip or listen-address must be provided")
7172
}
7273
if options.CertFile == "" && options.KeyFile != "" {

cli/cmd/kubectl-bind/cmd/kubectlBind.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131
logincmd "github.com/kube-bind/kube-bind/cli/pkg/kubectl/bind-login/cmd"
3232
templatescmd "github.com/kube-bind/kube-bind/cli/pkg/kubectl/bind-templates/cmd"
3333
bindcmd "github.com/kube-bind/kube-bind/cli/pkg/kubectl/bind/cmd"
34+
devcmd "github.com/kube-bind/kube-bind/cli/pkg/kubectl/dev/cmd"
3435
)
3536

3637
func KubectlBindCommand() *cobra.Command {
@@ -78,5 +79,12 @@ func KubectlBindCommand() *cobra.Command {
7879
}
7980
rootCmd.AddCommand(collectionsCmd)
8081

82+
devCmd, err := devcmd.New(genericclioptions.IOStreams{In: os.Stdin, Out: os.Stdout, ErrOut: os.Stderr})
83+
if err != nil {
84+
fmt.Fprintf(os.Stderr, "error: %v", err)
85+
os.Exit(1)
86+
}
87+
rootCmd.AddCommand(devCmd)
88+
8189
return rootCmd
8290
}

cli/go.mod

Lines changed: 98 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -10,70 +10,109 @@ replace (
1010
require (
1111
github.com/MakeNowJust/heredoc v1.0.0
1212
github.com/blang/semver/v4 v4.0.0
13+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
1314
github.com/fatih/color v1.18.0
1415
github.com/kube-bind/kube-bind v0.0.0-00010101000000-000000000000
1516
github.com/kube-bind/kube-bind/sdk v0.4.1
1617
github.com/muesli/reflow v0.3.0
17-
github.com/spf13/cobra v1.9.1
18-
github.com/spf13/pflag v1.0.6
19-
github.com/stretchr/testify v1.10.0
20-
k8s.io/api v0.33.3
21-
k8s.io/apiextensions-apiserver v0.33.3
22-
k8s.io/apimachinery v0.33.3
23-
k8s.io/cli-runtime v0.32.0
24-
k8s.io/client-go v0.33.3
25-
k8s.io/component-base v0.33.3
18+
github.com/spf13/cobra v1.10.1
19+
github.com/spf13/pflag v1.0.9
20+
github.com/stretchr/testify v1.11.1
21+
helm.sh/helm/v3 v3.19.0
22+
k8s.io/api v0.34.0
23+
k8s.io/apiextensions-apiserver v0.34.0
24+
k8s.io/apimachinery v0.34.0
25+
k8s.io/cli-runtime v0.34.0
26+
k8s.io/client-go v0.34.0
27+
k8s.io/component-base v0.34.0
2628
k8s.io/klog/v2 v2.130.1
27-
sigs.k8s.io/yaml v1.4.0
29+
sigs.k8s.io/e2e-framework v0.6.0
30+
sigs.k8s.io/kind v0.30.0
31+
sigs.k8s.io/yaml v1.6.0
2832
)
2933

3034
require (
31-
cel.dev/expr v0.19.1 // indirect
32-
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
35+
al.essio.dev/pkg/shellescape v1.5.1 // indirect
36+
cel.dev/expr v0.24.0 // indirect
37+
dario.cat/mergo v1.0.1 // indirect
38+
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect
39+
github.com/BurntSushi/toml v1.5.0 // indirect
40+
github.com/Masterminds/goutils v1.1.1 // indirect
41+
github.com/Masterminds/semver/v3 v3.4.0 // indirect
42+
github.com/Masterminds/sprig/v3 v3.3.0 // indirect
43+
github.com/Masterminds/squirrel v1.5.4 // indirect
3344
github.com/NYTimes/gziphandler v1.1.1 // indirect
3445
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
46+
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
3547
github.com/beorn7/perks v1.0.1 // indirect
3648
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
3749
github.com/cespare/xxhash/v2 v2.3.0 // indirect
50+
github.com/chai2010/gettext-go v1.0.2 // indirect
51+
github.com/containerd/containerd v1.7.28 // indirect
52+
github.com/containerd/errdefs v0.3.0 // indirect
53+
github.com/containerd/log v0.1.0 // indirect
54+
github.com/containerd/platforms v0.2.1 // indirect
3855
github.com/coreos/go-semver v0.3.1 // indirect
3956
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
40-
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
41-
github.com/emicklei/go-restful/v3 v3.12.1 // indirect
57+
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
58+
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
59+
github.com/evanphx/json-patch v5.9.11+incompatible // indirect
60+
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
61+
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect
4262
github.com/felixge/httpsnoop v1.0.4 // indirect
43-
github.com/fsnotify/fsnotify v1.7.0 // indirect
44-
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
63+
github.com/fsnotify/fsnotify v1.9.0 // indirect
64+
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
4565
github.com/go-errors/errors v1.4.2 // indirect
66+
github.com/go-gorp/gorp/v3 v3.1.0 // indirect
4667
github.com/go-logr/logr v1.4.2 // indirect
4768
github.com/go-logr/stdr v1.2.2 // indirect
4869
github.com/go-openapi/jsonpointer v0.21.0 // indirect
4970
github.com/go-openapi/jsonreference v0.21.0 // indirect
5071
github.com/go-openapi/swag v0.23.0 // indirect
72+
github.com/gobwas/glob v0.2.3 // indirect
5173
github.com/gogo/protobuf v1.3.2 // indirect
5274
github.com/golang/protobuf v1.5.4 // indirect
5375
github.com/google/btree v1.1.3 // indirect
54-
github.com/google/cel-go v0.23.2 // indirect
55-
github.com/google/gnostic-models v0.6.9 // indirect
76+
github.com/google/cel-go v0.26.0 // indirect
77+
github.com/google/gnostic-models v0.7.0 // indirect
5678
github.com/google/go-cmp v0.7.0 // indirect
57-
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
5879
github.com/google/uuid v1.6.0 // indirect
80+
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
81+
github.com/gosuri/uitable v0.0.4 // indirect
5982
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect
6083
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
61-
github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 // indirect
84+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect
85+
github.com/hashicorp/errwrap v1.1.0 // indirect
86+
github.com/hashicorp/go-multierror v1.1.1 // indirect
87+
github.com/huandu/xstrings v1.5.0 // indirect
6288
github.com/inconshreveable/mousetrap v1.1.0 // indirect
89+
github.com/jmoiron/sqlx v1.4.0 // indirect
6390
github.com/josharian/intern v1.0.0 // indirect
6491
github.com/json-iterator/go v1.1.12 // indirect
92+
github.com/klauspost/compress v1.18.0 // indirect
6593
github.com/kylelemons/godebug v1.1.0 // indirect
94+
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect
95+
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect
96+
github.com/lib/pq v1.10.9 // indirect
6697
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect
6798
github.com/mailru/easyjson v0.9.0 // indirect
6899
github.com/mattn/go-colorable v0.1.13 // indirect
69100
github.com/mattn/go-isatty v0.0.20 // indirect
70101
github.com/mattn/go-runewidth v0.0.12 // indirect
71-
github.com/moby/term v0.5.0 // indirect
102+
github.com/mitchellh/copystructure v1.2.0 // indirect
103+
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
104+
github.com/mitchellh/reflectwalk v1.0.2 // indirect
105+
github.com/moby/spdystream v0.5.0 // indirect
106+
github.com/moby/term v0.5.2 // indirect
72107
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
73-
github.com/modern-go/reflect2 v1.0.2 // indirect
108+
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
74109
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
75110
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
111+
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
76112
github.com/onsi/gomega v1.36.2 // indirect
113+
github.com/opencontainers/go-digest v1.0.0 // indirect
114+
github.com/opencontainers/image-spec v1.1.1 // indirect
115+
github.com/pelletier/go-toml v1.9.5 // indirect
77116
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
78117
github.com/pkg/errors v0.9.1 // indirect
79118
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
@@ -82,47 +121,58 @@ require (
82121
github.com/prometheus/common v0.62.0 // indirect
83122
github.com/prometheus/procfs v0.15.1 // indirect
84123
github.com/rivo/uniseg v0.2.0 // indirect
124+
github.com/rubenv/sql-migrate v1.8.0 // indirect
125+
github.com/russross/blackfriday/v2 v2.1.0 // indirect
126+
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect
127+
github.com/shopspring/decimal v1.4.0 // indirect
128+
github.com/sirupsen/logrus v1.9.3 // indirect
129+
github.com/spf13/cast v1.7.0 // indirect
85130
github.com/stoewer/go-strcase v1.3.0 // indirect
86131
github.com/x448/float16 v0.8.4 // indirect
87132
github.com/xlab/treeprint v1.2.0 // indirect
88-
go.etcd.io/etcd/api/v3 v3.5.21 // indirect
89-
go.etcd.io/etcd/client/pkg/v3 v3.5.21 // indirect
90-
go.etcd.io/etcd/client/v3 v3.5.21 // indirect
133+
go.etcd.io/etcd/api/v3 v3.6.4 // indirect
134+
go.etcd.io/etcd/client/pkg/v3 v3.6.4 // indirect
135+
go.etcd.io/etcd/client/v3 v3.6.4 // indirect
91136
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
92-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 // indirect
137+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect
93138
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect
94-
go.opentelemetry.io/otel v1.33.0 // indirect
95-
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 // indirect
96-
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0 // indirect
97-
go.opentelemetry.io/otel/metric v1.33.0 // indirect
98-
go.opentelemetry.io/otel/sdk v1.33.0 // indirect
99-
go.opentelemetry.io/otel/trace v1.33.0 // indirect
139+
go.opentelemetry.io/otel v1.35.0 // indirect
140+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect
141+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect
142+
go.opentelemetry.io/otel/metric v1.35.0 // indirect
143+
go.opentelemetry.io/otel/sdk v1.34.0 // indirect
144+
go.opentelemetry.io/otel/trace v1.35.0 // indirect
100145
go.opentelemetry.io/proto/otlp v1.5.0 // indirect
101146
go.uber.org/multierr v1.11.0 // indirect
102147
go.uber.org/zap v1.27.0 // indirect
103-
golang.org/x/crypto v0.38.0 // indirect
148+
go.yaml.in/yaml/v2 v2.4.2 // indirect
149+
go.yaml.in/yaml/v3 v3.0.4 // indirect
150+
golang.org/x/crypto v0.41.0 // indirect
104151
golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 // indirect
105-
golang.org/x/net v0.40.0 // indirect
106-
golang.org/x/oauth2 v0.29.0 // indirect
107-
golang.org/x/sync v0.14.0 // indirect
108-
golang.org/x/sys v0.33.0 // indirect
109-
golang.org/x/term v0.32.0 // indirect
110-
golang.org/x/text v0.25.0 // indirect
111-
golang.org/x/time v0.11.0 // indirect
112-
google.golang.org/genproto/googleapis/api v0.0.0-20250106144421-5f5ef82da422 // indirect
113-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250106144421-5f5ef82da422 // indirect
114-
google.golang.org/grpc v1.70.0 // indirect
152+
golang.org/x/net v0.42.0 // indirect
153+
golang.org/x/oauth2 v0.30.0 // indirect
154+
golang.org/x/sync v0.16.0 // indirect
155+
golang.org/x/sys v0.35.0 // indirect
156+
golang.org/x/term v0.34.0 // indirect
157+
golang.org/x/text v0.28.0 // indirect
158+
golang.org/x/time v0.12.0 // indirect
159+
google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect
160+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect
161+
google.golang.org/grpc v1.72.1 // indirect
115162
google.golang.org/protobuf v1.36.5 // indirect
116163
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
117164
gopkg.in/inf.v0 v0.9.1 // indirect
118165
gopkg.in/yaml.v3 v3.0.1 // indirect
119-
k8s.io/apiserver v0.33.3 // indirect
120-
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect
166+
k8s.io/apiserver v0.34.0 // indirect
167+
k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
168+
k8s.io/kubectl v0.34.0 // indirect
121169
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect
170+
oras.land/oras-go/v2 v2.6.0 // indirect
122171
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 // indirect
172+
sigs.k8s.io/controller-runtime v0.21.0 // indirect
123173
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
124-
sigs.k8s.io/kustomize/api v0.19.0 // indirect
125-
sigs.k8s.io/kustomize/kyaml v0.19.0 // indirect
174+
sigs.k8s.io/kustomize/api v0.20.1 // indirect
175+
sigs.k8s.io/kustomize/kyaml v0.20.1 // indirect
126176
sigs.k8s.io/randfill v1.0.0 // indirect
127-
sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect
177+
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
128178
)

0 commit comments

Comments
 (0)