public async Task WriteHelpFileAsync() { StringBuilder markdownBuilder = new StringBuilder(); markdownBuilder.Append("# ").AppendLine(m_Plugin.DisplayName); markdownBuilder.Append("Id: ").AppendLine(m_Plugin.OpenModComponentId); markdownBuilder.Append("Version: ").AppendLine(m_Plugin.Version.ToString()); if (!string.IsNullOrEmpty(m_Plugin.Author)) { markdownBuilder.Append("Author: ").AppendLine(m_Plugin.Author); } if (!string.IsNullOrEmpty(m_Plugin.Website)) { markdownBuilder.Append("Website: ").AppendLine(m_Plugin.Website); } var commands = (await m_CommandStore.GetCommandsAsync()) .Where(d => d.Component == m_Plugin) .ToList(); var rootCommands = commands .Where(d => string.IsNullOrEmpty(d.ParentId)); if (rootCommands.Any()) { markdownBuilder.AppendLine(); markdownBuilder.AppendLine("## Commands"); foreach (var currentCommand in rootCommands) { var ctx = m_CommandContextBuilder.CreateContext(null, new string[] { currentCommand.Name }, string.Empty, commands); AppendCommand(markdownBuilder, currentCommand, commands, ctx); } } var permissions = m_PermissionRegistry.GetPermissions(m_Plugin) .Where(d => !m_PrintedCommandPermissions.Any(e => e.Permission.Equals(d.Permission, StringComparison.OrdinalIgnoreCase))); if (permissions.Any()) { markdownBuilder.AppendLine(); markdownBuilder.AppendLine("## Permissions"); foreach (var permission in permissions) { markdownBuilder.Append("- ").Append(permission.Owner.OpenModComponentId).Append(':').Append(permission.Permission); if (!string.IsNullOrEmpty(permission.Description)) { markdownBuilder.Append(": ").Append(permission.Description); } markdownBuilder.AppendLine(); } } var directory = m_Plugin.WorkingDirectory; if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } var filePath = Path.Combine(directory, "help.md"); File.WriteAllText(filePath, markdownBuilder.ToString()); }
public async Task WriteHelpFileAsync() { var directory = m_Plugin.WorkingDirectory; if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } StringBuilder markdownBuilder = new StringBuilder(); markdownBuilder.AppendLine($"# {m_Plugin.DisplayName}"); markdownBuilder.AppendLine($"Id: {m_Plugin.OpenModComponentId} "); markdownBuilder.AppendLine($"Version: {m_Plugin.Version} "); if (!string.IsNullOrEmpty(m_Plugin.Author)) { markdownBuilder.AppendLine($"Author: {m_Plugin.Author} "); } if (!string.IsNullOrEmpty(m_Plugin.Website)) { markdownBuilder.AppendLine($"Website: {m_Plugin.Website} "); } var commands = (await m_CommandStore.GetCommandsAsync()) .Where(d => d.Component == m_Plugin) .ToList(); var rootCommands = commands .Where(d => string.IsNullOrEmpty(d.ParentId)) .ToList(); if (rootCommands.Count > 0) { markdownBuilder.AppendLine(); markdownBuilder.AppendLine("## Commands"); foreach (var currentCommand in rootCommands) { var args = new List <string> { currentCommand.Name }; AppendCommand(markdownBuilder, currentCommand, commands, args); } } var permissions = m_PermissionRegistry.GetPermissions(m_Plugin) .Where(d => !m_PrintedCommandPermissions.Any(e => e.Permission.Equals(d.Permission, StringComparison.OrdinalIgnoreCase))) .ToList(); if (permissions.Count > 0) { markdownBuilder.AppendLine(); markdownBuilder.AppendLine("## Permissions"); foreach (var permission in permissions) { markdownBuilder.Append($" - {permission.Owner.OpenModComponentId}:{permission.Permission}"); if (!string.IsNullOrEmpty(permission.Description)) { markdownBuilder.Append($": {permission.Description}"); } markdownBuilder.AppendLine(" "); } } var filePath = Path.Combine(directory, "help.md"); File.WriteAllText(filePath, markdownBuilder.ToString()); }