summaryrefslogtreecommitdiffstats
path: root/pkg/app/app.go
diff options
context:
space:
mode:
authorLuka Markušić <luka.markusic@microblink.com>2022-06-09 15:57:54 +0200
committerJesse Duffield <jessedduffield@gmail.com>2022-06-11 09:42:51 +1000
commita955dbcfd7c4c9c2e200f90fbbce209f84ff4590 (patch)
treedf3ec6d6833b7edd6f4ee682566577c0043f37c0 /pkg/app/app.go
parent658a6b239baa2fb2d077d0753d7036e378d0e0bf (diff)
Validate recent repo before blindly opening it
Diffstat (limited to 'pkg/app/app.go')
-rw-r--r--pkg/app/app.go19
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
}
}