in src/Cli/ArtifactAssembler/ArtifactAssembler.cs [302:382]
private void CreateCliCoreTools()
{
Console.WriteLine("Starting to assemble CLI Core Tools artifacts");
// Create a directory to store the assembled artifacts.
var cliCoreToolsTargetArtifactDir = Path.Combine(_stagingDirectory, Constants.CliOutputArtifactDirectoryName);
Directory.CreateDirectory(cliCoreToolsTargetArtifactDir);
string outOfProcVersion = string.Empty,
inProcVersion = string.Empty,
outOfProcArtifactDirPath = string.Empty,
inProc8ArtifactDirPath = string.Empty;
string[] cliArtifactList = string.IsNullOrEmpty(_artifactName) ? _cliArtifacts : [_artifactName];
foreach (var artifactName in cliArtifactList)
{
// Set up out-of-proc artifact directory and version
if (string.IsNullOrEmpty(outOfProcArtifactDirPath))
{
var (artifactDirectory, version) = GetArtifactDirectoryAndVersionNumber(_outOfProcExtractedRootDir, artifactName);
outOfProcArtifactDirPath = artifactDirectory;
outOfProcVersion = version;
}
else
{
var artifactNameWithVersion = $"{artifactName}.{outOfProcVersion}";
outOfProcArtifactDirPath = Path.Combine(_outOfProcExtractedRootDir, artifactNameWithVersion);
}
// Create a new directory to store the oop core tools with in-proc8 and in-proc6 files.
var consolidatedArtifactDirPath = Path.Combine(cliCoreToolsTargetArtifactDir, Path.GetFileName(outOfProcArtifactDirPath));
Directory.CreateDirectory(consolidatedArtifactDirPath);
// Copy oop core tools and delete old directory
CheckIfArtifactDirectoryExists(outOfProcArtifactDirPath);
FileUtilities.CopyDirectory(outOfProcArtifactDirPath, consolidatedArtifactDirPath);
Directory.Delete(outOfProcArtifactDirPath, true);
// If we are currently on the minified version of the artifacts, we do not want the inproc6/inproc8 subfolders
if (artifactName.Contains("min.win"))
{
Console.WriteLine($"Finished assembling {consolidatedArtifactDirPath}\n");
continue;
}
// If we are running this for the first time, extract the directory path and out of proc version
if (string.IsNullOrEmpty(inProc8ArtifactDirPath))
{
// Get the version number from the in-proc build since it will be different than out-of-proc
var (artifactDirectory, version) = GetArtifactDirectoryAndVersionNumber(_inProc8ExtractedRootDir, artifactName);
inProc8ArtifactDirPath = artifactDirectory;
inProcVersion = version;
}
else
{
var artifactNameWithVersion = $"{artifactName}.{inProcVersion}";
inProc8ArtifactDirPath = Path.Combine(_inProc8ExtractedRootDir, artifactNameWithVersion);
}
// Copy in-proc8 files
var inProc8FinalDestination = Path.Combine(consolidatedArtifactDirPath, Constants.InProc8DirectoryName);
FileUtilities.CopyDirectory(inProc8ArtifactDirPath, inProc8FinalDestination);
Console.WriteLine($"Copied files from {inProc8ArtifactDirPath} => {inProc8FinalDestination}");
// Rename inproc6 directory to have the same version as the out-of-proc artifact before copying
var inProcArtifactName = Path.GetFileName(inProc8ArtifactDirPath);
var inProc6ArtifactDirPath = Path.Combine(_inProc6ExtractedRootDir, inProcArtifactName);
CheckIfArtifactDirectoryExists(inProc6ArtifactDirPath);
// Copy in-proc6 files
var inProc6FinalDestination = Path.Combine(consolidatedArtifactDirPath, Constants.InProc6DirectoryName);
FileUtilities.CopyDirectory(inProc6ArtifactDirPath, inProc6FinalDestination);
Console.WriteLine($"Copied files from {inProc6ArtifactDirPath} => {inProc6FinalDestination}");
Console.WriteLine($"Finished assembling {consolidatedArtifactDirPath}\n");
}
Directory.Delete(_outOfProcExtractedRootDir, true);
Console.WriteLine("Finished assembling CLI Core Tools artifacts\n");
}