summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--init.go43
-rw-r--r--structs.go2
2 files changed, 22 insertions, 23 deletions
diff --git a/init.go b/init.go
index d0f8f03..6e11710 100644
--- a/init.go
+++ b/init.go
@@ -23,9 +23,6 @@ func Default(opts ...OptionFunc) *Engine {
}
*/
-// todo: use initOnce
-// cache.go has Do()
-// f.initOnce.Do(f.initWork)
func Init() *Forge {
f := InitPB()
@@ -162,25 +159,27 @@ func (f *Forge) RawInitPB() {
// try to NOT use the ENV settings anywhere but here
// all initial ENV settings should be stored in the forge struct
func (f *Forge) setenv() {
- if err := fhelp.ConfigureENV(); err != nil {
- log.Info("forge ConfigureENV() failed", err)
- os.Exit(-1)
- }
- f.configDir = os.Getenv("FORGE_CONFIG")
- f.goSrc = os.Getenv("FORGE_GOSRC")
- f.repoPB = os.Getenv("FORGE_REPOPB")
- f.forgeURL = os.Getenv("FORGE_URL")
- f.patchDir = os.Getenv("FORGE_PATCHDIR")
- if os.Getenv("FORGE_GOWORK") == "true" {
- f.goWork = true
- }
- log.Printf("FORGE_CONFIG = %s\n", f.configDir)
- log.Printf("FORGE_GOSRC = %s\n", f.goSrc)
- log.Printf("FORGE_GOWORK = %v\n", f.goWork)
- log.Printf("FORGE_REPOPB = %s\n", f.repoPB)
- log.Printf("FORGE_URL = %s\n", f.forgeURL)
- log.Printf("FORGE_PATCHDIR = %s\n", f.patchDir)
- log.Printf("HOSTNAME = %s\n", os.Getenv("HOSTNAME"))
+ f.once.Do(func() {
+ if err := fhelp.ConfigureENV(); err != nil {
+ log.Info("forge ConfigureENV() failed", err)
+ os.Exit(-1)
+ }
+ f.configDir = os.Getenv("FORGE_CONFIG")
+ f.goSrc = os.Getenv("FORGE_GOSRC")
+ f.repoPB = os.Getenv("FORGE_REPOPB")
+ f.forgeURL = os.Getenv("FORGE_URL")
+ f.patchDir = os.Getenv("FORGE_PATCHDIR")
+ if os.Getenv("FORGE_GOWORK") == "true" {
+ f.goWork = true
+ }
+ log.Printf("FORGE_CONFIG = %s\n", f.configDir)
+ log.Printf("FORGE_GOSRC = %s\n", f.goSrc)
+ log.Printf("FORGE_GOWORK = %v\n", f.goWork)
+ log.Printf("FORGE_REPOPB = %s\n", f.repoPB)
+ log.Printf("FORGE_URL = %s\n", f.forgeURL)
+ log.Printf("FORGE_PATCHDIR = %s\n", f.patchDir)
+ log.Printf("HOSTNAME = %s\n", os.Getenv("HOSTNAME"))
+ })
}
func (f *Forge) GetForgeURL() string {
diff --git a/structs.go b/structs.go
index 561bf8f..97e088d 100644
--- a/structs.go
+++ b/structs.go
@@ -10,7 +10,7 @@ import (
// maybe an interface someday?
type Forge struct {
// one-time initialized data
- initOnce sync.Once
+ once sync.Once
initErr error // init error, if any
goSrc string // the path to go/src
repoPB string // the path to the repos.pb cache file