/***** DISABLE *****/ //TODO: Note to self May 1 2020: consider making some vanity methods to clean up all the Path.Combine()s in here; the code's a bit of a chore to read. public void Disable() { var addonConfiguration = GetAddonConfig(); if (addonConfiguration != null && addonConfiguration.Installed && !addonConfiguration.Disabled) { if (_addonInfo.install_mode != "arc") { _fileSystemManager.DirectoryMove( Path.Combine(_addonInstallPath, _addonInfo.folder_name), Path.Combine(DisabledPluginsDirectory, _addonInfo.folder_name)); } else { //probably broken if (!Directory.Exists(Path.Combine(DisabledPluginsDirectory, _addonInfo.folder_name))) { Directory.CreateDirectory(Path.Combine(DisabledPluginsDirectory, _addonInfo.folder_name)); } if (_addonInfo.addon_name.Contains("BuildPad")) { var buildPadFileName = ""; var arcFiles = Directory.GetFiles(Path.Combine(_configurationManager.UserConfig.GamePath, "addons/arcdps")); //search for plugin name in arc folder //TODO: Should break out of operation and give message if the plugin is not found. foreach (var arcFileName in arcFiles) { if (arcFileName.Contains("buildpad")) { buildPadFileName = Path.GetFileName(arcFileName); } } File.Move( Path.Combine(_addonInstallPath, "arcdps", buildPadFileName), Path.Combine(DisabledPluginsDirectory, _addonInfo.folder_name, buildPadFileName) ); } else { File.Move( Path.Combine(_addonInstallPath, "arcdps", _addonInfo.plugin_name), Path.Combine(DisabledPluginsDirectory, _addonInfo.folder_name, _addonInfo.plugin_name) ); } } addonConfiguration.Disabled = true; } }