示例#1
0
        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());
        }
示例#2
0
        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());
        }