public override void Run(List <Variable> variablesList) { foreach (var variable in variablesList) { FileInfoSource = FileInfoSource.Replace("@(" + variable.Name + ")", variable.Value); FileInfoDestination = FileInfoDestination.Replace("@(" + variable.Name + ")", variable.Value); } Console.Write($"Activating File {new FileInfo(FileInfoSource).Name} ... "); var fileMaker = new NgFileMaker(); var fsource = Environment.ExpandEnvironmentVariables(FileInfoSource); var fdest = Environment.ExpandEnvironmentVariables(FileInfoDestination); var from = new System.IO.FileInfo(fsource); var to = new System.IO.FileInfo(fdest); fileMaker.CopyFile(from, to); Console.WriteLine($"Done"); }
public static Dictionary <string, FileInfoSource> EnumerateFiles(OGLContext context, string type, SearchOption option = SearchOption.AllDirectories, string pattern = "*.xml") { Dictionary <string, FileInfoSource> result = new Dictionary <string, FileInfoSource>(StringComparer.InvariantCultureIgnoreCase); try { string t = type.TrimEnd('/', '\\').ToLowerInvariant() + "/"; string tt = type.TrimEnd('/', '\\').ToLowerInvariant() + "\\"; string p = pattern.StartsWith("*") ? pattern.Substring(1, pattern.Length - 1).ToLowerInvariant() : pattern.ToLowerInvariant(); foreach (var z in GetAllZips(context, type)) { string s = z.Value; foreach (ZipArchiveEntry e in z.Key.Entries) { string f = s.ToLowerInvariant() + "/" + t; string ff = s.ToLowerInvariant() + "\\" + tt; string name = e.FullName.ToLowerInvariant(); if (name.StartsWith(t) && name.EndsWith(p)) { if (option == SearchOption.AllDirectories || !name.Substring(t.Length).Contains("/")) { FileInfoSource fis = new FileInfoSource() { Archive = e, FullName = Path.Combine(AppPath, s, type, name.Substring(t.Length).Replace('/', Path.DirectorySeparatorChar)), Source = z.Value }; if (result.ContainsKey(fis.FullName)) { ConfigManager.LogError(fis.FullName + "already exists"); } result.Add(fis.FullName, fis); } } else if (name.StartsWith(f) && name.EndsWith(p)) { if (option == SearchOption.AllDirectories || !name.Substring(f.Length).Contains("/")) { FileInfoSource fis = new FileInfoSource() { Archive = e, FullName = Path.Combine(AppPath, s, type, name.Substring(f.Length).Replace('/', Path.DirectorySeparatorChar)), Source = z.Value }; if (result.ContainsKey(fis.FullName)) { ConfigManager.LogError(fis.FullName + "already exists"); } result.Add(fis.FullName, fis); } } else if (name.StartsWith(tt) && name.EndsWith(p)) { if (option == SearchOption.AllDirectories || !name.Substring(tt.Length).Contains("\\")) { FileInfoSource fis = new FileInfoSource() { Archive = e, FullName = Path.Combine(AppPath, s, type, name.Substring(tt.Length).Replace('\\', Path.DirectorySeparatorChar)), Source = z.Value }; if (result.ContainsKey(fis.FullName)) { ConfigManager.LogError(fis.FullName + "already exists"); } result.Add(fis.FullName, fis); } } else if (name.StartsWith(ff) && name.EndsWith(p)) { if (option == SearchOption.AllDirectories || !name.Substring(ff.Length).Contains("/")) { FileInfoSource fis = new FileInfoSource() { Archive = e, FullName = Path.Combine(AppPath, s, type, name.Substring(ff.Length).Replace('/', Path.DirectorySeparatorChar)), Source = z.Value }; if (result.ContainsKey(fis.FullName)) { ConfigManager.LogError(fis.FullName + "already exists"); } result.Add(fis.FullName, fis); } } } } } catch (Exception e) { ConfigManager.LogError(e); } try { foreach (var f in GetAllDirectories(context, type)) { foreach (FileInfo file in f.Key.EnumerateFiles(pattern, option)) { FileInfoSource fis = new FileInfoSource() { File = file, FullName = file.FullName, Source = f.Value }; result[fis.FullName] = fis; } } } catch (Exception e) { ConfigManager.LogError(e); } return(result); }