// Package globals provides build-time variables and application-wide constants. package globals import ( "sync" "go.uber.org/fx" ) // Package-level variables set from main via ldflags. // These are intentionally global to allow build-time injection using -ldflags. // //nolint:gochecknoglobals // Required for ldflags injection at build time var ( mu sync.RWMutex appname string version string ) // Globals holds build-time variables for dependency injection. type Globals struct { Appname string Version string } // New creates a new Globals instance from package-level variables. func New(_ fx.Lifecycle) (*Globals, error) { mu.RLock() defer mu.RUnlock() return &Globals{ Appname: appname, Version: version, }, nil } // SetAppname sets the application name. func SetAppname(name string) { mu.Lock() defer mu.Unlock() appname = name } // SetVersion sets the version. func SetVersion(ver string) { mu.Lock() defer mu.Unlock() version = ver }