Skip to content

Commit 2873152

Browse files
authored
Rename registry.Server to registry.ImageMetadata (#807)
I found the previous name unclear - I thought it was referring to either the server hosting the registry, or an instance of an MCP server itself. Change the name to make its purpose as clear as possible. Also move permissions logic into the runner package - this prevents a circular import in an upcoming change.
1 parent 75491ec commit 2873152

File tree

21 files changed

+113
-114
lines changed

21 files changed

+113
-114
lines changed

cmd/regup/app/update.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ var (
2626

2727
type serverWithName struct {
2828
name string
29-
server *registry.Server
29+
server *registry.ImageMetadata
3030
}
3131

3232
var updateCmd = &cobra.Command{
@@ -130,7 +130,7 @@ func selectOldestServers(reg *registry.Registry) ([]serverWithName, error) {
130130
return servers[:limit], nil
131131
}
132132

133-
func isOlder(serverI, serverJ *registry.Server) bool {
133+
func isOlder(serverI, serverJ *registry.ImageMetadata) bool {
134134
var lastUpdatedI, lastUpdatedJ string
135135

136136
if serverI.Metadata != nil {
@@ -202,10 +202,10 @@ func saveResults(reg *registry.Registry, updatedServers []string) error {
202202
}
203203

204204
// updateServerInfo updates the GitHub stars and pulls for a server
205-
func updateServerInfo(name string, server *registry.Server) error {
205+
func updateServerInfo(name string, server *registry.ImageMetadata) error {
206206
// Skip if no repository URL
207207
if server.RepositoryURL == "" {
208-
logger.Warnf("Server %s has no repository URL, skipping", name)
208+
logger.Warnf("ImageMetadata %s has no repository URL, skipping", name)
209209
return nil
210210
}
211211

@@ -369,7 +369,7 @@ func saveRegistry(reg *registry.Registry, updatedServers []string) error {
369369
// Get the server from the original JSON
370370
serverJSON, ok := serversMap[name].(map[string]interface{})
371371
if !ok {
372-
logger.Warnf("Server %s not found in original registry, skipping", name)
372+
logger.Warnf("ImageMetadata %s not found in original registry, skipping", name)
373373
continue
374374
}
375375

cmd/regup/app/update_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ func setupTestRegistryWithMultipleServers(t *testing.T) (string, func()) {
172172
// Create test registry with multiple servers
173173
testRegistry := &registry.Registry{
174174
LastUpdated: "2025-06-17 12:00:00",
175-
Servers: map[string]*registry.Server{
175+
Servers: map[string]*registry.ImageMetadata{
176176
"github": {
177177
Name: "github",
178178
Description: "GitHub MCP server",
@@ -237,7 +237,7 @@ func setupEmptyTestRegistry(t *testing.T) (string, func()) {
237237
// Create empty test registry
238238
testRegistry := &registry.Registry{
239239
LastUpdated: "2025-06-17 12:00:00",
240-
Servers: map[string]*registry.Server{},
240+
Servers: map[string]*registry.ImageMetadata{},
241241
}
242242

243243
// Write registry file

cmd/thv/app/registry.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func registryInfoCmdFunc(_ *cobra.Command, args []string) error {
9393
}
9494

9595
// printJSONServers prints servers in JSON format
96-
func printJSONServers(servers []*registry.Server) error {
96+
func printJSONServers(servers []*registry.ImageMetadata) error {
9797
// Marshal to JSON
9898
jsonData, err := json.MarshalIndent(servers, "", " ")
9999
if err != nil {
@@ -106,7 +106,7 @@ func printJSONServers(servers []*registry.Server) error {
106106
}
107107

108108
// printJSONServer prints a single server in JSON format
109-
func printJSONServer(server *registry.Server) error {
109+
func printJSONServer(server *registry.ImageMetadata) error {
110110
// Marshal to JSON
111111
jsonData, err := json.MarshalIndent(server, "", " ")
112112
if err != nil {
@@ -119,7 +119,7 @@ func printJSONServer(server *registry.Server) error {
119119
}
120120

121121
// printTextServers prints servers in text format
122-
func printTextServers(servers []*registry.Server) {
122+
func printTextServers(servers []*registry.ImageMetadata) {
123123
// Create a tabwriter for pretty output
124124
w := tabwriter.NewWriter(os.Stdout, 0, 0, 3, ' ', 0)
125125
fmt.Fprintln(w, "NAME\tDESCRIPTION\tTRANSPORT\tSTARS\tPULLS")
@@ -150,7 +150,7 @@ func printTextServers(servers []*registry.Server) {
150150

151151
// printTextServerInfo prints detailed information about a server in text format
152152
// nolint:gocyclo
153-
func printTextServerInfo(name string, server *registry.Server) {
153+
func printTextServerInfo(name string, server *registry.ImageMetadata) {
154154
fmt.Printf("Name: %s\n", server.Name)
155155
fmt.Printf("Image: %s\n", server.Image)
156156
fmt.Printf("Description: %s\n", server.Description)

cmd/thv/app/run.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323
"github.com/stacklok/toolhive/pkg/secrets"
2424
"github.com/stacklok/toolhive/pkg/transport"
2525
"github.com/stacklok/toolhive/pkg/transport/types"
26-
"github.com/stacklok/toolhive/pkg/workloads"
2726
)
2827

2928
var runCmd = &cobra.Command{
@@ -268,7 +267,7 @@ func runCmdFunc(cmd *cobra.Command, args []string) error {
268267
runConfig.K8sPodTemplatePatch = runK8sPodPatch
269268
}
270269

271-
var server *registry.Server
270+
var server *registry.ImageMetadata
272271

273272
imageManager := images.NewImageManager(ctx)
274273
// Check if the serverOrImage is a protocol scheme, e.g., uvx://, npx://, or go://
@@ -288,11 +287,11 @@ func runCmdFunc(cmd *cobra.Command, args []string) error {
288287
// Try to find the server in the registry
289288
server, err = registry.GetServer(serverOrImage)
290289
if err != nil {
291-
// Server isn't found in registry, treat as direct image
292-
logger.Debugf("Server '%s' not found in registry: %v", serverOrImage, err)
290+
// ImageMetadata isn't found in registry, treat as direct image
291+
logger.Debugf("ImageMetadata '%s' not found in registry: %v", serverOrImage, err)
293292
runConfig.Image = serverOrImage
294293
} else {
295-
// Server found in registry
294+
// ImageMetadata found in registry
296295
logger.Debugf("Found server '%s' in registry: %v", serverOrImage, server)
297296
// Apply registry settings to runConfig
298297
applyRegistrySettings(ctx, cmd, serverOrImage, server, runConfig, debugMode)
@@ -372,7 +371,7 @@ func pullImage(ctx context.Context, image string, imageManager images.ImageManag
372371
}
373372

374373
// verifyImage verifies the image using the specified verification setting (warn, enabled, or disabled)
375-
func verifyImage(image string, server *registry.Server, verifySetting string) error {
374+
func verifyImage(image string, server *registry.ImageMetadata, verifySetting string) error {
376375
switch verifySetting {
377376
case verifyImageDisabled:
378377
logger.Warn("Image verification is disabled")
@@ -414,7 +413,7 @@ func applyRegistrySettings(
414413
ctx context.Context,
415414
cmd *cobra.Command,
416415
serverName string,
417-
server *registry.Server,
416+
server *registry.ImageMetadata,
418417
runConfig *runner.RunConfig,
419418
debugMode bool,
420419
) {
@@ -456,7 +455,7 @@ func applyRegistrySettings(
456455

457456
// Create a temporary file for the permission profile if not explicitly provided
458457
if !cmd.Flags().Changed("permission-profile") {
459-
permProfilePath, err := workloads.CreatePermissionProfileFile(serverName, server.Permissions)
458+
permProfilePath, err := runner.CreatePermissionProfileFile(serverName, server.Permissions)
460459
if err != nil {
461460
// Just log the error and continue with the default permission profile
462461
logger.Warnf("Warning: Failed to create permission profile file: %v", err)

cmd/thv/app/search.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func searchCmdFunc(_ *cobra.Command, args []string) error {
6262
}
6363

6464
// printJSONSearchResults prints servers in JSON format
65-
func printJSONSearchResults(servers []*registry.Server) error {
65+
func printJSONSearchResults(servers []*registry.ImageMetadata) error {
6666
// Marshal to JSON
6767
jsonData, err := json.MarshalIndent(servers, "", " ")
6868
if err != nil {
@@ -75,7 +75,7 @@ func printJSONSearchResults(servers []*registry.Server) error {
7575
}
7676

7777
// printTextSearchResults prints servers in text format
78-
func printTextSearchResults(servers []*registry.Server) {
78+
func printTextSearchResults(servers []*registry.ImageMetadata) {
7979
// Create a tabwriter for pretty output
8080
w := tabwriter.NewWriter(os.Stdout, 0, 0, 3, ' ', 0)
8181
fmt.Fprintln(w, "NAME\tDESCRIPTION\tTRANSPORT\tSTARS\tPULLS")

docs/server/docs.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)