Change summary
internal/config/init.go | 34 +++++++++++++---------------------
1 file changed, 13 insertions(+), 21 deletions(-)
Detailed changes
@@ -5,40 +5,32 @@ import (
"os"
"path/filepath"
"strings"
- "sync"
+ "sync/atomic"
)
-const InitFlagFilename = "init"
+const (
+ InitFlagFilename = "init"
+)
type ProjectInitFlag struct {
Initialized bool `json:"initialized"`
}
// TODO: we need to remove the global config instance keeping it now just until everything is migrated
-var (
- instance *Config
- cwd string
- once sync.Once
- wg sync.WaitGroup
-)
+var instance atomic.Pointer[Config]
func Init(workingDir string, debug bool) (*Config, error) {
- var err error
- wg.Add(1)
- once.Do(func() {
- cwd = workingDir
- var cfg *Config
- cfg, err = Load(cwd, debug)
- instance = cfg
- wg.Done()
- })
-
- return instance, err
+ cfg, err := Load(workingDir, debug)
+ if err != nil {
+ return nil, err
+ }
+ instance.Store(cfg)
+ return instance.Load(), nil
}
func Get() *Config {
- wg.Wait()
- return instance
+ cfg := instance.Load()
+ return cfg
}
func ProjectNeedsInitialization() (bool, error) {