diff --git a/cmd/cloudx/client/command_helper.go b/cmd/cloudx/client/command_helper.go index ad8b6e7f..a36d0264 100644 --- a/cmd/cloudx/client/command_helper.go +++ b/cmd/cloudx/client/command_helper.go @@ -45,6 +45,7 @@ type ( projectID, workspaceID uuid.UUID configLocation string noConfirm, isQuiet bool + workspaceFromConfig bool VerboseErrWriter io.Writer Stdin *bufio.Reader openBrowserHook func(string) error @@ -231,6 +232,7 @@ func (h *CommandHelper) determineWorkspaceID(ctx context.Context, config *Config workspace = ws } else if config.SelectedWorkspace != uuid.Nil { h.workspaceID = config.SelectedWorkspace + h.workspaceFromConfig = true return nil } workspace = strings.TrimSpace(workspace) @@ -261,9 +263,11 @@ func (h *CommandHelper) determineProjectID(ctx context.Context, config *Config) if h.projectOverride != nil { return fmt.Errorf("project API key is set but project flag is also set, please remove one") } - if h.workspaceID != uuid.Nil { + if h.workspaceID != uuid.Nil && !h.workspaceFromConfig { return fmt.Errorf("project API key is set but workspace is also set, please remove one") } + // Clear workspace from config since project API key takes precedence. + h.workspaceID = uuid.Nil pjs, err := h.ListProjects(ctx, nil) if err != nil { return err diff --git a/cmd/cloudx/client/command_helper_test.go b/cmd/cloudx/client/command_helper_test.go index bcd4fdea..489117ec 100644 --- a/cmd/cloudx/client/command_helper_test.go +++ b/cmd/cloudx/client/command_helper_test.go @@ -372,7 +372,7 @@ func TestCommandHelper(t *testing.T) { assert.Equal(t, tc.project.Id, actual.Id) assertValidProject(t, tc.project) - actual, err = authenticated.GetProject(ctx, tc.project.Slug[0:4], tc.project.WorkspaceId.Get()) + actual, err = authenticated.GetProject(ctx, tc.project.Slug[:8], tc.project.WorkspaceId.Get()) require.NoError(t, err) assert.Equal(t, tc.project.Id, actual.Id) }) diff --git a/cmd/cloudx/relationtuples/relationtuples_test.go b/cmd/cloudx/relationtuples/relationtuples_test.go index 5c330548..e659fd90 100644 --- a/cmd/cloudx/relationtuples/relationtuples_test.go +++ b/cmd/cloudx/relationtuples/relationtuples_test.go @@ -165,7 +165,7 @@ func TestCRUD(t *testing.T) { func createLegacyNamespace(t *testing.T, project, rawNamespace string) { t.Helper() _, _, err := defaultCmd.Exec(nil, "patch", "permission-config", "--project", project, - "--add", `/namespaces/-=`+rawNamespace) + "--replace", `/namespaces=[`+rawNamespace+`]`) if err != nil { t.Fatal(err) } diff --git a/cmd/root.go b/cmd/root.go index 5ca0e67f..e5e55d33 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -7,7 +7,6 @@ import ( "context" "fmt" "os" - "sync" "github.com/pkg/errors" "github.com/spf13/cobra" @@ -19,8 +18,6 @@ import ( "github.com/ory/x/cmdx" ) -var commandTemplatingOnce sync.Once - func NewRootCmd() *cobra.Command { c := &cobra.Command{ Use: "ory", @@ -51,9 +48,7 @@ func NewRootCmd() *cobra.Command { cloudx.NewIsCmd(), versionCmd, ) - commandTemplatingOnce.Do(func() { - cmdx.EnableUsageTemplating(c) - }) + cmdx.EnableUsageTemplating(c) return c } diff --git a/go.mod b/go.mod index 6f94df80..9ef2065f 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,7 @@ require ( github.com/ory/hydra/v2 v2.3.1-0.20260324164235-735e0a30f7f2 github.com/ory/jsonschema/v3 v3.0.9-0.20250317235931-280c5fc7bf0e github.com/ory/keto v0.14.1-0.20260324164236-ccb79cfc480c - github.com/ory/kratos v1.3.1-0.20260324164252-55fe178c4ea9 + github.com/ory/kratos v1.3.1-0.20260320110106-9d7085948039 github.com/ory/x v0.0.730-0.20260324164228-9257dfe10938 github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c github.com/pkg/errors v0.9.1 @@ -162,7 +162,7 @@ require ( github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgproto3/v2 v2.3.3 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect - github.com/jackc/pgx/v5 v5.7.5 // indirect + github.com/jackc/pgx/v5 v5.9.2 // indirect github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/jaegertracing/jaeger-idl v0.5.0 // indirect github.com/jmoiron/sqlx v1.4.0 // indirect @@ -199,8 +199,8 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect - github.com/moby/moby/api v1.54.0 // indirect - github.com/moby/moby/client v0.3.0 // indirect + github.com/moby/moby/api v1.54.1 // indirect + github.com/moby/moby/client v0.4.0 // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/nyaruka/phonenumbers v1.6.5 // indirect @@ -211,7 +211,7 @@ require ( github.com/opencontainers/image-spec v1.1.1 // indirect github.com/openzipkin/zipkin-go v0.4.3 // indirect github.com/ory/analytics-go/v5 v5.0.1 // indirect - github.com/ory/dockertest/v4 v4.0.0-beta.4 // indirect + github.com/ory/dockertest/v4 v4.0.0 // indirect github.com/ory/go-acc v0.2.9-0.20230103102148-6b1c9a70dbbe // indirect github.com/ory/go-convenience v0.1.0 // indirect github.com/ory/keto/proto v0.13.0-alpha.0 // indirect diff --git a/go.sum b/go.sum index 53d01f42..731c818c 100644 --- a/go.sum +++ b/go.sum @@ -411,8 +411,8 @@ github.com/jackc/pgproto3/v2 v2.3.3 h1:1HLSx5H+tXR9pW3in3zaztoEwQYRC9SQaYUHjTSUO github.com/jackc/pgproto3/v2 v2.3.3/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.7.5 h1:JHGfMnQY+IEtGM63d+NGMjoRpysB2JBwDr5fsngwmJs= -github.com/jackc/pgx/v5 v5.7.5/go.mod h1:aruU7o91Tc2q2cFp5h4uP3f6ztExVpyVv88Xl/8Vl8M= +github.com/jackc/pgx/v5 v5.9.2 h1:3ZhOzMWnR4yJ+RW1XImIPsD1aNSz4T4fyP7zlQb56hw= +github.com/jackc/pgx/v5 v5.9.2/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4= github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jaegertracing/jaeger-idl v0.5.0 h1:zFXR5NL3Utu7MhPg8ZorxtCBjHrL3ReM1VoB65FOFGE= @@ -517,10 +517,10 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= -github.com/moby/moby/api v1.54.0 h1:7kbUgyiKcoBhm0UrWbdrMs7RX8dnwzURKVbZGy2GnL0= -github.com/moby/moby/api v1.54.0/go.mod h1:8mb+ReTlisw4pS6BRzCMts5M49W5M7bKt1cJy/YbAqc= -github.com/moby/moby/client v0.3.0 h1:UUGL5okry+Aomj3WhGt9Aigl3ZOxZGqR7XPo+RLPlKs= -github.com/moby/moby/client v0.3.0/go.mod h1:HJgFbJRvogDQjbM8fqc1MCEm4mIAGMLjXbgwoZp6jCQ= +github.com/moby/moby/api v1.54.1 h1:TqVzuJkOLsgLDDwNLmYqACUuTehOHRGKiPhvH8V3Nn4= +github.com/moby/moby/api v1.54.1/go.mod h1:+RQ6wluLwtYaTd1WnPLykIDPekkuyD/ROWQClE83pzs= +github.com/moby/moby/client v0.4.0 h1:S+2XegzHQrrvTCvF6s5HFzcrywWQmuVnhOXe2kiWjIw= +github.com/moby/moby/client v0.4.0/go.mod h1:QWPbvWchQbxBNdaLSpoKpCdf5E+WxFAgNHogCWDoa7g= github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= @@ -556,8 +556,8 @@ github.com/ory/analytics-go/v5 v5.0.1 h1:LX8T5B9FN8KZXOtxgN+R3I4THRRVB6+28IKgKBp github.com/ory/analytics-go/v5 v5.0.1/go.mod h1:lWCiCjAaJkKfgR/BN5DCLMol8BjKS1x+4jxBxff/FF0= github.com/ory/client-go v1.22.32 h1:31kLMk6DynhoyjXO7Gx6DRI9VX7RBdCQDxppfCiGtxg= github.com/ory/client-go v1.22.32/go.mod h1:G1f+5+m/PJVvl40bsRn0QuyVIcXe7EHiWeM7iWpIDjw= -github.com/ory/dockertest/v4 v4.0.0-beta.4 h1:QcrNrobOP+5IjSDmS4//EuBtwiFuznQhi5xTe8oFSoM= -github.com/ory/dockertest/v4 v4.0.0-beta.4/go.mod h1:p9kfE14tzK8+WU4F9YbIZlzhCzQ2pH7H1KIfBKrF3DM= +github.com/ory/dockertest/v4 v4.0.0 h1:i19aFsO/VXE0VrMk4ifnKW4G/KIJ93PCjLOslxXoPME= +github.com/ory/dockertest/v4 v4.0.0/go.mod h1:b5Ofu8VIxWNhXFvQcLu17pRNQdoUBKtXBW74G4Ygzx8= github.com/ory/go-acc v0.2.9-0.20230103102148-6b1c9a70dbbe h1:rvu4obdvqR0fkSIJ8IfgzKOWwZ5kOT2UNfLq81Qk7rc= github.com/ory/go-acc v0.2.9-0.20230103102148-6b1c9a70dbbe/go.mod h1:z4n3u6as84LbV4YmgjHhnwtccQqzf4cZlSk9f1FhygI= github.com/ory/go-convenience v0.1.0 h1:zouLKfF2GoSGnJwGq+PE/nJAE6dj2Zj5QlTgmMTsTS8= @@ -578,8 +578,8 @@ github.com/ory/keto v0.14.1-0.20260324164236-ccb79cfc480c h1:IEGOWr24LYYohHhjsBt github.com/ory/keto v0.14.1-0.20260324164236-ccb79cfc480c/go.mod h1:oWXc/S0SVU/WM5s9lAfc9DidbnQNELFyKU5obZq2WIQ= github.com/ory/keto/proto v0.13.0-alpha.0.0.20251107121730-f5635433a563 h1:JAnmWvXQ8djHAycZgPfuhFh5yCDohu9x/5P638FnKkg= github.com/ory/keto/proto v0.13.0-alpha.0.0.20251107121730-f5635433a563/go.mod h1:80XUMndTR7nQxXmxsUx6pNaEp0KEa51wdhIPsIocwng= -github.com/ory/kratos v1.3.1-0.20260324164252-55fe178c4ea9 h1:nQqTDWiJkhVOk5gP6I9GEap4KjK5TuwBsdHjpwNeybM= -github.com/ory/kratos v1.3.1-0.20260324164252-55fe178c4ea9/go.mod h1:xSS7k+KjA6qjxkCmqh1hwnZ9QTDFXXbyyzICB2ZUEko= +github.com/ory/kratos v1.3.1-0.20260320110106-9d7085948039 h1:Vo4Q5OO7mZWJLjyWH541JCBjkgVR3kXdHG4/1O2p0Og= +github.com/ory/kratos v1.3.1-0.20260320110106-9d7085948039/go.mod h1:xSS7k+KjA6qjxkCmqh1hwnZ9QTDFXXbyyzICB2ZUEko= github.com/ory/kratos-client-go v1.3.8 h1:S4D5dAURq5C6LbOUU+DgE4ZXxp37IlJG2GngemdF9h0= github.com/ory/kratos-client-go v1.3.8/go.mod h1:Dc+ANapsPxu+CfdC0yk8TxmvceCmrvNozW+ZGS/xq5o= github.com/ory/mail v2.3.1+incompatible/go.mod h1:87D9/1gB6ewElQoN0lXJ0ayfqcj3cW3qCTXh+5E9mfU=