static void Main(string[] args) { if (args.Length != 1) { Help(); return; } var assemblyFile = args[0]; var exefile = Assembly.GetEntryAssembly().Location; var exedir = Path.GetDirectoryName(exefile); Directory.SetCurrentDirectory(exedir); assemblyFile = Path.GetFullPath(assemblyFile); var targetAssembly = Assembly.LoadFile(assemblyFile); var w = new TypescriptDefinitionWriter(); var outdir = Path.Combine(exedir, "output"); var outdata = w.MakeDefineFile(new[] { targetAssembly }, outdir + Path.DirectorySeparatorChar); var outfile = Path.Combine(outdir, Path.ChangeExtension(Path.GetFileName(assemblyFile), "d.ts")); Directory.CreateDirectory(outdir); Console.WriteLine(string.Format("Output file: {0}", outfile)); var sb = new StringBuilder(); var keys = outdata.Keys.ToList(); keys.Sort(); foreach (var k in keys) { var val = outdata[k]; sb.AppendLine("// " + Path.GetFileName(k)); sb.AppendLine(val); } File.WriteAllText(outfile, sb.ToString()); Console.WriteLine(string.Format("Finish output {0} types", outdata.Keys.Count)); }
void Extract(Assembly[] ass) { var f = EditorUtility.SaveFilePanel("Write to", "./", "UnityEngine.d.ts", "d.ts"); if (string.IsNullOrEmpty(f)) { return; } var tw = new TypescriptDefinitionWriter.TypescriptDefinitionWriter(); var defs = tw.MakeDefineFile(ass); var txt = new System.Text.StringBuilder(); txt.AppendLine("/*"); txt.AppendLine(" Unity Version(" + Application.unityVersion + ")"); txt.AppendLine(""); txt.AppendLine(" Assemblies"); foreach (var a in ass.OrderBy(e => e.FullName)) { txt.AppendLine(" " + a.FullName); } txt.AppendLine(" */"); txt.AppendLine(""); foreach (var kv in defs) { txt.Append(kv.Value); } System.IO.File.WriteAllText(f, txt.ToString()); }