From 74f36c5d7319dccd479001ecd1fe3d18d70d92e6 Mon Sep 17 00:00:00 2001 From: James Shubin Date: Sun, 25 May 2025 03:47:47 -0400 Subject: [PATCH] engine: resources: Add some compile time checks for groupers These can "break" silently and not autogroup if we change the resource and it no longer fulfills the interface. Add this compile time check to prevent that. --- engine/resources/http_server_file.go | 2 ++ engine/resources/http_server_flag.go | 2 ++ engine/resources/http_server_proxy.go | 2 ++ engine/resources/http_server_ui.go | 2 ++ engine/resources/http_server_ui_input.go | 2 ++ 5 files changed, 10 insertions(+) diff --git a/engine/resources/http_server_file.go b/engine/resources/http_server_file.go index f124459e..d1e19446 100644 --- a/engine/resources/http_server_file.go +++ b/engine/resources/http_server_file.go @@ -52,6 +52,8 @@ func init() { engine.RegisterResource(httpServerFileKind, func() engine.Res { return &HTTPServerFileRes{} }) } +var _ HTTPServerGroupableRes = &HTTPServerFileRes{} // compile time check + // HTTPServerFileRes is a file that exists within an http server. The name is // used as the public path of the file, unless the filename field is specified, // and in that case it is used instead. The way this works is that it autogroups diff --git a/engine/resources/http_server_flag.go b/engine/resources/http_server_flag.go index ee6302fe..f637c63c 100644 --- a/engine/resources/http_server_flag.go +++ b/engine/resources/http_server_flag.go @@ -48,6 +48,8 @@ func init() { engine.RegisterResource(httpServerFlagKind, func() engine.Res { return &HTTPServerFlagRes{} }) } +var _ HTTPServerGroupableRes = &HTTPServerFlagRes{} // compile time check + // HTTPServerFlagRes is a special path that exists within an http server. The // name is used as the public path of the flag, unless the path field is // specified, and in that case it is used instead. The way this works is that it diff --git a/engine/resources/http_server_proxy.go b/engine/resources/http_server_proxy.go index 6b809860..b1c46ae9 100644 --- a/engine/resources/http_server_proxy.go +++ b/engine/resources/http_server_proxy.go @@ -65,6 +65,8 @@ func init() { engine.RegisterResource(httpServerProxyKind, func() engine.Res { return &HTTPServerProxyRes{} }) } +var _ HTTPServerGroupableRes = &HTTPServerProxyRes{} // compile time check + // HTTPServerProxyRes is a resource representing a special path that exists // within an http server. The name is used as the public path of the endpoint, // unless the path field is specified, and in that case it is used instead. The diff --git a/engine/resources/http_server_ui.go b/engine/resources/http_server_ui.go index 679ac7dc..58491d48 100644 --- a/engine/resources/http_server_ui.go +++ b/engine/resources/http_server_ui.go @@ -70,6 +70,8 @@ func init() { engine.RegisterResource(httpServerUIKind, func() engine.Res { return &HTTPServerUIRes{} }) } +var _ HTTPServerGroupableRes = &HTTPServerUIRes{} // compile time check + // HTTPServerUIGroupableRes is the interface that you must implement if you want // to allow a resource the ability to be grouped into the http server ui // resource. As an added safety, the Kind must also begin with diff --git a/engine/resources/http_server_ui_input.go b/engine/resources/http_server_ui_input.go index 8234099e..8917e5e4 100644 --- a/engine/resources/http_server_ui_input.go +++ b/engine/resources/http_server_ui_input.go @@ -57,6 +57,8 @@ func init() { engine.RegisterResource(httpServerUIInputKind, func() engine.Res { return &HTTPServerUIInputRes{} }) } +var _ HTTPServerUIGroupableRes = &HTTPServerUIInputRes{} // compile time check + // HTTPServerUIInputRes is a form element that exists within a http:server:ui // resource, which exists within an http server. The name is used as the unique // id of the field, unless the id field is specified, and in that case it is