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, flatpakShellManager: Provider, ): IShellManager { return if (appEnvInfo.isFlatpak) flatpakShellManager.get() else shellManager.get() } @Provides fun provideTerminalProvider( linuxTerminalProvider: Provider, windowsTerminalProvider: Provider, macTerminalProvider: Provider, ): ITerminalProvider { return when (getCurrentOs()) { OS.LINUX -> linuxTerminalProvider.get() OS.WINDOWS -> windowsTerminalProvider.get() OS.MAC -> macTerminalProvider.get() OS.UNKNOWN -> throw NotImplementedError("Unknown operating system") } } }