Use constants instead of hardcoded strings (#330)

<!-- Provide a brief summary of your changes -->

## Motivation and Context
<!-- Why is this change needed? What problem does it solve? -->
The following PR updates some of the hardcoded references to public
constants.


## How Has This Been Tested?
<!-- Have you tested this in a real application? Which scenarios were
tested? -->
Locally
## Breaking Changes
<!-- Will users need to update their code or configurations? -->
No

## Types of changes
<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->
- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update

## Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply. -->
- [ ] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [ ] My code follows the repository's style guidelines
- [ ] New and existing tests pass locally
- [ ] I have added appropriate error handling
- [ ] I have added or updated documentation as needed

## Additional context
<!-- Add any other context, implementation notes, or design decisions
-->

Signed-off-by: Radoslav Dimitrov <radoslav@stacklok.com>
This commit is contained in:
Radoslav Dimitrov 2025-09-01 18:51:14 +03:00 • committed by GitHub
commit 2a2bbfed84
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -14,11 +14,6 @@ import (
"github.com/modelcontextprotocol/registry/pkg/model"
)
const (
RegistryTypeNPM = "npm"
RegistryTypePyPi = "pypi"
RegistryTypeOci = "oci"
)
func InitCommand() error {
// Check if server.json already exists
@ -193,29 +188,29 @@ func detectRepoURL() string {
func detectPackageType() string {
// Check for package.json
if _, err := os.Stat("package.json"); err == nil {
return RegistryTypeNPM
return model.RegistryTypeNPM
}
// Check for pyproject.toml or setup.py
if _, err := os.Stat("pyproject.toml"); err == nil {
return RegistryTypePyPi
return model.RegistryTypePyPI
}
if _, err := os.Stat("setup.py"); err == nil {
return RegistryTypePyPi
return model.RegistryTypePyPI
}
// Check for Dockerfile
if _, err := os.Stat("Dockerfile"); err == nil {
return RegistryTypeOci
return model.RegistryTypeOCI
}
// Default to npm as most common
return RegistryTypeNPM
return model.RegistryTypeNPM
}
func detectPackageIdentifier(serverName string, packageType string) string {
switch packageType {
case RegistryTypeNPM:
case model.RegistryTypeNPM:
// Try to get from package.json
if data, err := os.ReadFile("package.json"); err == nil {
var pkg map[string]any
@ -235,7 +230,7 @@ func detectPackageIdentifier(serverName string, packageType string) string {
}
return "@your-org/your-package"
case "pypi":
case model.RegistryTypePyPI:
// Try to get from pyproject.toml or setup.py
if data, err := os.ReadFile("pyproject.toml"); err == nil {
// Simple extraction - could be improved with proper TOML parser
@ -254,7 +249,7 @@ func detectPackageIdentifier(serverName string, packageType string) string {
}
return "your-package"
case "docker":
case model.RegistryTypeOCI:
// Use a sensible default
if strings.Contains(serverName, "/") {
parts := strings.Split(serverName, "/")
@ -275,15 +270,15 @@ func createServerJSON(
// Determine registry type and base URL
var registryType, registryBaseURL string
switch packageType {
case RegistryTypeNPM:
registryType = RegistryTypeNPM
registryBaseURL = "https://registry.npmjs.org"
case RegistryTypePyPi:
registryType = RegistryTypePyPi
registryBaseURL = "https://pypi.org"
case RegistryTypeOci:
registryType = RegistryTypeOci
registryBaseURL = "https://docker.io"
case model.RegistryTypeNPM:
registryType = model.RegistryTypeNPM
registryBaseURL = model.RegistryURLNPM
case model.RegistryTypePyPI:
registryType = model.RegistryTypePyPI
registryBaseURL = model.RegistryURLPyPI
case model.RegistryTypeOCI:
registryType = model.RegistryTypeOCI
registryBaseURL = model.RegistryURLDocker
case "url":
registryType = "url"
registryBaseURL = ""