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(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 realm = "shared") { DocsGenerator.GenerateEnum(typeof(T), $"{generatedDir}/{file}", 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"); 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("GameDifficulty.lua"); GenerateEnum("PositionType.lua"); GenerateEnum("AbilityFlags.lua"); } } }