void DoImportSampleRecursively(Dictionary<string, string> bspDict, ConfiguredSample sample, string sourceDir, string targetDir, Dictionary<string, bool> binaryFiles, Dictionary<string, bool> ignoredFiles, bool plainC, string relativePath)
{
foreach (var fn in Directory.GetFiles(sourceDir))
{
try
{
string target = Path.Combine(targetDir, Path.GetFileName(fn));
if (!plainC && Path.GetExtension(target).ToLower() == ".c" && !sample.Sample.Sample.DoNotUpgradeCToCpp)
target = Path.ChangeExtension(target, ".cpp");
else if (plainC && Path.GetExtension(target).ToLower() == ".cpp")
target = Path.ChangeExtension(target, ".c");
if (target.Contains("$$"))
target = VariableHelper.ExpandVariables(target, bspDict, sample.Parameters);
if (ignoredFiles.ContainsKey(fn))
continue;
if (binaryFiles.ContainsKey(fn))
File.Copy(fn, target);
else
{
string str = File.ReadAllText(fn);
str = VariableHelper.ExpandVariables(str, bspDict, sample.Parameters);
File.WriteAllText(target, str);
}
string ext = Path.GetExtension(target).ToLower();
if (ext != ".h" && ext != ".hpp")
_SourceFiles.Add(target);
}
catch
{
}
}
foreach (var fn in Directory.GetDirectories(sourceDir))
{
string target;
try
{
target = Path.Combine(targetDir, Path.GetFileName(fn));
Directory.CreateDirectory(target);
}
catch
{
continue;
}
DoImportSampleRecursively(bspDict, sample, fn, target, binaryFiles, ignoredFiles, plainC, relativePath + Path.GetFileName(fn) + "\\");
}
}