mirror of
https://github.com/certimate-go/certimate.git
synced 2026-09-05 23:40:08 +08:00
50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
package plugin
|
|
|
|
import (
|
|
"embed"
|
|
"encoding/json"
|
|
"fmt"
|
|
"io/fs"
|
|
"strings"
|
|
)
|
|
|
|
func LoadDeploySchema(fsys embed.FS) ([]byte, error) {
|
|
data, err := fsys.ReadFile("schema/deploy.json")
|
|
if err != nil {
|
|
return nil, fmt.Errorf("plugin: embedded deploy schema not found: %w", err)
|
|
}
|
|
return data, nil
|
|
}
|
|
|
|
func LoadAccessSchema(fsys embed.FS) ([]byte, error) {
|
|
data, err := fsys.ReadFile("schema/access.json")
|
|
if err != nil {
|
|
return nil, nil
|
|
}
|
|
return data, nil
|
|
}
|
|
|
|
func LoadI18n(fsys embed.FS) (map[string]map[string]string, error) {
|
|
entries, err := fs.ReadDir(fsys, "schema/i18n")
|
|
if err != nil {
|
|
return nil, fmt.Errorf("plugin: embedded i18n directory not found: %w", err)
|
|
}
|
|
result := make(map[string]map[string]string, len(entries))
|
|
for _, entry := range entries {
|
|
if entry.IsDir() || !strings.HasSuffix(entry.Name(), ".json") {
|
|
continue
|
|
}
|
|
locale := strings.TrimSuffix(entry.Name(), ".json")
|
|
data, err := fsys.ReadFile("schema/i18n/" + entry.Name())
|
|
if err != nil {
|
|
return nil, fmt.Errorf("plugin: cannot read i18n file %s: %w", entry.Name(), err)
|
|
}
|
|
var kv map[string]string
|
|
if err := json.Unmarshal(data, &kv); err != nil {
|
|
return nil, fmt.Errorf("plugin: invalid i18n JSON in %s: %w", entry.Name(), err)
|
|
}
|
|
result[locale] = kv
|
|
}
|
|
return result, nil
|
|
}
|