fix: keep default templates and plugins folder working

This commit is contained in:
mirivlad 2026-06-04 03:28:32 +08:00
parent 9d14ba50af
commit 58795b66b2
5 changed files with 74 additions and 2 deletions

View File

@ -231,6 +231,26 @@ func (a *App) OpenVaultFolder() error {
return cmd.Run() return cmd.Run()
} }
func ensurePluginsFolder(vaultPath string) (string, error) {
path := filepath.Join(vaultPath, ".verstak", "plugins")
if err := os.MkdirAll(path, 0o750); err != nil {
return "", err
}
return path, nil
}
func (a *App) OpenPluginsFolder() error {
if !a.IsReady() {
return fmt.Errorf("vault not open")
}
target, err := ensurePluginsFolder(a.vault)
if err != nil {
return err
}
cmd := exec.Command("xdg-open", target)
return cmd.Run()
}
func (a *App) Search(query string) ([]SearchResultDTO, error) { func (a *App) Search(query string) ([]SearchResultDTO, error) {
if err := a.requireVault(); err != nil { if err := a.requireVault(); err != nil {
return nil, err return nil, err

View File

@ -0,0 +1,26 @@
package main
import (
"os"
"path/filepath"
"testing"
)
func TestEnsurePluginsFolder(t *testing.T) {
vault := t.TempDir()
path, err := ensurePluginsFolder(vault)
if err != nil {
t.Fatalf("ensurePluginsFolder: %v", err)
}
want := filepath.Join(vault, ".verstak", "plugins")
if path != want {
t.Fatalf("plugins path = %q, want %q", path, want)
}
if info, err := os.Stat(path); err != nil {
t.Fatalf("stat plugins dir: %v", err)
} else if !info.IsDir() {
t.Fatalf("plugins path is not a directory: %s", path)
}
}

View File

@ -12,7 +12,7 @@
} }
async function openPluginsDir() { async function openPluginsDir() {
try { await wailsCall('OpenFolder', '') } catch(e) {} try { await wailsCall('OpenPluginsFolder') } catch(e) {}
} }
</script> </script>

View File

@ -55,7 +55,7 @@ func DefaultAppConfig() *AppConfig {
Version: AppConfigVersion, Version: AppConfigVersion,
Theme: "system", Theme: "system",
Language: "ru", Language: "ru",
EnabledTemplates: []string{"folder", "project", "client", "document", "recipe"}, EnabledTemplates: []string{"folder.default", "project.default", "client.default", "document.default", "recipe.default"},
EnabledPlugins: []string{}, EnabledPlugins: []string{},
} }
} }

View File

@ -0,0 +1,26 @@
package config_test
import (
"testing"
"verstak/internal/core/config"
"verstak/internal/core/templates"
)
func TestDefaultAppConfigEnabledTemplatesMatchSystemTemplateIDs(t *testing.T) {
cfg := config.DefaultAppConfig()
if len(cfg.EnabledTemplates) == 0 {
t.Fatal("default enabled templates is empty")
}
reg := templates.NewRegistry()
if err := reg.LoadSystem(); err != nil {
t.Fatalf("LoadSystem: %v", err)
}
for _, id := range cfg.EnabledTemplates {
if _, ok := reg.Get(id); !ok {
t.Fatalf("default enabled template %q does not match any system template ID", id)
}
}
}