This commit is contained in:
Daniel Ponte 2022-10-28 18:19:55 -04:00
parent 93aa1464a0
commit d4956100bf
2 changed files with 61 additions and 0 deletions

1
.gitignore vendored
View file

@ -1,4 +1,5 @@
blas
!blas/
!cmd/blas/
Session.vim
coverage.txt

60
pkg/blas/blas.go Normal file
View file

@ -0,0 +1,60 @@
package blas
import (
"context"
"os"
"path"
"strings"
"dynatron.me/x/blasphem/internal/common"
"dynatron.me/x/blasphem/pkg/bus"
"dynatron.me/x/blasphem/pkg/config"
"dynatron.me/x/blasphem/pkg/storage"
)
type Blas struct {
*bus.Bus
storage.Store
Config *config.Config
}
func (b *Blas) Shutdown(ctx context.Context) error {
b.Bus.Shutdown()
return ctx.Err()
}
func (b *Blas) ConfigDir() (cd string) {
if b.Config.DataDir != nil {
cd = *b.Config.DataDir
}
home, err := os.UserHomeDir()
if err != nil {
panic(err)
}
switch {
case cd == "":
return path.Join(home, "."+common.AppName)
case strings.HasPrefix(cd, "~/"):
return path.Join(home, cd[2:])
default:
return cd
}
}
func (b *Blas) openStore() error {
stor, err := storage.Open(os.DirFS(b.ConfigDir()))
b.Store = stor
return err
}
func New(cfg *config.Config) (*Blas, error) {
b := &Blas{
Bus: bus.New(),
Config: cfg,
}
err := b.openStore()
return b, err
}