diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2021-10-16 12:07:24 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2021-10-16 12:22:34 +1100 |
commit | d02e52989ea33fbdbc89a98f5f39932a36acfeb7 (patch) | |
tree | 7fa75576c610b7f9b3ca8fbf778d79df93236eca /pkg | |
parent | 913a2fd0656c393e743686cf6fe823a963916463 (diff) |
small changes
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/config/app_config.go | 88 | ||||
-rw-r--r-- | pkg/gui/gui.go | 6 | ||||
-rw-r--r-- | pkg/gui/recent_repos_panel.go | 6 | ||||
-rw-r--r-- | pkg/gui/status_panel.go | 12 | ||||
-rw-r--r-- | pkg/i18n/english.go | 4 | ||||
-rw-r--r-- | pkg/updates/updates.go | 6 |
6 files changed, 59 insertions, 63 deletions
diff --git a/pkg/config/app_config.go b/pkg/config/app_config.go index dc866e253..03807a3ce 100644 --- a/pkg/config/app_config.go +++ b/pkg/config/app_config.go @@ -57,19 +57,16 @@ func NewAppConfig(name, version, commit, date string, buildSource string, debugg } var userConfigFiles []string - - userConfigFilesOverwrite := os.Getenv("LG_CONFIG_FILE") - deafultConfFiles := true - if userConfigFilesOverwrite != "" { + customConfigFiles := os.Getenv("LG_CONFIG_FILE") + if customConfigFiles != "" { // Load user defined config files - userConfigFiles = strings.Split(userConfigFilesOverwrite, ",") - deafultConfFiles = false + userConfigFiles = strings.Split(customConfigFiles, ",") } else { // Load default config files userConfigFiles = []string{filepath.Join(configDir, ConfigFilename)} } - userConfig, err := loadUserConfigWithDefaults(userConfigFiles, deafultConfFiles) + userConfig, err := loadUserConfigWithDefaults(userConfigFiles) if err != nil { return nil, err } @@ -86,25 +83,28 @@ func NewAppConfig(name, version, commit, date string, buildSource string, debugg } appConfig := &AppConfig{ - Name: "lazygit", - Version: version, - Commit: commit, - BuildDate: date, - Debug: debuggingFlag, - BuildSource: buildSource, - UserConfig: userConfig, - UserConfigFiles: userConfigFiles, - UserConfigDir: configDir, - DeafultConfFiles: deafultConfFiles, - UserConfigPath: filepath.Join(configDir, "config.yml"), - TempDir: tempDir, - AppState: appState, - IsNewRepo: false, + Name: "lazygit", + Version: version, + Commit: commit, + BuildDate: date, + Debug: debuggingFlag, + BuildSource: buildSource, + UserConfig: userConfig, + UserConfigFiles: userConfigFiles, + UserConfigDir: configDir, + UserConfigPath: filepath.Join(configDir, "config.yml"), + TempDir: tempDir, + AppState: appState, + IsNewRepo: false, } return appConfig, nil } +func isCustomConfigFile(path string) bool { + return path != filepath.Join(ConfigDir(), ConfigFilename) +} + func ConfigDir() string { legacyConfigDirectory := configDirForVendor("jesseduffield") if _, err := os.Stat(legacyConfigDirectory); !os.IsNotExist(err) { @@ -128,37 +128,39 @@ func findOrCreateConfigDir() (string, error) { return folder, os.MkdirAll(folder, 0755) } -func loadUserConfigWithDefaults(configFiles []string, deafultConfFiles bool) (*UserConfig, error) { - return loadUserConfig(configFiles, GetDefaultConfig(), deafultConfFiles) +func loadUserConfigWithDefaults(configFiles []string) (*UserConfig, error) { + return loadUserConfig(configFiles, GetDefaultConfig()) } -func loadUserConfig(configFiles []string, base *UserConfig, deafultConfFiles bool) (*UserConfig, error) { - for _, fileName := range configFiles { - content, readConfFileErr := ioutil.ReadFile(fileName) - if readConfFileErr != nil { - if !deafultConfFiles { - return nil, readConfFileErr +func loadUserConfig(configFiles []string, base *UserConfig) (*UserConfig, error) { + for _, path := range configFiles { + if _, err := os.Stat(path); err != nil { + if !os.IsNotExist(err) { + return nil, err } - _, err := os.Stat(fileName) - if err == nil { - return nil, readConfFileErr - } - if !os.IsNotExist(err) { - return nil, readConfFileErr + // if use has supplied their own custom config file path(s), we assume + // the files have already been created, so we won't go and create them here. + if isCustomConfigFile(path) { + return nil, err } - file, err := os.Create(fileName) + file, err := os.Create(path) if err != nil { if os.IsPermission(err) { + // apparently when people have read-only permissions they prefer us to fail silently continue - } else { - return nil, readConfFileErr } + return nil, err } file.Close() } + content, err := ioutil.ReadFile(path) + if err != nil { + return nil, err + } + if err := yaml.Unmarshal(content, base); err != nil { return nil, err } @@ -231,7 +233,7 @@ func (c *AppConfig) GetTempDir() string { } func (c *AppConfig) ReloadUserConfig() error { - userConfig, err := loadUserConfigWithDefaults(c.UserConfigFiles, c.DeafultConfFiles) + userConfig, err := loadUserConfigWithDefaults(c.UserConfigFiles) if err != nil { return err } @@ -268,7 +270,13 @@ func (c *AppConfig) SaveAppState() error { return err } - return ioutil.WriteFile(filepath, marshalledAppState, 0644) + err = ioutil.WriteFile(filepath, marshalledAppState, 0644) + if err != nil && os.IsPermission(err) { + // apparently when people have read-only permissions they prefer us to fail silently + return nil + } + + return err } // loadAppState loads recorded AppState from file diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index 80131f00d..95c165a71 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -656,11 +656,7 @@ func (gui *Gui) showIntroPopupMessage(done chan struct{}) error { onConfirm := func() error { done <- struct{}{} gui.Config.GetAppState().StartupPopupVersion = StartupPopupVersion - err := gui.Config.SaveAppState() - if err != nil && os.IsPermission(err) { - return nil - } - return err + return gui.Config.SaveAppState() } return gui.ask(askOpts{ diff --git a/pkg/gui/recent_repos_panel.go b/pkg/gui/recent_repos_panel.go index f82b2838a..d1ac4ea30 100644 --- a/pkg/gui/recent_repos_panel.go +++ b/pkg/gui/recent_repos_panel.go @@ -114,11 +114,7 @@ func (gui *Gui) updateRecentRepoList() error { known, recentRepos := newRecentReposList(recentRepos, currentRepo) gui.Config.SetIsNewRepo(known) gui.Config.GetAppState().RecentRepos = recentRepos - err = gui.Config.SaveAppState() - if err != nil && os.IsPermission(err) { - return nil - } - return err + return gui.Config.SaveAppState() } // newRecentReposList returns a new repo list with a new entry but only when it doesn't exist yet diff --git a/pkg/gui/status_panel.go b/pkg/gui/status_panel.go index 2800a6bf2..84eb8af52 100644 --- a/pkg/gui/status_panel.go +++ b/pkg/gui/status_panel.go @@ -119,7 +119,7 @@ func (gui *Gui) askForConfigFile(action func(file string) error) error { confFiles := gui.Config.GetUserConfigFiles() switch len(confFiles) { case 0: - return errors.New("no config file found") + return errors.New(gui.Tr.NoConfigFileFoundErr) case 1: return action(confFiles[0]) default: @@ -133,20 +133,16 @@ func (gui *Gui) askForConfigFile(action func(file string) error) error { }, } } - return gui.createMenu("select config file", menuItems, createMenuOptions{}) + return gui.createMenu(gui.Tr.SelectConfigFile, menuItems, createMenuOptions{}) } } func (gui *Gui) handleOpenConfig() error { - return gui.askForConfigFile(func(file string) error { - return gui.openFile(file) - }) + return gui.askForConfigFile(gui.openFile) } func (gui *Gui) handleEditConfig() error { - return gui.askForConfigFile(func(file string) error { - return gui.editFile(file) - }) + return gui.askForConfigFile(gui.editFile) } func lazygitTitle() string { diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go index 5a88ba396..8e1ac9647 100644 --- a/pkg/i18n/english.go +++ b/pkg/i18n/english.go @@ -427,6 +427,8 @@ type TranslationSet struct { LcSelectBranch string CreatePullRequest string CreatingPullRequestAtUrl string + SelectConfigFile string + NoConfigFileFoundErr string Spans Spans } @@ -947,6 +949,8 @@ func englishTranslationSet() TranslationSet { LcDefaultBranch: "default branch", LcSelectBranch: "select branch", CreatingPullRequestAtUrl: "Creating pull request at URL: %s", + SelectConfigFile: "Select config file", + NoConfigFileFoundErr: "No config file found", Spans: Spans{ // TODO: combine this with the original keybinding descriptions (those are all in lowercase atm) CheckoutCommit: "Checkout commit", diff --git a/pkg/updates/updates.go b/pkg/updates/updates.go index a190fdb2c..cb5a64788 100644 --- a/pkg/updates/updates.go +++ b/pkg/updates/updates.go @@ -76,11 +76,7 @@ func (u *Updater) getLatestVersionNumber() (string, error) { // RecordLastUpdateCheck records last time an update check was performed func (u *Updater) RecordLastUpdateCheck() error { u.Config.GetAppState().LastUpdateCheck = time.Now().Unix() - err := u.Config.SaveAppState() - if err != nil && os.IsPermission(err) { - return nil - } - return err + return u.Config.SaveAppState() } // expecting version to be of the form `v12.34.56` |