@@ -7,13 +7,20 @@ import kotlinx.cli.default
77import kotlinx.serialization.ExperimentalSerializationApi
88import kotlinx.serialization.encodeToString
99import kotlinx.serialization.json.Json
10+ import net.azisaba.automaticbackupscript.config.BackupConfig
1011import net.azisaba.automaticbackupscript.config.CoreConfig
1112import java.io.File
13+ import kotlin.io.path.nameWithoutExtension
1214
1315@OptIn(ExperimentalCli ::class )
1416object MigrateCommand : Subcommand(" migrate" , " Migrate old config" ) {
15- private val oldConfigPath by option(ArgType .String , " old-config-file" , " o" , " Old configuration file" ).default(" config/backup.json" )
16- private val newConfigPath by option(ArgType .String , " new-config-file" , " n" , " New configuration file" ).default(" config/backup.toml" )
17+ private val coreConfigPath by option(ArgType .String , " Core-config-file" , " c" , " Core configuration file" ).default(" config/core.json" )
18+ private val backupConfigPath by option(
19+ ArgType .String ,
20+ " Backup-config-file" ,
21+ " b" ,
22+ " Backup configuration file" ,
23+ ).default(" config/backup.json" )
1724
1825 @OptIn(ExperimentalSerializationApi ::class )
1926 private val json =
@@ -24,12 +31,29 @@ object MigrateCommand : Subcommand("migrate", "Migrate old config") {
2431 ignoreUnknownKeys = true
2532 }
2633
34+ fun changeExtToToml (old : File ): File {
35+ val p = old.toPath()
36+ return File (p.parent.toFile(), p.nameWithoutExtension + " .toml" )
37+ }
38+
2739 override fun execute () {
2840 println (" Config migrator" )
29- println (" From: $oldConfigPath " )
30- println (" To: $newConfigPath " )
31- val config = json.decodeFromString(CoreConfig .serializer(), File (oldConfigPath).readText())
32- File (newConfigPath).writeText(CoreConfig .toml.encodeToString(config))
33- println (" Migration completed." )
41+ val oldCoreConfig: File = File (coreConfigPath)
42+ val newCoreConfig: File = changeExtToToml(oldCoreConfig)
43+ println (" From: $oldCoreConfig " )
44+ println (" To: $newCoreConfig " )
45+ val coreConfig = json.decodeFromString(CoreConfig .serializer(), oldCoreConfig.readText())
46+ newCoreConfig.writeText(CoreConfig .toml.encodeToString(coreConfig))
47+ println (" Core config migrated." )
48+
49+ val oldBackupConfig: File = File (backupConfigPath)
50+ val newBackupConfig: File = changeExtToToml(oldBackupConfig)
51+ println (" From: $oldBackupConfig " )
52+ println (" To: $newBackupConfig " )
53+ val backupConfig = json.decodeFromString(BackupConfig .serializer(), oldBackupConfig.readText())
54+ newBackupConfig.writeText(CoreConfig .toml.encodeToString(backupConfig))
55+ println (" Backup config migrated." )
56+
57+ println (" All migration completed." )
3458 }
3559}
0 commit comments