Fixed opening terminal with powershell in windows

This commit is contained in:
Abdelilah El Aissaoui 2023-04-15 20:46:43 +02:00
parent 8e9f21beee
commit 8cfc3607c2
7 changed files with 11 additions and 10 deletions

View File

@ -27,7 +27,7 @@ fun runCommand(command: String): String? {
} }
} }
fun runCommandInPath(command: String, path: String) { fun runCommandInPath(command: List<String>, path: String) {
val processBuilder = ProcessBuilder(command).apply { val processBuilder = ProcessBuilder(command).apply {
directory(File(path)) directory(File(path))
} }

View File

@ -4,7 +4,7 @@ import com.jetpackduba.gitnuro.extensions.runCommand
import com.jetpackduba.gitnuro.extensions.runCommandInPath import com.jetpackduba.gitnuro.extensions.runCommandInPath
import javax.inject.Inject import javax.inject.Inject
private const val FLATPAK_PREFIX = "/usr/bin/flatpak-spawn --host --env=TERM=xterm-256color" private val FLATPAK_PREFIX = listOf("/usr/bin/flatpak-spawn", "--host", "--env=TERM=xterm-256color")
// TODO Test in flatpak // TODO Test in flatpak
class FlatpakTerminalProvider @Inject constructor( class FlatpakTerminalProvider @Inject constructor(
@ -22,6 +22,8 @@ class FlatpakTerminalProvider @Inject constructor(
} }
override fun startTerminal(terminalEmulator: TerminalEmulator, repositoryPath: String) { override fun startTerminal(terminalEmulator: TerminalEmulator, repositoryPath: String) {
runCommandInPath("$FLATPAK_PREFIX ${terminalEmulator.path}", repositoryPath) val command = FLATPAK_PREFIX.toMutableList()
command.add(terminalEmulator.path)
runCommandInPath(command, repositoryPath)
} }
} }

View File

@ -22,6 +22,6 @@ class LinuxTerminalProvider @Inject constructor() : ITerminalProvider {
} }
override fun startTerminal(terminalEmulator: TerminalEmulator, repositoryPath: String) { override fun startTerminal(terminalEmulator: TerminalEmulator, repositoryPath: String) {
runCommandInPath(terminalEmulator.path, repositoryPath) runCommandInPath(listOf(terminalEmulator.path), repositoryPath)
} }
} }

View File

@ -19,6 +19,6 @@ class MacTerminalProvider @Inject constructor() : ITerminalProvider {
} }
override fun startTerminal(terminalEmulator: TerminalEmulator, repositoryPath: String) { override fun startTerminal(terminalEmulator: TerminalEmulator, repositoryPath: String) {
runCommandInPath("open -a ${terminalEmulator.path}", repositoryPath) runCommandInPath(listOf("open", "-a", terminalEmulator.path), repositoryPath)
} }
} }

View File

@ -14,7 +14,7 @@ class OpenRepositoryInTerminalUseCase @Inject constructor(
for (terminal in terminalEmulators) { for (terminal in terminalEmulators) {
val isTerminalEmulatorInstalled = terminalProvider.isTerminalInstalled(terminal) val isTerminalEmulatorInstalled = terminalProvider.isTerminalInstalled(terminal)
if (isTerminalEmulatorInstalled) { if (isTerminalEmulatorInstalled) {
runCommandInPath(terminal.path, path) terminalProvider.startTerminal(terminal, path)
break break
} }
} }

View File

@ -3,11 +3,10 @@ package com.jetpackduba.gitnuro.terminal
import com.jetpackduba.gitnuro.extensions.runCommandInPath import com.jetpackduba.gitnuro.extensions.runCommandInPath
import javax.inject.Inject import javax.inject.Inject
// TODO Test this on windows
class WindowsTerminalProvider @Inject constructor() : ITerminalProvider { class WindowsTerminalProvider @Inject constructor() : ITerminalProvider {
override fun getTerminalEmulators(): List<TerminalEmulator> { override fun getTerminalEmulators(): List<TerminalEmulator> {
return listOf( return listOf(
TerminalEmulator("Powershell", "powershell"), TerminalEmulator("Powershell", "powershell.exe"),
) )
} }
@ -17,6 +16,6 @@ class WindowsTerminalProvider @Inject constructor() : ITerminalProvider {
} }
override fun startTerminal(terminalEmulator: TerminalEmulator, repositoryPath: String) { override fun startTerminal(terminalEmulator: TerminalEmulator, repositoryPath: String) {
runCommandInPath("start ${terminalEmulator.path}", repositoryPath) runCommandInPath(listOf("cmd", "/c", "start", terminalEmulator.path), repositoryPath)
} }
} }

View File

@ -245,7 +245,7 @@ class TabViewModel @Inject constructor(
launch { launch {
fileChangesWatcher.changesNotifier.collect { latestUpdateChangedGitDir -> fileChangesWatcher.changesNotifier.collect { latestUpdateChangedGitDir ->
if (!tabState.operationRunning) { // Only update if there isn't any process running if (!tabState.operationRunning) { // Only update if there isn't any process running
printLog(TAG, "Detected changes in the repository's directory") printDebug(TAG, "Detected changes in the repository's directory")
if (latestUpdateChangedGitDir) { if (latestUpdateChangedGitDir) {
hasGitDirChanged = true hasGitDirChanged = true