@@ -12,7 +12,12 @@ import androidx.compose.ui.window.WindowPosition
12
12
import androidx.compose.ui.window.application
13
13
import androidx.compose.ui.window.rememberWindowState
14
14
import com.jdamcd.arrivals.Arrivals
15
+ import com.jdamcd.arrivals.Settings
16
+ import com.jdamcd.arrivals.SettingsConfig
15
17
import com.jdamcd.arrivals.initKoin
18
+ import org.yaml.snakeyaml.Yaml
19
+ import java.io.File
20
+ import java.io.FileInputStream
16
21
import kotlin.system.exitProcess
17
22
18
23
private val koin = initKoin().koin
@@ -27,6 +32,8 @@ fun main(args: Array<String>) = application {
27
32
size = DpSize (width.dp, height.dp)
28
33
)
29
34
35
+ loadConfig(koin.get<Settings >())
36
+
30
37
val viewModel = ArrivalsViewModel (koin.get<Arrivals >())
31
38
val state: ArrivalsState by viewModel.uiState.collectAsState(ArrivalsState .Loading )
32
39
@@ -48,3 +55,25 @@ fun main(args: Array<String>) = application {
48
55
}
49
56
50
57
private fun dimenFromArg (args : Array <String >, index : Int ): Int? = if (args.size > index) args[index].toIntOrNull() else null
58
+
59
+ fun loadConfig (settings : Settings ) {
60
+ val path = " ${System .getProperty(" user.home" )} /.arrivals.yml"
61
+ val configFile = File (path)
62
+
63
+ if (configFile.exists()) {
64
+ try {
65
+ FileInputStream (configFile).use { inputStream ->
66
+ val data: Map <String , String > = Yaml ().load(inputStream)
67
+ data[SettingsConfig .MODE ]?.let { settings.mode = it }
68
+ data[SettingsConfig .GTFS_REALTIME ]?.let { settings.gtfsRealtime = it }
69
+ data[SettingsConfig .GTFS_SCHEDULE ]?.let { settings.gtfsSchedule = it }
70
+ data[SettingsConfig .GTFS_STOP ]?.let { settings.gtfsStop = it }
71
+ data[SettingsConfig .TFL_STOP ]?.let { settings.tflStopId = it }
72
+ data[SettingsConfig .TFL_PLATFORM ]?.let { settings.tflPlatform = it }
73
+ data[SettingsConfig .TFL_DIRECTION ]?.let { settings.tflDirection = it }
74
+ }
75
+ } catch (e: Exception ) {
76
+ println (" Error reading config file: ${e.message} " )
77
+ }
78
+ }
79
+ }
0 commit comments