41 lines
640 B
Go
41 lines
640 B
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"sync"
|
|
)
|
|
|
|
type Config struct {
|
|
ListenAddr string
|
|
DataDir string
|
|
DBPath string
|
|
ReposDir string
|
|
}
|
|
|
|
var instance *Config
|
|
var initOnce sync.Once
|
|
|
|
func Get() *Config {
|
|
initOnce.Do(func() {
|
|
instance = &Config{
|
|
ListenAddr: ":9000",
|
|
DataDir: "./data",
|
|
}
|
|
})
|
|
return instance
|
|
}
|
|
|
|
func (c *Config) SetDataDir(dir string) {
|
|
c.DataDir = dir
|
|
c.DBPath = filepath.Join(dir, "gitm.db")
|
|
c.ReposDir = filepath.Join(dir, "repos")
|
|
}
|
|
|
|
func (c *Config) EnsureDirs() error {
|
|
if err := os.MkdirAll(c.DataDir, 0755); err != nil {
|
|
return err
|
|
}
|
|
return os.MkdirAll(c.ReposDir, 0755)
|
|
}
|