74 lines
1.5 KiB
Go
74 lines
1.5 KiB
Go
// This file is only compiled with -tags gui.
|
|
//go:build gui
|
|
// +build gui
|
|
|
|
package main
|
|
|
|
import (
|
|
"embed"
|
|
_ "embed"
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"verstak/internal/core/storage"
|
|
"verstak/internal/core/nodes"
|
|
"verstak/internal/core/files"
|
|
"verstak/internal/core/notes"
|
|
"verstak/internal/core/actions"
|
|
"verstak/internal/core/worklog"
|
|
"verstak/internal/core/search"
|
|
"verstak/internal/core/plugins"
|
|
|
|
"github.com/wailsapp/wails/v3/pkg/application"
|
|
)
|
|
|
|
//go:embed all:frontend/dist
|
|
var assets embed.FS
|
|
|
|
func main() {
|
|
vaultPath := "."
|
|
if len(os.Args) > 1 {
|
|
vaultPath = os.Args[1]
|
|
}
|
|
|
|
abs, err := filepath.Abs(vaultPath)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
dbPath := filepath.Join(abs, ".verstak", "index.db")
|
|
db, err := storage.Open(dbPath)
|
|
if err != nil {
|
|
log.Fatalf("Open vault: %v", err)
|
|
}
|
|
defer db.Close()
|
|
|
|
// Initialize core services (registered for Wails bindings).
|
|
_ = nodes.NewRepository(db)
|
|
_ = files.NewService(db, abs)
|
|
_ = notes.NewService(db, abs, nil, nil)
|
|
_ = actions.NewService(db)
|
|
_ = worklog.NewService(db)
|
|
_ = search.NewService(db)
|
|
plugins.NewManager(abs).Discover()
|
|
|
|
app := application.New(application.Options{
|
|
Name: "verstak",
|
|
Description: "Verstak — local-first working vault",
|
|
Assets: application.AssetOptions{
|
|
Handler: application.AssetFileServerFS(assets),
|
|
},
|
|
})
|
|
|
|
app.Window.NewWithOptions(application.WebviewWindowOptions{
|
|
Title: "Верстак",
|
|
Width: 1200,
|
|
Height: 800,
|
|
})
|
|
|
|
if err := app.Run(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|