derp
This commit is contained in:
parent
93aa1464a0
commit
d4956100bf
2 changed files with 61 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,4 +1,5 @@
|
|||
blas
|
||||
!blas/
|
||||
!cmd/blas/
|
||||
Session.vim
|
||||
coverage.txt
|
||||
|
|
60
pkg/blas/blas.go
Normal file
60
pkg/blas/blas.go
Normal 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
|
||||
}
|
Loading…
Reference in a new issue