Skip to content
This repository has been archived by the owner on Jun 27, 2024. It is now read-only.

Commit

Permalink
Remove reflection stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
Trojaner committed Feb 6, 2021
1 parent 18c7288 commit 802b221
Showing 1 changed file with 12 additions and 17 deletions.
29 changes: 12 additions & 17 deletions src/Jobs/MigratePermissionsJob.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using System.Xml.Serialization;
using OpenMod.API.Persistence;
using OpenMod.Core.Persistence;

namespace OpenMod.Installer.RocketMod.Jobs
{
Expand Down Expand Up @@ -78,25 +78,20 @@ public void ExecuteMigration(string[] args)
}

var apiAssembly = AssemblyHelper.GetAssembly("OpenMod.API");
var datastoreCreationParametersType = apiAssembly.GetType("OpenMod.API.Persistence.DataStoreCreationParameters");
var workingDirectory = OpenModInstallerPlugin.Instance.OpenModManager.WorkingDirectory;

var @params = Activator.CreateInstance(datastoreCreationParametersType);
@params.SetPropertyValue("ComponentId", "OpenMod.Core");
@params.SetPropertyValue("Prefix", "openmod");
@params.SetPropertyValue("WorkingDirectory", workingDirectory);

var coreAssembly = AssemblyHelper.GetAssembly("OpenMod.Core");
var datastoreType = coreAssembly.GetType("OpenMod.Core.Persistence.YamlDataStore");
var ctor = datastoreType.GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic, null, new[] { datastoreCreationParametersType }, null);
var dataStoreParams = new DataStoreCreationParameters
{
ComponentId = "OpenMod.Core",
Prefix = "openmod",
WorkingDirectory = workingDirectory
};

var dataStore = ctor.Invoke(new[] { @params });
var saveMethod = dataStore.GetType().GetMethod("SaveAsync", BindingFlags.Instance | BindingFlags.Public);
var saveMethodTaskRoles = (Task)saveMethod.Invoke(dataStore, new object[] { "roles", openmodRoles });
var saveMethodTaskUsers = (Task)saveMethod.Invoke(dataStore, new object[] { "users", openmodUsers });
var dataStore = new YamlDataStore(dataStoreParams, null, null);

AsyncHelperEx.RunSync(() => dataStore.SaveAsync("roles", openmodRoles));
AsyncHelperEx.RunSync(() => dataStore.SaveAsync("users", openmodUsers));

AsyncHelperEx.RunSync(() => saveMethodTaskRoles);
AsyncHelperEx.RunSync(() => saveMethodTaskUsers);
Logger.Log($"Imported {openmodRoles.Roles.Count} permission group(s) and {openmodUsers.Users.Count} player(s) from RocketMod's Permission.config.xml to OpenMod.");
}

Expand Down

0 comments on commit 802b221

Please sign in to comment.