public static void Main(string[] args) { if (args.Length != 1) { Console.WriteLine("Usage: ApiParser.exe docsFolder"); Console.WriteLine(); Console.WriteLine(" docsFolder - folder that contains all versions of Unity docs"); return; } Directory.SetCurrentDirectory(args[0]); var progPath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); var dataPath = Path.Combine(progPath, @"Unity\Editor\Data"); var monoPath = Path.Combine(dataPath, @"Mono\lib\mono\unity"); var basePath = Path.Combine(dataPath, @"Managed"); TypeResolver.AddAssembly(typeof(string).Assembly); TypeResolver.AddAssembly(Assembly.LoadFrom(Path.Combine(basePath, @"UnityEngine.dll"))); TypeResolver.AddAssembly(Assembly.LoadFrom(Path.Combine(monoPath, @"UnityScript.dll"))); TypeResolver.AddAssembly(Assembly.LoadFrom(Path.Combine(basePath, @"UnityEditor.dll"))); Console.WriteLine(); var unityApi = new UnityApi(); var parser = new ApiParser(unityApi, ScriptReferenceRelativePath); parser.Progress += (s, e) => { var cursorTop = Console.CursorTop; Console.WriteLine("{0,5} / {1,5} ({2,3}%)", e.Current, e.Total, e.Percent); Console.SetCursorPosition(0, cursorTop); }; foreach (var doc in Docs) { Console.WriteLine(doc.Item1); parser.ParseFolder(doc.Item1, doc.Item2); AddUndocumentApis(unityApi, doc.Item2); } AddUndocumentedOptionalParameters(unityApi); AddUndocumentedCoroutines(unityApi); Fixup(unityApi); using (var writer = new XmlTextWriter(@"api.xml", Encoding.UTF8) { Formatting = Formatting.Indented }) { parser.ExportTo(writer); } // Console.WriteLine( "Press <Enter> key to continue..." ); // Console.ReadLine(); }
public static void Main(string[] args) { var progPath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); var dataPath = Path.Combine(progPath, @"Unity\Editor\Data"); var monoPath = Path.Combine(dataPath, @"Mono\lib\mono\unity"); var basePath = Path.Combine(dataPath, @"Managed"); TypeResolver.AddAssembly(typeof(string).Assembly); TypeResolver.AddAssembly(Assembly.LoadFrom(Path.Combine(basePath, @"UnityEngine.dll"))); TypeResolver.AddAssembly(Assembly.LoadFrom(Path.Combine(monoPath, @"UnityScript.dll"))); TypeResolver.AddAssembly(Assembly.LoadFrom(Path.Combine(basePath, @"UnityEditor.dll"))); Console.Clear(); var path = Path.Combine(dataPath, @"Documentation\en\ScriptReference"); var parser = new ApiParser(path); parser.Progress += (s, e) => { if (e.Percent <= ourProgress) { return; } ourProgress = e.Percent; Console.SetCursorPosition(0, 0); Console.WriteLine("{0,5} / {1,5} ({2,3}%)", e.Current, e.Total, e.Percent); }; parser.ParseFolder(); using (var writer = new XmlTextWriter(@"api.xml", Encoding.UTF8) { Formatting = Formatting.Indented }) { parser.ExportTo(writer); } // Console.WriteLine( "Press <Enter> key to continue..." ); // Console.ReadLine(); }
public static void Main(string[] args) { if (args.Length != 1) { Console.WriteLine("Usage: ApiParser.exe docsFolder"); Console.WriteLine(); Console.WriteLine(" docsFolder - folder that contains all versions of Unity docs"); return; } var stopwatch = Stopwatch.StartNew(); Directory.SetCurrentDirectory(args[0]); var progPath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); var managedPath = Path.Combine(progPath, "Unity", "Editor", "Data", "Managed"); if (!Directory.Exists(managedPath)) { // TODO: Find the latest version rather than hardcode it // TODO: Handle this in Windows, too //managedPath = Path.Combine(progPath, "Unity", "Hub", "Editor", "2018.1.0b9", "Unity.app", "Contents", "Managed"); managedPath = Path.Combine(progPath, "Unity", "Hub", "Editor", "2017.3.1f1", "Unity.app", "Contents", "Managed"); } // Add assemblies to the type resolver so we can get the fully qualified names of types // The Unity docs only give us the short names TypeResolver.AddAssembly(Assembly.LoadFrom(Path.Combine(managedPath, @"UnityEngine.dll"))); TypeResolver.AddAssembly(Assembly.LoadFrom(Path.Combine(managedPath, @"UnityEditor.dll"))); Console.WriteLine(); var unityApi = new UnityApi(); var parser = new ApiParser(unityApi, ScriptReferenceRelativePath); parser.Progress += (s, e) => { var cursorTop = Console.CursorTop; Console.WriteLine("{0,5} / {1,5} ({2,3}%)", e.Current, e.Total, e.Percent); Console.SetCursorPosition(0, cursorTop); }; foreach (var doc in Docs) { Console.WriteLine(doc.Item1); parser.ParseFolder(doc.Item1, doc.Item2); // These are valid for all versions AddUndocumentedApis(unityApi, doc.Item2); } // THese modify existing functions AddUndocumentedOptionalParameters(unityApi); AddUndocumentedCoroutines(unityApi); FixDataFromIncorrectDocs(unityApi); using (var writer = new XmlTextWriter(@"api.xml", Encoding.UTF8) { Formatting = Formatting.Indented }) { parser.ExportTo(writer); } Console.WriteLine("Done. Elapsed time: {0}", stopwatch.Elapsed); // Console.WriteLine( "Press <Enter> key to continue..." ); // Console.ReadLine(); }