extern alias BarotraumaClient; extern alias BarotraumaServer; namespace LuaDocsGenerator { internal class Program { private static string basePath = ""; private static string generatedDir = ""; private static string baseLuaDir = ""; private static void GenerateDocs(Type type, string file, string? categoryName = null, string realm = "shared") { DocsGenerator.GenerateDocs(type, $"{baseLuaDir}/{file}", $"{generatedDir}/{file}", categoryName, realm); } private static void GenerateDocs(string file, string? categoryName = null, string realm = "shared") { DocsGenerator.GenerateDocs(typeof(T), $"{baseLuaDir}/{file}", $"{generatedDir}/{file}", categoryName, realm); } private static void GenerateDocs(string file, string? categoryName = null) { DocsGenerator.GenerateDocs(typeof(T1), typeof(T2), $"{baseLuaDir}/{file}", $"{generatedDir}/{file}", categoryName); } private static void GenerateDocs(Type clientType, Type serverType, string file, string? categoryName = null) { DocsGenerator.GenerateDocs(clientType, serverType, $"{baseLuaDir}/{file}", $"{generatedDir}/{file}", categoryName); } private static void GenerateEnum(string file, string categoryName = null, string realm = "shared") { DocsGenerator.GenerateEnum(typeof(T), $"{generatedDir}/{file}", categoryName, realm); } private static void GenerateEnum(Type type, string file, string categoryName = null, string realm = "shared") { DocsGenerator.GenerateEnum(type, $"{generatedDir}/{file}", categoryName, realm); } static void Main(string[] args) { var gitDir = (new Func(() => { var (success, gitDir, error) = DocsGenerator.TryRunGitCommand("rev-parse --show-toplevel"); if (!success) { throw new InvalidDataException($"Failed to determine the root of the git repo: {error}"); } return gitDir; }))(); basePath = $"{gitDir}/luacs-docs/lua"; generatedDir = $"{basePath}/lua/generated"; baseLuaDir = $"{basePath}/baseluadocs"; try { Directory.Delete(generatedDir, true); } catch (DirectoryNotFoundException) { } Directory.CreateDirectory(generatedDir); Directory.CreateDirectory(baseLuaDir); GenerateDocs("Character.lua"); GenerateDocs("CharacterInfo.lua"); GenerateDocs("CharacterHealth.lua"); GenerateDocs("AnimController.lua"); GenerateDocs("Client.lua"); GenerateDocs("Entity.lua"); GenerateDocs("Entity.Spawner.lua", "Entity.Spawner"); GenerateDocs("Item.lua"); GenerateDocs("ItemPrefab.lua"); GenerateDocs("Submarine.lua"); GenerateDocs("SubmarineInfo.lua"); GenerateDocs("Job.lua"); GenerateDocs("JobPrefab.lua"); GenerateDocs("GameSession.lua"); GenerateDocs("NetLobbyScreen.lua"); GenerateDocs("GameScreen.lua"); GenerateDocs("World.lua", "Game.World"); GenerateDocs("Inventory.lua"); GenerateDocs("ItemInventory.lua"); GenerateDocs("CharacterInventory.lua"); GenerateDocs("Hull.lua"); GenerateDocs("Level.lua"); GenerateDocs("Affliction.lua"); GenerateDocs("AfflictionPrefab.lua"); GenerateDocs("WayPoint.lua"); GenerateDocs("ServerSettings.lua", "Game.ServerSettings"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GameSettings), typeof(BarotraumaServer::Barotrauma.GameSettings), "GameSettings.lua", "Game.Settings"); GenerateDocs("Structure.lua"); GenerateDocs("StructurePrefab.lua"); GenerateDocs("PhysicsBody.lua"); GenerateDocs("Limb.lua"); GenerateDocs("PlayerInput.lua", "PlayerInput", "client"); GenerateDocs("IReadMessage.lua"); GenerateDocs("IWriteMessage.lua"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUI), "GUI.lua", "GUI", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUIStyle), "GUIStyle.lua", "GUI.Style", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUIComponent), "GUIComponent.lua", "GUI.Component", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.RectTransform), "RectTransform.lua", "GUI.RectTransform", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUILayoutGroup), "GUILayoutGroup.lua", "GUI.LayoutGroup", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUIButton),"GUIButton.lua", "GUI.Button", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUITextBox),"GUITextBox.lua", "GUI.TextBox", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUICanvas),"GUICanvas.lua", "GUI.Canvas", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUIFrame),"GUIFrame.lua", "GUI.Frame", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUITextBlock),"GUITextBlock.lua", "GUI.TextBlock", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUITickBox),"GUITickBox.lua", "GUI.TickBox", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUIImage),"GUIImage.lua", "GUI.Image", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUIListBox),"GUIListBox.lua", "GUI.ListBox", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUIScrollBar),"GUIScrollBar.lua", "GUI.ScrollBar", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUIDropDown),"GUIDropDown.lua", "GUI.DropDown", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUINumberInput),"GUINumberInput.lua", "GUI.NumberInput", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUIMessageBox),"GUIMessageBox.lua", "GUI.MessageBox", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUIColorPicker),"GUIColorPicker.lua", "GUI.ColorPicker", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUIProgressBar),"GUIProgressBar.lua", "GUI.ProgressBar", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUICustomComponent),"GUICustomComponent.lua", "GUI.CustomComponent", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUIScissorComponent),"GUIScissorComponent.lua", "GUI.ScissorComponent", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.VideoPlayer),"VideoPlayer.lua", "GUI.VideoPlayer", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.Graph),"Graph.lua", "GUI.Graph", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.SerializableEntityEditor),"SerializableEntityEditor.lua", "GUI.SerializableEntityEditor", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.SlideshowPlayer),"SlideshowPlayer.lua", "GUI.SlideshowPlayer", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.CreditsPlayer),"CreditsPlayer.lua", "GUI.CreditsPlayer", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.GUIDragHandle),"GUIDragHandle.lua", "GUI.DragHandle", "client"); GenerateDocs(typeof(BarotraumaClient::Barotrauma.Screen),"Screen.lua", "GUI.Screen", "client"); GenerateEnum("Anchor.lua", "GUI.Anchor", "client"); GenerateEnum("Pivot.lua", "GUI.Pivot", "client"); GenerateEnum("GUISoundType.lua", "GUI.SoundType", "client"); GenerateEnum("CursorState.lua", "GUI.CursorState", "client"); GenerateEnum("Alignment.lua", "GUI.Alignment", "client"); GenerateEnum("CauseOfDeathType.lua"); GenerateEnum("CharacterTeamType.lua"); GenerateEnum("ClientPermissions.lua"); GenerateEnum("ChatMessageType.lua"); GenerateEnum("InvSlotType.lua"); GenerateEnum("LimbType.lua"); GenerateEnum("RandSync.lua"); GenerateEnum("ServerLogMessageType.lua"); GenerateEnum("SpawnType.lua"); GenerateEnum("DisconnectReason.lua"); GenerateEnum("ActionType.lua"); GenerateEnum("StatTypes.lua"); GenerateEnum("ChatMode.lua"); GenerateEnum("CharacterType.lua"); GenerateEnum("InputType.lua"); GenerateEnum("DeliveryMethod.lua"); GenerateEnum("NumberType.lua"); GenerateEnum("PositionType.lua"); GenerateEnum("AbilityFlags.lua"); } } }