diff --git a/build/_k-standard-goals.shade b/build/_k-standard-goals.shade index b9ee145bbf..81f9e32c78 100644 --- a/build/_k-standard-goals.shade +++ b/build/_k-standard-goals.shade @@ -297,5 +297,5 @@ macro name="DnuPack" projectFile='string' kpmPackOutputDir='string' configuratio macro name="DeleteFolder" delete='string' directory -macro name="CopyFolder" sourceDir='string' outputDir='string' +macro name="CopyFolder" sourceDir='string' outputDir='string' overwrite='bool' copy diff --git a/build/_kpm-build.shade b/build/_kpm-build.shade index 56cd3d02e1..b56bdc89ff 100644 --- a/build/_kpm-build.shade +++ b/build/_kpm-build.shade @@ -16,12 +16,22 @@ default build_options='${E("NUGET3_build_options")}' @{ if (IsBuildV2) { - var projectFolders = projectFile.Split((char)';') - .SelectMany(pattern => Files.Include(pattern + "/project.json")) - .Select(proj => Path.GetDirectoryName(proj)) - .ToList(); + var projectsToPack = new List(); + + foreach(var arg in projectFile.Split((char)';')) + { + if (!arg.Contains("*")) + { + projectsToPack.Add(Path.GetDirectoryName(arg)); + } + else + { + var projectFolders = Files.Include(arg + "/project.json").Select(proj => Path.GetDirectoryName(proj)); + projectsToPack.AddRange(projectFolders); + } + } - foreach(var projFolder in projectFolders) + foreach(var projFolder in projectsToPack) { DeleteFolder(Path.Combine(projFolder, "bin", configuration)); } diff --git a/build/_kpm-pack.shade b/build/_kpm-pack.shade index 1d899cbbae..465c3f5cca 100644 --- a/build/_kpm-pack.shade +++ b/build/_kpm-pack.shade @@ -19,12 +19,22 @@ default pack_options='${E("NUGET3_pack_options")}' @{ if (IsBuildV2) { - var projectFolders = projectFile.Split((char)';') - .SelectMany(pattern => Files.Include(pattern + "/project.json")) - .Select(proj => Path.GetDirectoryName(proj)) - .ToList(); - - foreach(var projFolder in projectFolders) + var projectsToPack = new List(); + + foreach(var arg in projectFile.Split((char)';')) + { + if (!arg.Contains("*")) + { + projectsToPack.Add(Path.GetDirectoryName(arg)); + } + else + { + var projectFolders = Files.Include(arg + "/project.json").Select(proj => Path.GetDirectoryName(proj)); + projectsToPack.AddRange(projectFolders); + } + } + + foreach(var projFolder in projectsToPack) { DeleteFolder(Path.Combine(projFolder, "bin", configuration)); } @@ -40,11 +50,12 @@ default pack_options='${E("NUGET3_pack_options")}' Exec("dnu", dnuArgs); } - foreach(var projFolder in projectFolders) + foreach(var projFolder in projectsToPack) { CopyFolder( Path.Combine(projFolder, "bin", configuration), - Path.Combine(kpmPackOutputDir, Path.GetFileName(projFolder))); + Path.Combine(kpmPackOutputDir, Path.GetFileName(projFolder)), + true); } } else @@ -65,6 +76,6 @@ default pack_options='${E("NUGET3_pack_options")}' Exec("dnu", dnuArgs); } - CopyFolder(projectBin, Path.Combine(kpmPackOutputDir, projectName)); + CopyFolder(projectBin, Path.Combine(kpmPackOutputDir, projectName), true); } } \ No newline at end of file