diff options
author | Luka Markušić <luka.markusic@microblink.com> | 2022-06-09 15:57:54 +0200 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2022-06-11 09:42:51 +1000 |
commit | a955dbcfd7c4c9c2e200f90fbbce209f84ff4590 (patch) | |
tree | df3ec6d6833b7edd6f4ee682566577c0043f37c0 /pkg/app/app.go | |
parent | 658a6b239baa2fb2d077d0753d7036e378d0e0bf (diff) |
Validate recent repo before blindly opening it
Diffstat (limited to 'pkg/app/app.go')
-rw-r--r-- | pkg/app/app.go | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/pkg/app/app.go b/pkg/app/app.go index 2d1264e7b..c6dc12d7b 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -145,6 +145,11 @@ func isGitVersionValid(versionStr string) bool { return true } +func isDirectoryAGitRepository(dir string) (bool, error) { + info, err := os.Stat(filepath.Join(dir, ".git")) + return info != nil && info.IsDir(), err +} + func (app *App) setupRepo() (bool, error) { if err := app.validateGitVersion(); err != nil { return false, err @@ -161,9 +166,8 @@ func (app *App) setupRepo() (bool, error) { if err != nil { return false, err } - info, _ := os.Stat(filepath.Join(cwd, ".git")) - if info != nil && info.IsDir() { - return false, err // Current directory appears to be a git repository. + if isRepo, err := isDirectoryAGitRepository(cwd); isRepo { + return false, err } shouldInitRepo := true @@ -181,12 +185,9 @@ func (app *App) setupRepo() (bool, error) { if !shouldInitRepo { // check if we have a recent repo we can open - recentRepos := app.Config.GetAppState().RecentRepos - if len(recentRepos) > 0 { - var err error - // try opening each repo in turn, in case any have been deleted - for _, repoDir := range recentRepos { - if err = os.Chdir(repoDir); err == nil { + for _, repoDir := range app.Config.GetAppState().RecentRepos { + if isRepo, _ := isDirectoryAGitRepository(repoDir); isRepo { + if err := os.Chdir(repoDir); err == nil { return true, nil } } |