refactor: major project restructure
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/mathismqn/godeez/internal/config"
|
||||
"github.com/mathismqn/godeez/internal/fileutil"
|
||||
"github.com/mathismqn/godeez/internal/store"
|
||||
)
|
||||
|
||||
type Context struct {
|
||||
AppDir string
|
||||
Config *config.Config
|
||||
}
|
||||
|
||||
func NewContext(cfgPath string) (*Context, error) {
|
||||
home, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to get home directory: %w", err)
|
||||
}
|
||||
|
||||
cfgDir := filepath.Join(home, ".godeez")
|
||||
if err := fileutil.EnsureDir(cfgDir); err != nil {
|
||||
return nil, fmt.Errorf("failed to create config directory: %w", err)
|
||||
}
|
||||
|
||||
musicDir := filepath.Join(home, "Music")
|
||||
if err := fileutil.EnsureDir(musicDir); err != nil {
|
||||
return nil, fmt.Errorf("failed to create music directory: %w", err)
|
||||
}
|
||||
|
||||
appDir := path.Join(musicDir, "GoDeez")
|
||||
if err := fileutil.EnsureDir(appDir); err != nil {
|
||||
return nil, fmt.Errorf("failed to create app directory: %w", err)
|
||||
}
|
||||
|
||||
cfg, err := config.New(cfgPath, cfgDir)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := store.OpenDB(cfgDir); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &Context{
|
||||
AppDir: appDir,
|
||||
Config: cfg,
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user