// Copyright (c) The OpenTofu Authors // SPDX-License-Identifier: MPL-2.0 // Copyright (c) 2023 HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 package registry import ( "fmt" regaddr "github.com/opentofu/registry-address/v2" "github.com/opentofu/svchost/disco" ) type errModuleNotFound struct { packageAddr regaddr.ModulePackage } func (e *errModuleNotFound) Error() string { return fmt.Sprintf("module %s not found", e.packageAddr) } // IsModuleNotFound returns true only if the given error is a "module not found" // error. This allows callers to recognize this particular error condition // as distinct from operational errors such as poor network connectivity. func IsModuleNotFound(err error) bool { _, ok := err.(*errModuleNotFound) return ok } // IsServiceNotProvided returns true only if the given error is a "service not provided" // error. This allows callers to recognize this particular error condition // as distinct from operational errors such as poor network connectivity. func IsServiceNotProvided(err error) bool { _, ok := err.(*disco.ErrServiceNotProvided) return ok } // ServiceUnreachableError Registry service is unreachable type ServiceUnreachableError struct { err error } func (e *ServiceUnreachableError) Error() string { return e.err.Error() } // IsServiceUnreachable returns true if the registry/discovery service was unreachable func IsServiceUnreachable(err error) bool { _, ok := err.(*ServiceUnreachableError) return ok }