mirror of https://github.com/databricks/cli.git
Make Lookup return Reference object
This commit is contained in:
parent
94d3b5e0da
commit
1c5540201c
|
@ -48,21 +48,21 @@ func References(b *bundle.Bundle) (Map, Map) {
|
||||||
// Lookup returns the resource with the specified key.
|
// Lookup returns the resource with the specified key.
|
||||||
// If the key maps to more than one resource, an error is returned.
|
// If the key maps to more than one resource, an error is returned.
|
||||||
// If the key does not map to any resource, an error is returned.
|
// If the key does not map to any resource, an error is returned.
|
||||||
func Lookup(b *bundle.Bundle, key string) (config.ConfigResource, error) {
|
func Lookup(b *bundle.Bundle, key string) (Reference, error) {
|
||||||
keyOnlyRefs, keyWithTypeRefs := References(b)
|
keyOnlyRefs, keyWithTypeRefs := References(b)
|
||||||
refs, ok := keyOnlyRefs[key]
|
refs, ok := keyOnlyRefs[key]
|
||||||
if !ok {
|
if !ok {
|
||||||
refs, ok = keyWithTypeRefs[key]
|
refs, ok = keyWithTypeRefs[key]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("resource with key %q not found", key)
|
return Reference{}, fmt.Errorf("resource with key %q not found", key)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case len(refs) == 1:
|
case len(refs) == 1:
|
||||||
return refs[0].Resource, nil
|
return refs[0], nil
|
||||||
case len(refs) > 1:
|
case len(refs) > 1:
|
||||||
return nil, fmt.Errorf("multiple resources with key %q found", key)
|
return Reference{}, fmt.Errorf("multiple resources with key %q found", key)
|
||||||
default:
|
default:
|
||||||
panic("unreachable")
|
panic("unreachable")
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,9 +18,8 @@ func TestLookup_EmptyBundle(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
out, err := Lookup(b, "foo")
|
_, err := Lookup(b, "foo")
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
assert.Nil(t, out)
|
|
||||||
assert.ErrorContains(t, err, "resource with key \"foo\" not found")
|
assert.ErrorContains(t, err, "resource with key \"foo\" not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,9 +35,8 @@ func TestLookup_NotFound(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
out, err := Lookup(b, "qux")
|
_, err := Lookup(b, "qux")
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
assert.Nil(t, out)
|
|
||||||
assert.ErrorContains(t, err, `resource with key "qux" not found`)
|
assert.ErrorContains(t, err, `resource with key "qux" not found`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,9 +54,8 @@ func TestLookup_MultipleFound(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
out, err := Lookup(b, "foo")
|
_, err := Lookup(b, "foo")
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
assert.Nil(t, out)
|
|
||||||
assert.ErrorContains(t, err, `multiple resources with key "foo" found`)
|
assert.ErrorContains(t, err, `multiple resources with key "foo" found`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,13 +78,13 @@ func TestLookup_Nominal(t *testing.T) {
|
||||||
out, err := Lookup(b, "foo")
|
out, err := Lookup(b, "foo")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
if assert.NotNil(t, out) {
|
if assert.NotNil(t, out) {
|
||||||
assert.Equal(t, "Foo job", out.GetName())
|
assert.Equal(t, "Foo job", out.Resource.GetName())
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lookup by type and key.
|
// Lookup by type and key.
|
||||||
out, err = Lookup(b, "jobs.foo")
|
out, err = Lookup(b, "jobs.foo")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
if assert.NotNil(t, out) {
|
if assert.NotNil(t, out) {
|
||||||
assert.Equal(t, "Foo job", out.GetName())
|
assert.Equal(t, "Foo job", out.Resource.GetName())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ func promptOpenArgument(ctx context.Context, b *bundle.Bundle) (string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func resolveOpenArgument(ctx context.Context, b *bundle.Bundle, args []string) (string, error) {
|
func resolveOpenArgument(ctx context.Context, b *bundle.Bundle, args []string) (string, error) {
|
||||||
// If no arguments are specified, prompt the user to select something to run.
|
// If no arguments are specified, prompt the user to select the resource to open.
|
||||||
if len(args) == 0 && cmdio.IsPromptSupported(ctx) {
|
if len(args) == 0 && cmdio.IsPromptSupported(ctx) {
|
||||||
return promptOpenArgument(ctx, b)
|
return promptOpenArgument(ctx, b)
|
||||||
}
|
}
|
||||||
|
@ -105,13 +105,13 @@ func newOpenCommand() *cobra.Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Locate resource to open.
|
// Locate resource to open.
|
||||||
resource, err := resources.Lookup(b, arg)
|
ref, err := resources.Lookup(b, arg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Confirm that the resource has a URL.
|
// Confirm that the resource has a URL.
|
||||||
url := resource.GetURL()
|
url := ref.Resource.GetURL()
|
||||||
if url == "" {
|
if url == "" {
|
||||||
return fmt.Errorf("resource does not have a URL associated with it (has it been deployed?)")
|
return fmt.Errorf("resource does not have a URL associated with it (has it been deployed?)")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue