ExportFileChecker.kt
package de.pflugradts.passbird.application.process.exchange
import de.pflugradts.passbird.application.RunContext
import de.pflugradts.passbird.application.UserInterfaceAdapterPort
import de.pflugradts.passbird.application.configuration.ReadableConfiguration
import de.pflugradts.passbird.application.process.Initializer
import de.pflugradts.passbird.application.toFileName
import de.pflugradts.passbird.application.util.SystemOperation
import de.pflugradts.passbird.domain.model.shell.Shell.Companion.shellOf
import de.pflugradts.passbird.domain.model.transfer.Output.Companion.outputOf
class ExportFileChecker constructor(
private val configuration: ReadableConfiguration,
private val runContext: RunContext,
private val systemOperation: SystemOperation,
private val userInterfaceAdapterPort: UserInterfaceAdapterPort,
) : Initializer {
override fun run() {
val exchangeFile = systemOperation.resolvePath(runContext.homeDirectory, ReadableConfiguration.EXCHANGE_FILENAME.toFileName())
if (configuration.application.exchange.promptOnExportFile && systemOperation.exists(exchangeFile)) {
val prompt = "An password export file has been detected. Should this file be deleted? Y/n "
if (userInterfaceAdapterPort.receiveYes(outputOf(shellOf(prompt)))) {
systemOperation.delete(exchangeFile)
userInterfaceAdapterPort.send(outputOf(shellOf("Export file has been successfully deleted.")))
} else {
val msg = "Export file has not been deleted but prompt for deletion will be repeated upon next program start."
userInterfaceAdapterPort.send(outputOf(shellOf(msg)))
}
userInterfaceAdapterPort.sendLineBreak()
}
}
}