Introduce api.Getenv/api.LookupEnv which prefer THRESHOLD_X and fall back to legacy BOUNDARY_X; use them for user-facing env var reads. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
57 lines
1.7 KiB
Go
57 lines
1.7 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package api
|
|
|
|
import (
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
// legacyEnvPrefix is the environment variable prefix used by upstream
|
|
// HashiCorp Boundary. It is still honored as a fallback.
|
|
legacyEnvPrefix = "BOUNDARY_"
|
|
// envPrefix is the preferred environment variable prefix for Threshold.
|
|
envPrefix = "THRESHOLD_"
|
|
)
|
|
|
|
// PreferredEnvName returns the Threshold (THRESHOLD_*) form of an environment
|
|
// variable name. Names that do not use the legacy BOUNDARY_ prefix are
|
|
// returned unchanged.
|
|
func PreferredEnvName(name string) string {
|
|
if strings.HasPrefix(name, legacyEnvPrefix) {
|
|
return envPrefix + strings.TrimPrefix(name, legacyEnvPrefix)
|
|
}
|
|
return name
|
|
}
|
|
|
|
// LegacyEnvName returns the legacy (BOUNDARY_*) form of an environment
|
|
// variable name. Names that do not use the THRESHOLD_ prefix are returned
|
|
// unchanged.
|
|
func LegacyEnvName(name string) string {
|
|
if strings.HasPrefix(name, envPrefix) {
|
|
return legacyEnvPrefix + strings.TrimPrefix(name, envPrefix)
|
|
}
|
|
return name
|
|
}
|
|
|
|
// LookupEnv looks up an environment variable, preferring the THRESHOLD_*
|
|
// name and falling back to the legacy BOUNDARY_* name. The name may be given
|
|
// with either prefix; names with neither prefix are looked up as-is.
|
|
func LookupEnv(name string) (string, bool) {
|
|
if v, ok := os.LookupEnv(PreferredEnvName(LegacyEnvName(name))); ok {
|
|
return v, true
|
|
}
|
|
return os.LookupEnv(LegacyEnvName(name))
|
|
}
|
|
|
|
// Getenv is like os.Getenv but follows the LookupEnv precedence. A set but
|
|
// empty THRESHOLD_* variable falls through to the legacy BOUNDARY_* variable.
|
|
func Getenv(name string) string {
|
|
if v := os.Getenv(PreferredEnvName(LegacyEnvName(name))); v != "" {
|
|
return v
|
|
}
|
|
return os.Getenv(LegacyEnvName(name))
|
|
}
|