diff --git a/makefile.shade b/makefile.shade index d7cdcbb0fb..0412d44787 100644 --- a/makefile.shade +++ b/makefile.shade @@ -213,16 +213,29 @@ var buildTarget = "compile" #only-compile target='compile' @{ var failed = new Dictionary(); + var skipped = new List(); + foreach(var repo in repos) { + var blockName = string.Format("Building {0}", repo); + if (IsTeamCity) + { + Log.Info(string.Format("##teamcity[blockOpened name='{0}']", FormatForTeamCity(blockName))); + } try { - var blockName = string.Format("Building {0}", repo); - if (IsTeamCity) - { - Log.Info(string.Format("##teamcity[blockOpened name='{0}']", FormatForTeamCity(blockName))); - } Log.Info(blockName); + + if (SKIP_NO_CREDENTIALS) + { + if (!Directory.Exists(repo)) + { + // The directory was not cloned because the credentials were not specified so don't try to build it + skipped.Add(repo); + Log.Warn(string.Format("The repo {0} does not exist locally and it will not be built.", repo)); + continue; + } + } if (IsMono) { @@ -232,18 +245,21 @@ var buildTarget = "compile" { Exec("build.cmd", buildTarget, repo); } + Log.Info(string.Format("Build {0} succeeded", repo)); - - if (IsTeamCity) - { - Log.Info(string.Format("##teamcity[blockClosed name='{0}']", FormatForTeamCity(blockName))); - } } catch(Exception ex) { Log.Warn(string.Format("Build {0} failed: {1}", repo, ex.Message)); failed[repo] = ex; } + finally + { + if (IsTeamCity) + { + Log.Info(string.Format("##teamcity[blockClosed name='{0}']", FormatForTeamCity(blockName))); + } + } } foreach(var repo in repos) @@ -260,6 +276,10 @@ var buildTarget = "compile" } } + else if (skipped.Contains(repo)) + { + Log.Warn(string.Format("Build {0} skipped", repo)); + } else { Log.Info(string.Format("Build {0} succeeded", repo));