From d544cc4e9428ae709b978f05a30553bcc6f4d30d Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Wed, 30 Mar 2022 00:08:53 +0200 Subject: [PATCH] Moved repository opening to repository manager --- src/main/kotlin/app/git/RepositoryManager.kt | 21 +++++++++++++++++++ .../kotlin/app/viewmodels/TabViewModel.kt | 16 +------------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/main/kotlin/app/git/RepositoryManager.kt b/src/main/kotlin/app/git/RepositoryManager.kt index 27df2a9..e4cd7a8 100644 --- a/src/main/kotlin/app/git/RepositoryManager.kt +++ b/src/main/kotlin/app/git/RepositoryManager.kt @@ -3,10 +3,31 @@ package app.git import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.eclipse.jgit.api.Git +import org.eclipse.jgit.lib.Repository +import org.eclipse.jgit.storage.file.FileRepositoryBuilder +import java.io.File import javax.inject.Inject class RepositoryManager @Inject constructor() { suspend fun getRepositoryState(git: Git) = withContext(Dispatchers.IO) { return@withContext git.repository.repositoryState } + + fun openRepository(directory: File): Repository { + val gitDirectory = if (directory.name == ".git") { + directory + } else { + val gitDir = File(directory, ".git") + if (gitDir.exists() && gitDir.isDirectory) { + gitDir + } else + directory + } + + val builder = FileRepositoryBuilder() + return builder.setGitDir(gitDirectory) + .readEnvironment() // scan environment GIT_* variables + .findGitDir() // scan up the file system tree + .build() + } } \ No newline at end of file diff --git a/src/main/kotlin/app/viewmodels/TabViewModel.kt b/src/main/kotlin/app/viewmodels/TabViewModel.kt index 677a3fd..09ba7bd 100644 --- a/src/main/kotlin/app/viewmodels/TabViewModel.kt +++ b/src/main/kotlin/app/viewmodels/TabViewModel.kt @@ -106,21 +106,7 @@ class TabViewModel @Inject constructor( fun openRepository(directory: File) = tabState.safeProcessingWihoutGit { println("Trying to open repository ${directory.absoluteFile}") - val gitDirectory = if (directory.name == ".git") { - directory - } else { - val gitDir = File(directory, ".git") - if (gitDir.exists() && gitDir.isDirectory) { - gitDir - } else - directory - } - - val builder = FileRepositoryBuilder() - val repository: Repository = builder.setGitDir(gitDirectory) - .readEnvironment() // scan environment GIT_* variables - .findGitDir() // scan up the file system tree - .build() + val repository: Repository = repositoryManager.openRepository(directory) try { repository.workTree // test if repository is valid