using System;
using System.IO;
using ColdMint.scripts.serialization;
namespace ColdMint.scripts.mod;
///
/// Module manifest file
/// 模组清单文件
///
public class ModManifest
{
///
/// 模组Id
///
public string? Id { get; set; }
///
/// Mod name
/// 模组名称
///
public string? Name { get; set; }
///
/// Dll path list of the mod
/// 模组的Dll路径列表
///
///
///Allow relative paths, such as:... / Points to the parent directory.
///允许使用相对路径,例如: ../指向上级目录。
///
// ReSharper disable UnusedAutoPropertyAccessor.Global
public string[]? DllList { get; set; }
// ReSharper restore UnusedAutoPropertyAccessor.Global
///
/// Pck path list of mod
/// 模组的Pck路径列表
///
///
///Allow relative paths, such as:... / Points to the parent directory.
///允许使用相对路径,例如: ../指向上级目录。
///
// ReSharper disable UnusedAutoPropertyAccessor.Global
public string[]? PckList { get; set; }
// ReSharper restore UnusedAutoPropertyAccessor.Global
///
/// Creates module list information from a path
/// 从路径创建模组清单信息
///
///
///filePath
///文件路径
///
///
///When a given path is not to end throw this exception.
///当给定的路径不是以结尾时抛出此异常。
///
///
///This exception is thrown when the given path does not exist.
///当给定的路径不存在时,抛出此异常。
///
///
public static ModManifest? CreateModManifestFromPath(string filePath)
{
if (!filePath.EndsWith(Config.ModManifestFileName))
{
throw new ArgumentException("path must end with " + Config.ModManifestFileName + ".");
}
if (!File.Exists(filePath))
{
throw new FileNotFoundException("The file at " + filePath + " does not exist.");
}
var content = File.ReadAllText(filePath);
return YamlSerialization.Deserialize(content);
}
}