From a85f0d8e11603d5e7aa006a540afe84c78e251d2 Mon Sep 17 00:00:00 2001 From: "Andres G. Aragoneses" Date: Tue, 14 Apr 2020 15:58:11 +0800 Subject: [PATCH] Generator: make it work with Unix paths It was hardcoding the Windows path separator so this could only run on Windows before. --- src/TeleSharp.Generator/Program.cs | 42 +++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/src/TeleSharp.Generator/Program.cs b/src/TeleSharp.Generator/Program.cs index 675352f..0af43a8 100644 --- a/src/TeleSharp.Generator/Program.cs +++ b/src/TeleSharp.Generator/Program.cs @@ -48,11 +48,21 @@ namespace TeleSharp.Generator var list = schema.Constructors.Where(x => x.Type == c.Type); if (list.Count() > 1) { - string path = (GetNameSpace(c.Type).Replace("TeleSharp.TL", "TL\\").Replace(".", "") + "\\" + GetNameofClass(c.Type, true) + ".cs").Replace("\\\\", "\\"); + string path = + (GetNameSpace(c.Type) + .Replace("TeleSharp.TL", "TL" + Path.DirectorySeparatorChar) + .Replace(".", "") + Path.DirectorySeparatorChar + + GetNameofClass(c.Type, true) + ".cs") + .Replace("\\\\", Path.DirectorySeparatorChar.ToString()); FileStream classFile = MakeFile(path); using (StreamWriter writer = new StreamWriter(classFile)) { - string nspace = (GetNameSpace(c.Type).Replace("TeleSharp.TL", "TL\\").Replace(".", "")).Replace("\\\\", "\\").Replace("\\", "."); + string nspace = + (GetNameSpace(c.Type) + .Replace("TeleSharp.TL", "TL" + Path.DirectorySeparatorChar) + .Replace(".", "")) + .Replace("\\\\", Path.DirectorySeparatorChar.ToString()) + .Replace(Path.DirectorySeparatorChar, '.'); if (nspace.EndsWith(".")) nspace = nspace.Remove(nspace.Length - 1, 1); string temp = AbsStyle.Replace("/* NAMESPACE */", "TeleSharp." + nspace); @@ -70,12 +80,22 @@ namespace TeleSharp.Generator } foreach (var c in schema.Constructors) { - string path = (GetNameSpace(c.Predicate).Replace("TeleSharp.TL", "TL\\").Replace(".", "") + "\\" + GetNameofClass(c.Predicate, false) + ".cs").Replace("\\\\", "\\"); + string path = + (GetNameSpace(c.Predicate) + .Replace("TeleSharp.TL", "TL" + Path.DirectorySeparatorChar) + .Replace(".", "") + Path.DirectorySeparatorChar + + GetNameofClass(c.Predicate, false) + ".cs") + .Replace("\\\\", Path.DirectorySeparatorChar.ToString()); FileStream classFile = MakeFile(path); using (StreamWriter writer = new StreamWriter(classFile)) { #region About Class - string nspace = (GetNameSpace(c.Predicate).Replace("TeleSharp.TL", "TL\\").Replace(".", "")).Replace("\\\\", "\\").Replace("\\", "."); + string nspace = + (GetNameSpace(c.Predicate) + .Replace("TeleSharp.TL", "TL" + Path.DirectorySeparatorChar) + .Replace(".", "")) + .Replace("\\\\", Path.DirectorySeparatorChar.ToString()) + .Replace(Path.DirectorySeparatorChar, '.'); if (nspace.EndsWith(".")) nspace = nspace.Remove(nspace.Length - 1, 1); string temp = NormalStyle.Replace("/* NAMESPACE */", "TeleSharp." + nspace); @@ -136,12 +156,22 @@ namespace TeleSharp.Generator } foreach (var c in schema.Methods) { - string path = (GetNameSpace(c.Method).Replace("TeleSharp.TL", "TL\\").Replace(".", "") + "\\" + GetNameofClass(c.Method, false, true) + ".cs").Replace("\\\\", "\\"); + string path = + (GetNameSpace(c.Method) + .Replace("TeleSharp.TL", "TL" + Path.DirectorySeparatorChar) + .Replace(".", "") + Path.DirectorySeparatorChar + + GetNameofClass(c.Method, false, true) + ".cs") + .Replace("\\\\", Path.DirectorySeparatorChar.ToString()); FileStream classFile = MakeFile(path); using (StreamWriter writer = new StreamWriter(classFile)) { #region About Class - string nspace = (GetNameSpace(c.Method).Replace("TeleSharp.TL", "TL\\").Replace(".", "")).Replace("\\\\", "\\").Replace("\\", "."); + string nspace = + (GetNameSpace(c.Method) + .Replace("TeleSharp.TL", "TL" + Path.DirectorySeparatorChar) + .Replace(".", "")) + .Replace("\\\\", Path.DirectorySeparatorChar.ToString()) + .Replace(Path.DirectorySeparatorChar, '.'); if (nspace.EndsWith(".")) nspace = nspace.Remove(nspace.Length - 1, 1); string temp = MethodStyle.Replace("/* NAMESPACE */", "TeleSharp." + nspace);