diff --git a/DevelopmentTransferUtility/Common/EntryPoint.cs b/DevelopmentTransferUtility/Common/EntryPoint.cs index f409122..120ae85 100644 --- a/DevelopmentTransferUtility/Common/EntryPoint.cs +++ b/DevelopmentTransferUtility/Common/EntryPoint.cs @@ -266,6 +266,14 @@ private static void ProcessImport(ICommandLineOptions options) string developmentFileName = GetDevelopmentFileName(options, out tempFolder); try { + if( options.convertToUTF8) + { + Console.Write("Конвертация в 1251.."); + Options.DevelopmentFolderName = filestoutf8.import(options.DevelopmentFolderName); + Console.Write("Done"); + Console.WriteLine(); + } + TransformFolderToPackage(options, developmentFileName); if (NeedImportDevelopment(options)) @@ -275,6 +283,9 @@ private static void ProcessImport(ICommandLineOptions options) { if (NeedImportDevelopment(options)) Directory.Delete(tempFolder, true); + + if (options.convertToUTF8) + Directory.Delete(options.DevelopmentFolderName, true); } } @@ -311,7 +322,7 @@ public static void Main(string[] args) if (options.convertToUTF8) { Console.Write("Конвертация в UTF-8.. "); - filestoutf8.convert(options.DevelopmentFolderName); + filestoutf8.export(options.DevelopmentFolderName); Console.Write("Done"); Console.WriteLine(); } diff --git a/DevelopmentTransferUtility/Common/FilesToUtf8.cs b/DevelopmentTransferUtility/Common/FilesToUtf8.cs index 661f234..7b8df95 100644 --- a/DevelopmentTransferUtility/Common/FilesToUtf8.cs +++ b/DevelopmentTransferUtility/Common/FilesToUtf8.cs @@ -9,25 +9,77 @@ namespace NpoComputer.DevelopmentTransferUtility.Common { static class filestoutf8 { - - static public void convert(string fpath) + static public void export(string folder_path) { + convertToUTF8(folder_path); + } + static public string import(string folder_path) + { + string tmp_path = createTmpDir(); + + if (string.IsNullOrEmpty(tmp_path)) + return ""; - string[] files = Directory.GetFiles(fpath, "*", SearchOption.AllDirectories); + ConvertTo1251(folder_path, tmp_path); + + return tmp_path; + } + + static public void convertToUTF8(string fpath) + { + convert(fpath, Encoding.Default, Encoding.UTF8); + } + + static public void convert(string fpath_src, string fpath_dest, Encoding src, Encoding dest) + { + if (string.IsNullOrEmpty(fpath_dest)) + fpath_dest = fpath_src; + + string[] files = Directory.GetFiles(fpath_src, "*", SearchOption.AllDirectories); foreach (string f in files) - { - convertfile(f); - - } + convertfile(f, f.Replace(fpath_src, fpath_dest), src, dest); } - static private void convertfile(string file) + static private void convert(string fpath, Encoding src, Encoding dest) { - var t = File.ReadAllText(file, Encoding.Default); + convert(fpath, fpath, src,dest); + } + + static private void convertfile(string filesrc, string filedest, Encoding src, Encoding dest) + { + + var t = File.ReadAllText(filesrc, src); - File.WriteAllText(file, t, Encoding.UTF8); + FileInfo fi = new FileInfo(filedest); + + Directory.CreateDirectory(fi.DirectoryName); + + File.WriteAllText(filedest, t, dest); + } + + static public void ConvertTo1251(string pathSrc, string pathDest) + { + convert(pathSrc,pathDest, Encoding.UTF8, Encoding.Default); + } + + static private string createTmpDir() + { + string tmp_path = Path.GetTempPath() + Guid.NewGuid(); + + try + { + Directory.CreateDirectory(tmp_path); + } + + catch(Exception e) + { + tmp_path = ""; + } + + return tmp_path; } + } }