mirror of
https://github.com/danielmiessler/Fabric.git
synced 2026-01-10 06:48:04 -05:00
- Replace hardcoded strings with i18n.T translations - Add en and es JSON locale files - Implement custom translated help system - Enable language detection from CLI args - Add locale download capability - Localize error messages throughout codebase - Support TTS and notification translations
58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
package cli
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/danielmiessler/fabric/internal/core"
|
|
"github.com/danielmiessler/fabric/internal/i18n"
|
|
"github.com/danielmiessler/fabric/internal/plugins/db/fsdb"
|
|
)
|
|
|
|
const ConfigDirPerms os.FileMode = 0755
|
|
const EnvFilePerms os.FileMode = 0644
|
|
|
|
// initializeFabric initializes the fabric database and plugin registry
|
|
func initializeFabric() (registry *core.PluginRegistry, err error) {
|
|
var homedir string
|
|
if homedir, err = os.UserHomeDir(); err != nil {
|
|
return
|
|
}
|
|
|
|
fabricDb := fsdb.NewDb(filepath.Join(homedir, ".config/fabric"))
|
|
if err = fabricDb.Configure(); err != nil {
|
|
return
|
|
}
|
|
|
|
if registry, err = core.NewPluginRegistry(fabricDb); err != nil {
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// ensureEnvFile checks for the default ~/.config/fabric/.env file and creates it
|
|
// along with the parent directory if it does not exist.
|
|
func ensureEnvFile() (err error) {
|
|
var homedir string
|
|
if homedir, err = os.UserHomeDir(); err != nil {
|
|
return fmt.Errorf("%s", fmt.Sprintf(i18n.T("could_not_determine_home_dir"), err))
|
|
}
|
|
configDir := filepath.Join(homedir, ".config", "fabric")
|
|
envPath := filepath.Join(configDir, ".env")
|
|
|
|
if _, statErr := os.Stat(envPath); statErr != nil {
|
|
if !os.IsNotExist(statErr) {
|
|
return fmt.Errorf("%s", fmt.Sprintf(i18n.T("could_not_stat_env_file"), statErr))
|
|
}
|
|
if err = os.MkdirAll(configDir, ConfigDirPerms); err != nil {
|
|
return fmt.Errorf("%s", fmt.Sprintf(i18n.T("could_not_create_config_dir"), err))
|
|
}
|
|
if err = os.WriteFile(envPath, []byte{}, EnvFilePerms); err != nil {
|
|
return fmt.Errorf("%s", fmt.Sprintf(i18n.T("could_not_create_env_file"), err))
|
|
}
|
|
}
|
|
return
|
|
}
|