diff --git a/bundle/resources/lookup.go b/bundle/resources/lookup.go index 930356f72c..74aec531ac 100644 --- a/bundle/resources/lookup.go +++ b/bundle/resources/lookup.go @@ -48,21 +48,21 @@ func References(b *bundle.Bundle) (Map, Map) { // Lookup returns the resource with the specified key. // 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. -func Lookup(b *bundle.Bundle, key string) (config.ConfigResource, error) { +func Lookup(b *bundle.Bundle, key string) (Reference, error) { keyOnlyRefs, keyWithTypeRefs := References(b) refs, ok := keyOnlyRefs[key] if !ok { refs, ok = keyWithTypeRefs[key] 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 { case len(refs) == 1: - return refs[0].Resource, nil + return refs[0], nil 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: panic("unreachable") } diff --git a/bundle/resources/lookup_test.go b/bundle/resources/lookup_test.go index 2d38e71bb9..5bcb615701 100644 --- a/bundle/resources/lookup_test.go +++ b/bundle/resources/lookup_test.go @@ -18,9 +18,8 @@ func TestLookup_EmptyBundle(t *testing.T) { }, } - out, err := Lookup(b, "foo") + _, err := Lookup(b, "foo") require.Error(t, err) - assert.Nil(t, out) 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) - assert.Nil(t, out) 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) - assert.Nil(t, out) 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") require.NoError(t, err) 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. out, err = Lookup(b, "jobs.foo") require.NoError(t, err) if assert.NotNil(t, out) { - assert.Equal(t, "Foo job", out.GetName()) + assert.Equal(t, "Foo job", out.Resource.GetName()) } } diff --git a/cmd/bundle/open.go b/cmd/bundle/open.go index 2eb70f20f6..a2ad32fd80 100644 --- a/cmd/bundle/open.go +++ b/cmd/bundle/open.go @@ -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) { - // 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) { return promptOpenArgument(ctx, b) } @@ -105,13 +105,13 @@ func newOpenCommand() *cobra.Command { } // Locate resource to open. - resource, err := resources.Lookup(b, arg) + ref, err := resources.Lookup(b, arg) if err != nil { return err } // Confirm that the resource has a URL. - url := resource.GetURL() + url := ref.Resource.GetURL() if url == "" { return fmt.Errorf("resource does not have a URL associated with it (has it been deployed?)") }