Skip to content

Commit 6b55b72

Browse files
authored
fix: shrink the CLI binary by 36% (#449)
The CLI imported Hydra, Kratos and Keto command packages that mixed API-only commands with server commands. Go resolves dependencies per package, so importing a single API command linked the whole server - database drivers, migrations and every social sign-in SDK - into the binary. Those packages were split upstream. Bumping to the split versions drops the binary from 57.6 MB to 37.0 MB and removes 115 modules from the dependency tree, with no change to any command. Also stop registering Kratos' `--endpoint` flag on the Hydra-backed OAuth2 commands. It was only there to declare a flag named `endpoint`, which put "The URL of Ory Kratos' Admin API" in the help text of `ory get jwk` and friends, and it linked the Kratos server. The wrapped Hydra commands read the flag through cmdx.NewClient, so register it via cmdx instead. The flag itself is unchanged.
1 parent 107a5e9 commit 6b55b72

3 files changed

Lines changed: 34 additions & 247 deletions

File tree

cmd/cloudx/oauth2/jwks.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ package oauth2
66
import (
77
"github.com/spf13/cobra"
88

9-
"github.com/ory/kratos/cmd/cliclient"
10-
119
"github.com/ory/cli/cmd/cloudx/client"
1210
hydra "github.com/ory/hydra/v2/cmd"
1311
"github.com/ory/x/cmdx"
@@ -18,7 +16,10 @@ func wrapHydraCmd(newCmd func() *cobra.Command) *cobra.Command {
1816
client.RegisterProjectFlag(c.Flags())
1917
client.RegisterWorkspaceFlag(c.Flags())
2018
cmdx.RegisterFormatFlags(c.Flags())
21-
cliclient.RegisterClientFlags(c.Flags())
19+
// The wrapped Hydra commands resolve their endpoint through
20+
// cmdx.NewClient, which reads this flag. Register it here rather than
21+
// pulling in Kratos' cliclient, which drags the whole Kratos server in.
22+
c.Flags().StringP(cmdx.FlagEndpoint, cmdx.FlagEndpoint[:1], "", "The API URL this command should target. Alternatively set using the ORY_SDK_URL environmental variable.")
2223
return c
2324
}
2425

go.mod

Lines changed: 6 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ require (
2121
github.com/ory/graceful v0.2.0
2222
github.com/ory/herodot v0.10.9-0.20260330111132-da75ef0fbc22
2323
github.com/ory/hydra-client-go/v2 v2.4.0-alpha.1.0.20251107123905-f3d35665821b
24-
github.com/ory/hydra/v2 v2.3.1-0.20260727152228-962ddb5de40a
24+
github.com/ory/hydra/v2 v2.3.1-0.20260729093009-4174065ffb05
2525
github.com/ory/jsonschema/v3 v3.0.9-0.20250317235931-280c5fc7bf0e
26-
github.com/ory/keto v0.14.1-0.20260609063042-5da3a68a58d9
27-
github.com/ory/kratos v1.3.1-0.20260709105504-7b4ac2b73600
28-
github.com/ory/x v0.0.730-0.20260727152226-615c3d55f207
26+
github.com/ory/keto v0.14.1-0.20260729093002-f50b4892b31d
27+
github.com/ory/kratos v1.3.1-0.20260729093036-b86338da04a0
28+
github.com/ory/x v0.0.730-0.20260729093043-56240a017fde
2929
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
3030
github.com/pkg/errors v0.9.1
3131
github.com/rs/cors v1.11.1
@@ -44,113 +44,56 @@ require (
4444
require (
4545
cloud.google.com/go/compute/metadata v0.9.0 // indirect
4646
code.dny.dev/ssrf v0.2.0 // indirect
47-
connectrpc.com/connect v1.20.0 // indirect
48-
filippo.io/edwards25519 v1.2.0 // indirect
4947
github.com/Masterminds/goutils v1.1.1 // indirect
5048
github.com/Masterminds/sprig/v3 v3.3.0 // indirect
51-
github.com/Microsoft/go-winio v0.6.2 // indirect
5249
github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 // indirect
5350
github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f // indirect
5451
github.com/ProtonMail/gopenpgp/v2 v2.7.5 // indirect
55-
github.com/ThalesGroup/crypto11 v1.4.1 // indirect
5652
github.com/XSAM/otelsql v0.42.0 // indirect
57-
github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 // indirect
58-
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
5953
github.com/avast/retry-go/v4 v4.7.0 // indirect
60-
github.com/aymerick/douceur v0.2.0 // indirect
6154
github.com/beorn7/perks v1.0.1 // indirect
6255
github.com/boombuler/barcode v1.1.0 // indirect
6356
github.com/bwmarrin/discordgo v0.29.0 // indirect
64-
github.com/cenkalti/backoff v2.2.1+incompatible // indirect
65-
github.com/cenkalti/backoff/v3 v3.2.2 // indirect
6657
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
6758
github.com/cespare/xxhash/v2 v2.3.0 // indirect
6859
github.com/cloudflare/circl v1.6.3 // indirect
69-
github.com/cockroachdb/cockroach-go/v2 v2.4.3 // indirect
70-
github.com/containerd/errdefs v1.0.0 // indirect
71-
github.com/containerd/errdefs/pkg v0.3.0 // indirect
7260
github.com/coreos/go-oidc/v3 v3.18.0 // indirect
73-
github.com/cristalhq/jwt/v4 v4.0.2 // indirect
7461
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
7562
github.com/deckarep/golang-set/v2 v2.8.0 // indirect
7663
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.1 // indirect
77-
github.com/dghubble/oauth1 v0.7.3 // indirect
7864
github.com/dgraph-io/ristretto/v2 v2.4.0 // indirect
79-
github.com/distribution/reference v0.6.0 // indirect
80-
github.com/docker/go-connections v0.7.0 // indirect
81-
github.com/docker/go-units v0.5.0 // indirect
8265
github.com/dustin/go-humanize v1.0.1 // indirect
8366
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
84-
github.com/fatih/color v1.19.0 // indirect
85-
github.com/fatih/structs v1.1.0 // indirect
8667
github.com/felixge/fgprof v0.9.5 // indirect
8768
github.com/felixge/httpsnoop v1.0.4 // indirect
8869
github.com/fsnotify/fsnotify v1.10.1 // indirect
89-
github.com/fxamacker/cbor/v2 v2.9.2 // indirect
9070
github.com/go-crypt/crypt v0.4.14 // indirect
91-
github.com/go-crypt/x v0.4.15 // indirect
9271
github.com/go-faker/faker/v4 v4.7.0 // indirect
93-
github.com/go-jose/go-jose/v4 v4.1.4 // indirect
9472
github.com/go-logr/logr v1.4.3 // indirect
9573
github.com/go-logr/stdr v1.2.2 // indirect
96-
github.com/go-openapi/errors v0.22.7 // indirect
9774
github.com/go-openapi/jsonpointer v0.23.1 // indirect
9875
github.com/go-openapi/strfmt v0.26.2 // indirect
9976
github.com/go-openapi/swag/jsonname v0.26.0 // indirect
100-
github.com/go-sql-driver/mysql v1.10.0 // indirect
10177
github.com/go-stack/stack v1.8.1 // indirect
102-
github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
10378
github.com/go-webauthn/webauthn v0.17.3 // indirect
104-
github.com/go-webauthn/x v0.2.5 // indirect
105-
github.com/gobuffalo/envy v1.10.2 // indirect
106-
github.com/gobuffalo/fizz v1.14.4 // indirect
107-
github.com/gobuffalo/flect v1.0.3 // indirect
108-
github.com/gobuffalo/github_flavored_markdown v1.1.4 // indirect
109-
github.com/gobuffalo/helpers v0.6.10 // indirect
110-
github.com/gobuffalo/nulls v0.4.2 // indirect
111-
github.com/gobuffalo/plush/v4 v4.1.22 // indirect
11279
github.com/gobuffalo/plush/v5 v5.0.11 // indirect
113-
github.com/gobuffalo/tags/v3 v3.1.4 // indirect
114-
github.com/gobuffalo/validate/v3 v3.3.3 // indirect
11580
github.com/gobwas/glob v0.2.3 // indirect
11681
github.com/goccy/go-json v0.10.6 // indirect
11782
github.com/goccy/go-yaml v1.19.2 // indirect
118-
github.com/gofrs/flock v0.13.0 // indirect
11983
github.com/gogo/googleapis v1.4.1 // indirect
12084
github.com/gogo/protobuf v1.3.2 // indirect
121-
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
122-
github.com/golang-jwt/jwt/v5 v5.3.1 // indirect
12385
github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f // indirect
124-
github.com/google/go-github/v38 v38.1.0 // indirect
12586
github.com/google/go-jsonnet v0.22.0 // indirect
126-
github.com/google/go-querystring v1.2.0 // indirect
127-
github.com/google/go-tpm v0.9.8 // indirect
12887
github.com/google/pprof v0.0.0-20260507013755-92041b743c96 // indirect
12988
github.com/google/uuid v1.6.0 // indirect
130-
github.com/gorilla/css v1.0.1 // indirect
131-
github.com/gorilla/securecookie v1.1.2 // indirect
132-
github.com/gorilla/sessions v1.4.0 // indirect
133-
github.com/gorilla/websocket v1.5.3 // indirect
134-
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect
13589
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
13690
github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect
13791
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
138-
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
139-
github.com/hashicorp/hcl v1.0.0 // indirect
14092
github.com/huandu/xstrings v1.5.0 // indirect
14193
github.com/inconshreveable/mousetrap v1.1.0 // indirect
142-
github.com/inhies/go-bytesize v0.0.0-20220417184213-4913239db9cf // indirect
143-
github.com/jackc/pgpassfile v1.0.0 // indirect
144-
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
145-
github.com/jackc/pgx/v5 v5.10.0 // indirect
14694
github.com/jackc/puddle/v2 v2.2.2 // indirect
14795
github.com/jaegertracing/jaeger-idl v0.9.0 // indirect
148-
github.com/jmoiron/sqlx v1.4.0 // indirect
149-
github.com/joho/godotenv v1.5.1 // indirect
150-
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
151-
github.com/knadh/koanf/maps v0.1.2 // indirect
15296
github.com/knadh/koanf/parsers/json v1.0.0 // indirect
153-
github.com/knadh/koanf/parsers/toml v0.1.0 // indirect
15497
github.com/knadh/koanf/parsers/yaml v1.1.0 // indirect
15598
github.com/knadh/koanf/providers/posflag v1.0.1 // indirect
15699
github.com/knadh/koanf/v2 v2.3.4 // indirect
@@ -162,84 +105,41 @@ require (
162105
github.com/lestrrat-go/jwx v1.2.31 // indirect
163106
github.com/lestrrat-go/option v1.0.1 // indirect
164107
github.com/lib/pq v1.12.3 // indirect
165-
github.com/magiconair/properties v1.8.9 // indirect
166-
github.com/mattn/go-colorable v0.1.14 // indirect
167-
github.com/mattn/go-isatty v0.0.22 // indirect
168-
github.com/mattn/goveralls v0.0.12 // indirect
169-
github.com/microcosm-cc/bluemonday v1.0.27 // indirect
170-
github.com/miekg/pkcs11 v1.1.1 // indirect
171108
github.com/mitchellh/copystructure v1.2.0 // indirect
172-
github.com/mitchellh/mapstructure v1.5.0 // indirect
173109
github.com/mitchellh/reflectwalk v1.0.2 // indirect
174-
github.com/moby/docker-image-spec v1.3.1 // indirect
175-
github.com/moby/moby/api v1.54.2 // indirect
176-
github.com/moby/moby/client v0.4.1 // indirect
177-
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
178110
github.com/montanaflynn/stats v0.9.0 // indirect
179111
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
180-
github.com/ncruces/go-strftime v1.0.0 // indirect
181112
github.com/nyaruka/phonenumbers v1.7.4 // indirect
182113
github.com/oasdiff/yaml v0.1.1 // indirect
183114
github.com/oasdiff/yaml3 v0.0.14 // indirect
184-
github.com/oklog/ulid/v2 v2.1.1 // indirect
185-
github.com/opencontainers/go-digest v1.0.0 // indirect
186-
github.com/opencontainers/image-spec v1.1.1 // indirect
187115
github.com/openzipkin/zipkin-go v0.4.3 // indirect
188-
github.com/ory/analytics-go/v5 v5.0.1 // indirect
189116
github.com/ory/dockertest/v4 v4.0.0 // indirect
190-
github.com/ory/go-acc v0.2.9-0.20230103102148-6b1c9a70dbbe // indirect
191117
github.com/ory/go-convenience v0.1.1-0.20251022160015-e2a1f648d0b1 // indirect
192-
github.com/ory/keto/proto v0.13.0-alpha.0.0.20260609063042-5da3a68a58d9 // indirect
118+
github.com/ory/keto/gen/go v0.0.0-20260729093002-f50b4892b31d // indirect
193119
github.com/ory/kratos-client-go v1.3.9-0.20251107123727-a6ddbd382e38 // indirect
194120
github.com/ory/mail/v3 v3.0.1-0.20260416102637-e762925f059d // indirect
195-
github.com/ory/nosurf v1.2.7 // indirect
196-
github.com/ory/pop/v6 v6.4.2-0.20260714091811-7f2223c43ab6 // indirect
197-
github.com/pborman/uuid v1.2.1 // indirect
198-
github.com/pelletier/go-toml v1.9.5 // indirect
199-
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
200121
github.com/peterhellberg/link v1.2.0 // indirect
201-
github.com/philhofer/fwd v1.2.0 // indirect
202122
github.com/pkg/profile v1.7.0 // indirect
203123
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
204124
github.com/pquerna/otp v1.5.0 // indirect
205125
github.com/prometheus/client_golang v1.23.2 // indirect
206126
github.com/prometheus/client_model v0.6.2 // indirect
207127
github.com/prometheus/common v0.68.1 // indirect
208128
github.com/prometheus/procfs v0.20.1 // indirect
209-
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
210-
github.com/rogpeppe/go-internal v1.14.1 // indirect
211-
github.com/sagikazarmark/locafero v0.4.0 // indirect
212-
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
213129
github.com/samber/lo v1.53.0 // indirect
214130
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect
215131
github.com/sawadashota/encrypta v0.0.5 // indirect
216132
github.com/seatgeek/logrus-gelf-formatter v0.0.0-20210414080842-5b05eb8ff761 // indirect
217-
github.com/segmentio/backo-go v1.1.0 // indirect
218-
github.com/sergi/go-diff v1.4.0 // indirect
219133
github.com/shopspring/decimal v1.4.0 // indirect
220134
github.com/sirupsen/logrus v1.9.4 // indirect
221-
github.com/slack-go/slack v0.23.1 // indirect
222-
github.com/soheilhy/cmux v0.1.5 // indirect
223-
github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d // indirect
224-
github.com/sourcegraph/conc v0.3.0 // indirect
225-
github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e // indirect
226-
github.com/spf13/afero v1.11.0 // indirect
227135
github.com/spf13/cast v1.10.0 // indirect
228-
github.com/spf13/viper v1.18.2 // indirect
229-
github.com/subosito/gotenv v1.6.0 // indirect
230-
github.com/thales-e-security/pool v0.0.2 // indirect
231136
github.com/tidwall/match v1.2.0 // indirect
232137
github.com/tidwall/pretty v1.2.1 // indirect
233-
github.com/tinylib/msgp v1.6.4 // indirect
234138
github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 // indirect
235139
github.com/toqueteos/webbrowser v1.2.0 // indirect
236-
github.com/twmb/murmur3 v1.1.8 // indirect
237140
github.com/wI2L/jsondiff v0.7.1 // indirect
238-
github.com/x448/float16 v0.8.4 // indirect
239-
github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c // indirect
240141
github.com/zmb3/spotify/v2 v2.4.3 // indirect
241142
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
242-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 // indirect
243143
go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.69.0 // indirect
244144
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 // indirect
245145
go.opentelemetry.io/contrib/propagators/b3 v1.44.0 // indirect
@@ -254,11 +154,7 @@ require (
254154
go.opentelemetry.io/otel/sdk v1.44.0 // indirect
255155
go.opentelemetry.io/otel/trace v1.44.0 // indirect
256156
go.opentelemetry.io/proto/otlp v1.10.0 // indirect
257-
go.uber.org/automaxprocs v1.6.0 // indirect
258-
go.uber.org/mock v0.6.0 // indirect
259-
go.uber.org/multierr v1.11.0 // indirect
260157
go.yaml.in/yaml/v2 v2.4.4 // indirect
261-
go.yaml.in/yaml/v3 v3.0.4 // indirect
262158
golang.org/x/crypto v0.53.0 // indirect
263159
golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a // indirect
264160
golang.org/x/mod v0.37.0 // indirect
@@ -268,17 +164,11 @@ require (
268164
golang.org/x/telemetry v0.0.0-20260625142307-59b4966ccb57 // indirect
269165
golang.org/x/tools v0.47.0 // indirect
270166
google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect
271-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect
167+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260608224507-4308a22a1bab // indirect
272168
google.golang.org/grpc v1.82.1 // indirect
273169
google.golang.org/protobuf v1.36.11 // indirect
274-
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
275-
gopkg.in/ini.v1 v1.67.0 // indirect
276170
gopkg.in/yaml.v3 v3.0.1 // indirect
277171
kernel.org/pub/linux/libs/security/libcap/psx v1.2.78 // indirect
278-
modernc.org/libc v1.72.3 // indirect
279-
modernc.org/mathutil v1.7.1 // indirect
280-
modernc.org/memory v1.11.0 // indirect
281-
modernc.org/sqlite v1.52.0 // indirect
282172
sigs.k8s.io/yaml v1.6.0 // indirect
283173
)
284174

0 commit comments

Comments
 (0)