// Package webui тримає зібраний фронтенд, вшитий у бінарник API. // // Каталог dist/ порожній у репозиторії й наповнюється при збірці: // коміт зібраного бандла означав би тримати в git артефакт, який // розходиться з кодом при кожній правці й роздуває історію. // // Порожній dist — робочий стан: API стартує без інтерфейсу, а розробка // йде проти vite з гарячим перезавантаженням. package webui import ( "embed" "io/fs" ) //go:embed all:dist var dist embed.FS // FS повертає корінь зібраного інтерфейсу. // // Другий результат — чи є що віддавати. У збірці без фронтенду в dist // лежить лише заглушка з поясненням; ознака справжнього бандла — // каталог assets/, який робить vite. Перевіряти наявність index.html // марно: він там завжди, інакше embed не скомпілюється. func FS() (fs.FS, bool) { sub, err := fs.Sub(dist, "dist") if err != nil { return nil, false } if _, err := fs.Stat(sub, "assets"); err != nil { return nil, false } return sub, true }