fixed path separators

This commit is contained in:
timerix 2022-11-03 19:38:05 +06:00
parent f9f47bbd4d
commit 0c9f958cc5

View File

@ -37,7 +37,6 @@ static class ParadoxModMerger
return; return;
} }
Log("c", "args: ");
string srcdir = ""; string srcdir = "";
string srcdir2 = ""; string srcdir2 = "";
string outdir = ""; string outdir = "";
@ -45,40 +44,32 @@ static class ParadoxModMerger
// определение всех аргументов // определение всех аргументов
for (sbyte i = 0; i < args.Length; i++) for (sbyte i = 0; i < args.Length; i++)
{ {
Log("g", $" {args[i]}");
switch (args[i]) switch (args[i])
{ {
case "-clear": case "-clear":
srcdir = args[++i].Replace("\"", ""); srcdir = args[++i].Replace("\"", "").ИсправитьРазд();
Log("g", $" {args[i]}");
mode = 0; mode = 0;
break; break;
case "-merge": case "-merge":
srcdir = args[++i].Replace("\"", ""); srcdir = args[++i].Replace("\"", "").ИсправитьРазд();
Log("g", $" {args[i]}");
mode = 1; mode = 1;
break; break;
case "-diff": case "-diff":
srcdir = args[++i].Replace("\"", ""); srcdir = args[++i].Replace("\"", "").ИсправитьРазд();
Log("g", $" {args[i]}"); srcdir2 = args[++i].Replace("\"", "").ИсправитьРазд();
srcdir2 = args[++i].Replace("\"", "");
Log("g", $" {args[i]}");
mode = 2; mode = 2;
break; break;
case "-merge-single": case "-merge-single":
srcdir = args[++i].Replace("\"", ""); srcdir = args[++i].Replace("\"", "").ИсправитьРазд();
Log("g", $" {args[i]}");
mode = 3; mode = 3;
break; break;
case "-out": case "-out":
outdir = args[++i].Replace("\"", ""); outdir = args[++i].Replace("\"", "").ИсправитьРазд();
Log("g", $" {args[i]}");
break; break;
default: default:
throw new Exception($"invalid argument: <{args[i]}>"); throw new Exception($"invalid argument: <{args[i]}>");
} }
} }
Log("");
var conflicts = new List<string>(); var conflicts = new List<string>();
string[] moddirs = Directory.GetDirectories(srcdir); string[] moddirs = Directory.GetDirectories(srcdir);
@ -96,23 +87,23 @@ static class ParadoxModMerger
var pr = new Process(); var pr = new Process();
pr.StartInfo.CreateNoWindow = true; pr.StartInfo.CreateNoWindow = true;
pr.StartInfo.UseShellExecute = false; pr.StartInfo.UseShellExecute = false;
pr.StartInfo.FileName = "7z\\7z.exe"; pr.StartInfo.FileName = "7z{Путь.Разд}7z.exe";
pr.StartInfo.Arguments = $"x -y -o_TEMP \"{modarch}\""; pr.StartInfo.Arguments = $"x -y -o_TEMP \"{modarch}\"";
pr.Start(); pr.Start();
pr.WaitForExit(); pr.WaitForExit();
moddirs[i] = "_TEMP"; moddirs[i] = "_TEMP";
Log("g", "\tfiles extracted"); Log("g", "\tfiles extracted");
} }
string modname = File.ReadAllText($"{moddirs[i]}\\descriptor.mod"); string modname = File.ReadAllText($"{moddirs[i]}{Путь.Разд}descriptor.mod");
modname = modname.Remove(0, modname.IndexOf("name=\"") + 6); modname = modname.Remove(0, modname.IndexOf("name=\"") + 6);
modname = modname.Remove(modname.IndexOf("\"")) modname = modname.Remove(modname.IndexOf("\""))
.Replace("\\", "").Replace(":", "").Replace("?", "").Replace("\"", "").Replace("/", "") .Replace($"{Путь.Разд}", "").Replace(":", "").Replace("?", "").Replace("\"", "").Replace("/", "")
.Replace("\'", "").Replace("|", "").Replace("<", "").Replace(">", "").Replace("*", ""); .Replace("\'", "").Replace("|", "").Replace("<", "").Replace(">", "").Replace("*", "");
Log("b", $"[{i + 1}/{moddirs.Length}] copying mod ", "c", $"{modname}"); Log("b", $"[{i + 1}/{moddirs.Length}] copying mod ", "c", $"{modname}");
string[] subdirs = Directory.GetDirectories(moddirs[i]); string[] subdirs = Directory.GetDirectories(moddirs[i]);
for (sbyte n = 0; n < subdirs.Length; n++) for (sbyte n = 0; n < subdirs.Length; n++)
{ {
subdirs[n] = subdirs[n].Remove(0, subdirs[n].LastIndexOf('\\') + 1); subdirs[n] = subdirs[n].Remove(0, subdirs[n].LastIndexOf(Путь.Разд) + 1);
switch (subdirs[n]) switch (subdirs[n])
{ {
// stellaris // stellaris
@ -131,7 +122,8 @@ static class ParadoxModMerger
// hoi4 // hoi4
case "history": case "history":
case "portraits": case "portraits":
Directory.Copy($"{moddirs[i]}\\{subdirs[n]}", $"{outdir}\\{modname}\\{subdirs[n]}", out List<string> _conflicts, true); Directory.Copy($"{moddirs[i]}{Путь.Разд}{{subdirs[n]}}",
$"{outdir}{Путь.Разд}{{modname}}{Путь.Разд}{{subdirs[n]}}", out List<string> _conflicts, true);
conflicts.AddRange(_conflicts); conflicts.AddRange(_conflicts);
break; break;
} }
@ -177,7 +169,7 @@ static class ParadoxModMerger
void AddMod(string mod) void AddMod(string mod)
{ {
mod = mod.Remove(0, 1); mod = mod.Remove(0, 1);
mod = mod.Remove(mod.IndexOf('\\')); mod = mod.Remove(mod.IndexOf(Путь.Разд));
if (!mods.Contains(mod)) mods.Add(mod); if (!mods.Contains(mod)) mods.Add(mod);
} }
// вывод результата // вывод результата