1- using Rocket . Core . Logging ;
1+ using System . Collections . Generic ;
2+ using System . IO ;
3+ using System . Linq ;
4+ using OpenMod . API . Jobs ;
5+ using OpenMod . API . Persistence ;
6+ using OpenMod . Core . Helpers ;
7+ using OpenMod . Core . Jobs ;
8+ using OpenMod . Core . Persistence ;
9+ using OpenMod . Installer . RocketMod . Helpers ;
10+ using Rocket . Core . Logging ;
211
312namespace OpenMod . Installer . RocketMod . Jobs
413{
@@ -7,7 +16,49 @@ public class MigrateEconomyJob : IJob
716 public void ExecuteMigration ( string [ ] args )
817 {
918 Logger . Log ( "Adding economy migration job to autoexec.yaml..." ) ;
10- //todo check if job exists
19+ var openmodDirectory = OpenModInstallerPlugin . Instance . OpenModManager . WorkingDirectory ;
20+ var autoexecYaml = Path . Combine ( openmodDirectory , "autoexec.yaml" ) ;
21+
22+ var dataStore = new YamlDataStore ( new DataStoreCreationParameters
23+ {
24+ WorkingDirectory = openmodDirectory ,
25+ LogOnChange = false
26+ } , null , null ) ;
27+
28+ if ( ! AsyncHelper . RunSync ( ( ) => dataStore . ExistsAsync ( "autoexec" ) ) )
29+ {
30+ var openmodAssembly = typeof ( YamlDataStore ) . Assembly ;
31+ using var autoexecFileStream = openmodAssembly . GetManifestResourceStream ( "OpenMod.Core.autoexec.yaml" ) ;
32+ using var ms = new MemoryStream ( ) ;
33+ autoexecFileStream ! . CopyTo ( ms ) ;
34+
35+ ms . Seek ( 0 , SeekOrigin . Begin ) ;
36+ File . WriteAllBytes ( autoexecYaml , ms . ToArray ( ) ) ;
37+ }
38+
39+ var jobsFile = AsyncHelperEx . RunSync ( ( ) => dataStore . LoadAsync < ScheduledJobsFile > ( "autoexec" ) ) ;
40+ if ( jobsFile ! . Jobs ! . Any ( d => d . Name ? . Equals ( "OpenMod.Installer.EconomyMigration" ) ?? false ) )
41+ {
42+ return ;
43+ }
44+
45+ jobsFile . Jobs . Add ( new ScheduledJob
46+ {
47+ Name = "OpenMod.Installer.EconomyMigration" ,
48+ Enabled = true ,
49+ Task = "openmod_command" ,
50+ Args = new Dictionary < string , object >
51+ {
52+ { "commands" , new List < string >
53+ {
54+ "MigrateUconomy"
55+ }
56+ }
57+ } ,
58+ Schedule = "@single_exec"
59+ } ) ;
60+
61+ AsyncHelperEx . RunSync ( ( ) => dataStore . SaveAsync ( "autoexec" , jobsFile ) ) ;
1162 }
1263 }
1364}
0 commit comments