From 8cfc3607c289e3338524b7bf06399c3a330efc40 Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Sat, 15 Apr 2023 20:46:43 +0200 Subject: [PATCH] Fixed opening terminal with powershell in windows --- src/main/kotlin/com/jetpackduba/gitnuro/extensions/Shell.kt | 2 +- .../jetpackduba/gitnuro/terminal/FlatpakTerminalProvider.kt | 6 ++++-- .../jetpackduba/gitnuro/terminal/LinuxTerminalProvider.kt | 2 +- .../com/jetpackduba/gitnuro/terminal/MacTerminalProvider.kt | 2 +- .../gitnuro/terminal/OpenRepositoryInTerminalUseCase.kt | 2 +- .../jetpackduba/gitnuro/terminal/WindowsTerminalProvider.kt | 5 ++--- .../com/jetpackduba/gitnuro/viewmodels/TabViewModel.kt | 2 +- 7 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/extensions/Shell.kt b/src/main/kotlin/com/jetpackduba/gitnuro/extensions/Shell.kt index 44c4be5..4e0aa2e 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/extensions/Shell.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/extensions/Shell.kt @@ -27,7 +27,7 @@ fun runCommand(command: String): String? { } } -fun runCommandInPath(command: String, path: String) { +fun runCommandInPath(command: List, path: String) { val processBuilder = ProcessBuilder(command).apply { directory(File(path)) } diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/terminal/FlatpakTerminalProvider.kt b/src/main/kotlin/com/jetpackduba/gitnuro/terminal/FlatpakTerminalProvider.kt index 7c42046..17b12ac 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/terminal/FlatpakTerminalProvider.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/terminal/FlatpakTerminalProvider.kt @@ -4,7 +4,7 @@ import com.jetpackduba.gitnuro.extensions.runCommand import com.jetpackduba.gitnuro.extensions.runCommandInPath 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 class FlatpakTerminalProvider @Inject constructor( @@ -22,6 +22,8 @@ class FlatpakTerminalProvider @Inject constructor( } 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) } } \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/terminal/LinuxTerminalProvider.kt b/src/main/kotlin/com/jetpackduba/gitnuro/terminal/LinuxTerminalProvider.kt index 545aa21..6a0cac9 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/terminal/LinuxTerminalProvider.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/terminal/LinuxTerminalProvider.kt @@ -22,6 +22,6 @@ class LinuxTerminalProvider @Inject constructor() : ITerminalProvider { } override fun startTerminal(terminalEmulator: TerminalEmulator, repositoryPath: String) { - runCommandInPath(terminalEmulator.path, repositoryPath) + runCommandInPath(listOf(terminalEmulator.path), repositoryPath) } } \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/terminal/MacTerminalProvider.kt b/src/main/kotlin/com/jetpackduba/gitnuro/terminal/MacTerminalProvider.kt index 5cdf668..8bdcee5 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/terminal/MacTerminalProvider.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/terminal/MacTerminalProvider.kt @@ -19,6 +19,6 @@ class MacTerminalProvider @Inject constructor() : ITerminalProvider { } override fun startTerminal(terminalEmulator: TerminalEmulator, repositoryPath: String) { - runCommandInPath("open -a ${terminalEmulator.path}", repositoryPath) + runCommandInPath(listOf("open", "-a", terminalEmulator.path), repositoryPath) } } \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/terminal/OpenRepositoryInTerminalUseCase.kt b/src/main/kotlin/com/jetpackduba/gitnuro/terminal/OpenRepositoryInTerminalUseCase.kt index 54237ae..05c386b 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/terminal/OpenRepositoryInTerminalUseCase.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/terminal/OpenRepositoryInTerminalUseCase.kt @@ -14,7 +14,7 @@ class OpenRepositoryInTerminalUseCase @Inject constructor( for (terminal in terminalEmulators) { val isTerminalEmulatorInstalled = terminalProvider.isTerminalInstalled(terminal) if (isTerminalEmulatorInstalled) { - runCommandInPath(terminal.path, path) + terminalProvider.startTerminal(terminal, path) break } } diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/terminal/WindowsTerminalProvider.kt b/src/main/kotlin/com/jetpackduba/gitnuro/terminal/WindowsTerminalProvider.kt index cc13b84..ad5e938 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/terminal/WindowsTerminalProvider.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/terminal/WindowsTerminalProvider.kt @@ -3,11 +3,10 @@ package com.jetpackduba.gitnuro.terminal import com.jetpackduba.gitnuro.extensions.runCommandInPath import javax.inject.Inject -// TODO Test this on windows class WindowsTerminalProvider @Inject constructor() : ITerminalProvider { override fun getTerminalEmulators(): List { 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) { - runCommandInPath("start ${terminalEmulator.path}", repositoryPath) + runCommandInPath(listOf("cmd", "/c", "start", terminalEmulator.path), repositoryPath) } } \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/TabViewModel.kt b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/TabViewModel.kt index f448627..d3abe18 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/TabViewModel.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/TabViewModel.kt @@ -245,7 +245,7 @@ class TabViewModel @Inject constructor( launch { fileChangesWatcher.changesNotifier.collect { latestUpdateChangedGitDir -> 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) { hasGitDirChanged = true