Gitnuro/src/main/kotlin/com/jetpackduba/gitnuro/di/modules/ShellModule.kt
2023-04-17 17:03:06 +02:00

44 lines
1.5 KiB
Kotlin

package com.jetpackduba.gitnuro.di.modules
import com.jetpackduba.gitnuro.AppEnvInfo
import com.jetpackduba.gitnuro.managers.FlatpakShellManager
import com.jetpackduba.gitnuro.managers.IShellManager
import com.jetpackduba.gitnuro.managers.ShellManager
import com.jetpackduba.gitnuro.system.OS
import com.jetpackduba.gitnuro.system.getCurrentOs
import com.jetpackduba.gitnuro.terminal.ITerminalProvider
import com.jetpackduba.gitnuro.terminal.LinuxTerminalProvider
import com.jetpackduba.gitnuro.terminal.MacTerminalProvider
import com.jetpackduba.gitnuro.terminal.WindowsTerminalProvider
import dagger.Module
import dagger.Provides
import javax.inject.Provider
@Module
class ShellModule {
@Provides
fun provideShellManager(
appEnvInfo: AppEnvInfo,
shellManager: Provider<ShellManager>,
flatpakShellManager: Provider<FlatpakShellManager>,
): IShellManager {
return if (appEnvInfo.isFlatpak)
flatpakShellManager.get()
else
shellManager.get()
}
@Provides
fun provideTerminalProvider(
linuxTerminalProvider: Provider<LinuxTerminalProvider>,
windowsTerminalProvider: Provider<WindowsTerminalProvider>,
macTerminalProvider: Provider<MacTerminalProvider>,
): ITerminalProvider {
return when (getCurrentOs()) {
OS.LINUX -> linuxTerminalProvider.get()
OS.WINDOWS -> windowsTerminalProvider.get()
OS.MAC -> macTerminalProvider.get()
OS.UNKNOWN -> throw NotImplementedError("Unknown operating system")
}
}
}