Plugin Config Directories

Allow plugins to get a directory in the pluginConfig folder
This commit is contained in:
Cara 2021-01-06 14:54:02 +10:30
parent c15340212d
commit d4f2c5fcac
2 changed files with 20 additions and 0 deletions

View file

@ -42,6 +42,18 @@ namespace Dalamud.Configuration
}); });
} }
public string GetDirectory(string pluginName) {
try {
var path = GetDirectoryPath(pluginName);
if (!path.Exists) {
path.Create();
}
return path.FullName;
} catch {
return string.Empty;
}
}
// Parameterized deserialization // Parameterized deserialization
// Currently this is called via reflection from DalamudPluginInterface.GetPluginConfig() // Currently this is called via reflection from DalamudPluginInterface.GetPluginConfig()
// Eventually there may be an additional pluginInterface method that can call this directly // Eventually there may be an additional pluginInterface method that can call this directly
@ -59,5 +71,7 @@ namespace Dalamud.Configuration
} }
private FileInfo GetPath(string pluginName) => new FileInfo(Path.Combine(this.configDirectory.FullName, $"{pluginName}.json")); private FileInfo GetPath(string pluginName) => new FileInfo(Path.Combine(this.configDirectory.FullName, $"{pluginName}.json"));
private DirectoryInfo GetDirectoryPath(string pluginName) => new DirectoryInfo(Path.Combine(this.configDirectory.FullName, pluginName));
} }
} }

View file

@ -131,6 +131,12 @@ namespace Dalamud.Plugin
return this.configs.Load(this.pluginName); return this.configs.Load(this.pluginName);
} }
/// <summary>
/// Get the config directory
/// </summary>
/// <returns>directory with path of AppData/XIVLauncher/pluginConfig/PluginInternalName </returns>
public string GetPluginConfigDirectory() => this.configs.GetDirectory(this.pluginName);
#region Chat Links #region Chat Links
/// <summary> /// <summary>