// Package cli provides the deploy command logic. package cli import ( "os" "strings" ) const aliasEnvPrefix = "HOMELAB_DEPLOY_ALIAS_" // ResolveAlias resolves a subject alias to a full NATS subject. // If the input looks like a NATS subject (contains dots), it is returned as-is. // Otherwise, it checks for an environment variable HOMELAB_DEPLOY_ALIAS_. // Alias names are case-insensitive and hyphens are converted to underscores. func ResolveAlias(input string) string { // If it contains dots, it's already a subject if strings.Contains(input, ".") { return input } // Convert to uppercase and replace hyphens with underscores envName := aliasEnvPrefix + strings.ToUpper(strings.ReplaceAll(input, "-", "_")) if alias := os.Getenv(envName); alias != "" { return alias } // Return as-is if no alias found (will likely fail later) return input } // IsAlias returns true if the input looks like an alias (no dots). func IsAlias(input string) bool { return !strings.Contains(input, ".") } // GetAliasEnvVar returns the environment variable name for a given alias. func GetAliasEnvVar(alias string) string { return aliasEnvPrefix + strings.ToUpper(strings.ReplaceAll(alias, "-", "_")) }