in code/tools/WtsPackagingTool/PackageWorker.cs [56:117]
internal static void Prepare(string prepareDir, IEnumerable<string> exclusions, string version, string platform, string language, bool verbose, TextWriter output, TextWriter error)
{
output.WriteCommandHeader($"Preparing directory {prepareDir} for version {version}");
Version.TryParse(version, out Version v);
if (v != null)
{
DirectoryInfo prepareDirInfo = new DirectoryInfo(prepareDir);
if (prepareDirInfo.Exists)
{
List<Regex> exclusionFilters = GetExclusionFilters(exclusions, output);
List<string> excludedDirs = new List<string>();
List<DirectoryInfo> includedDirs = new List<DirectoryInfo>();
List<DirectoryInfo> allDirs = new List<DirectoryInfo>();
if (!string.IsNullOrEmpty(platform) && !string.IsNullOrEmpty(language))
{
ApplyLanguageAndPlatformFilters(allDirs, prepareDirInfo, platform, language);
}
else
{
output.WriteCommandText("WARN: No platform and language filters applied");
allDirs = prepareDirInfo.EnumerateDirectories(".template.config", SearchOption.AllDirectories).ToList();
}
ApplyFilters(exclusionFilters, excludedDirs, includedDirs, allDirs);
if (excludedDirs.Count == 0 && exclusionFilters.Count > 0)
{
output.WriteCommandText("WARN: Preparation did not work. The exclusions do not filter any directory, please review the regular expresions.");
return;
}
if (exclusionFilters.Count > 0 && (excludedDirs.Count + includedDirs.Count != allDirs.Count))
{
output.WriteCommandText($"WARN: Preparation did not work. The excluded dirs ({excludedDirs.Count}) plus the included dirs ({includedDirs.Count}) do not match the original dir count {allDirs.Count}");
return;
}
ShowDirectoriesInfo(verbose, output, exclusionFilters, excludedDirs, includedDirs);
var resultDir = PrepareResultDir(prepareDir, version, output);
List<DirectoryInfo> toCopy = exclusionFilters.Count > 0 ? includedDirs : allDirs;
toCopy.Add(new DirectoryInfo(Path.Combine(prepareDir, platform, "_catalog")));
MakeCopy(toCopy, prepareDir, platform, resultDir, version, output);
}
else
{
error.WriteCommandText($"WARN: The directory '{prepareDir}' does not exists");
}
}
else
{
error.WriteCommandText($"WAR: {version} is not a valid version number");
}
}