Add support for defaulting to latest version and improve code structure

This commit is contained in:
Sahilb315
2025-04-25 20:53:07 +05:30
parent b8444d244b
commit d60fe87236
9 changed files with 426 additions and 166 deletions
+37
View File
@@ -0,0 +1,37 @@
package registry
import (
"fmt"
"time"
)
// RegistryType represents different package registries
type RegistryType string
const (
RegistryNPM RegistryType = "npm"
RegistryPyPI RegistryType = "pypi"
RegistryGo RegistryType = "go"
)
// FetcherFactory creates appropriate fetchers based on registry type
type FetcherFactory struct {
timeout time.Duration
}
// NewFetcherFactory creates a new factory for registry fetchers
func NewFetcherFactory(timeout time.Duration) *FetcherFactory {
return &FetcherFactory{
timeout: timeout,
}
}
// CreateFetcher returns a fetcher for the specified registry type
func (ff *FetcherFactory) CreateFetcher(registryType RegistryType) (Fetcher, error) {
switch registryType {
case RegistryNPM:
return NewNpmFetcher(ff.timeout), nil
default:
return nil, fmt.Errorf("unsupported registry type: %s", registryType)
}
}