Merge "Freeze environment reading after saving deps"
This commit is contained in:
commit
8a12ccd282
1 changed files with 9 additions and 2 deletions
|
@ -48,8 +48,9 @@ type config struct {
|
||||||
|
|
||||||
srcDir string // the path of the root source directory
|
srcDir string // the path of the root source directory
|
||||||
|
|
||||||
envLock sync.Mutex
|
envLock sync.Mutex
|
||||||
envDeps map[string]string
|
envDeps map[string]string
|
||||||
|
envFrozen bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type jsonConfigurable interface {
|
type jsonConfigurable interface {
|
||||||
|
@ -178,6 +179,9 @@ func (c *config) Getenv(key string) string {
|
||||||
var exists bool
|
var exists bool
|
||||||
c.envLock.Lock()
|
c.envLock.Lock()
|
||||||
if val, exists = c.envDeps[key]; !exists {
|
if val, exists = c.envDeps[key]; !exists {
|
||||||
|
if c.envFrozen {
|
||||||
|
panic("Cannot access new environment variables after envdeps are frozen")
|
||||||
|
}
|
||||||
val = os.Getenv(key)
|
val = os.Getenv(key)
|
||||||
c.envDeps[key] = val
|
c.envDeps[key] = val
|
||||||
}
|
}
|
||||||
|
@ -186,6 +190,9 @@ func (c *config) Getenv(key string) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *config) EnvDeps() map[string]string {
|
func (c *config) EnvDeps() map[string]string {
|
||||||
|
c.envLock.Lock()
|
||||||
|
c.envFrozen = true
|
||||||
|
c.envLock.Unlock()
|
||||||
return c.envDeps
|
return c.envDeps
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue