public override bool Execute() { var pkgPath = Package.ItemSpec; var defines = Defines.IsNullOrEmpty() ? new string[0] : Defines.Select(each => each.ItemSpec).ToArray(); try { using (var script = new PackageScript(pkgPath)) { if (PackageDirectory.Is()) { script.AddNuGetPackageDirectory(PackageDirectory.GetFullPath()); } if (defines != null) { foreach (var i in defines) { var p = i.IndexOf("="); var k = p > -1 ? i.Substring(0, p) : i; var v = p > -1 ? i.Substring(p + 1) : ""; script.AddMacro(k, v); } } IEnumerable <string> overlayFiles; var pkg = script.Save(PackageTypes.NuGet, true, false, out overlayFiles); OverlayPackages = overlayFiles.Select(each => (ITaskItem) new TaskItem(each)).ToArray(); MainPackages = new ITaskItem[] { new TaskItem(pkg) }; OverlayPackages = new ITaskItem[0]; /* * AllPackages = script.AllPackages.Select(each => (ITaskItem)new TaskItem(each)).ToArray(); * * // AllPackages = script.Packages.Select(each => (ITaskItem)new TaskItem(each)).ToArray(); * * OverlayPackages = AllPackages.Where(each => each.ItemSpec.ToLower().IndexOf("overlay") > -1).ToArray(); * SymbolsPackages = AllPackages.Where(each => each.ItemSpec.ToLower().IndexOf("symbols") > -1).ToArray(); * MainPackages = AllPackages.Where(each => each.ItemSpec.ToLower().IndexOf("overlay") == -1 && each.ItemSpec.ToLower().IndexOf("symbols") == -1).ToArray(); * * foreach (var p in OverlayPackages) { * var n = Path.GetFileNameWithoutExtension(p.ItemSpec); * var o = n.IndexOf(".overlay."); * * p.SetMetadata("pkgIdentity", "{0} {1}".format(n.Substring(0, o + 7), n.Substring(o + 8))); * } */ NuGetSuccess = true; return(true); } } catch { } NuGetSuccess = false; return(false); }
public override bool Execute() { if (Defines == null || !Defines.Any()) { Log.LogMessage("define empty"); return(true); } var retarg = string.Join(" ", Defines.Select(x => string.Format($"-D\"{x.ItemSpec}={x.GetMetadata("Value")}\""))); GeneratedDefineArg = new TaskItem(retarg); Log.LogMessage("define args = `{0}`", retarg); return(true); }
public override bool Execute() { int buildId; try { dynamic buildEngine = BuildEngine.AccessPrivate(); var host = buildEngine.host; dynamic pHost = new AccessPrivateWrapper(host); var bp = pHost.buildParameters; dynamic pBp = new AccessPrivateWrapper(bp); buildId = pBp.buildId; lock (typeof(InvokeBuild)) { if (buildId <= MaxBuildId) { // this happens when we build a solution, and it wants to build each project return(true); } MaxBuildId = buildId; } } catch { } using (new PushDirectory(Environment.CurrentDirectory)) { try { if (Location.Is()) { Environment.CurrentDirectory = Location.GetFullPath(); } if (string.IsNullOrWhiteSpace(ScriptFile)) { // search for it. ScriptFile = new[] { @"copkg\.buildinfo", @"contrib\.buildinfo", @"contrib\coapp\.buildinfo", @".buildinfo" }.WalkUpPaths(); if (string.IsNullOrEmpty(ScriptFile)) { throw new ClrPlusException(@"Unable to find .buildinfo file anywhere in the current directory structure."); } } if (!File.Exists(ScriptFile)) { throw new ClrPlusException(@"Unable to find Invoke-build script file '{0}'.".format(ScriptFile)); } string[] defines = Defines.IsNullOrEmpty() ? new string[0] : Defines.Select(each => each.ItemSpec).ToArray(); using (var buildScript = new BuildScript(ScriptFile)) { buildScript.BuildMessage += message => { try { switch (message.EventType) { case "BuildWarning": Log.LogWarning(message.Subcategory, message.Code, message.HelpKeyword, message.File, message.LineNumber, message.ColumnNumber, message.EndLineNumber, message.EndColumnNumber, message.Message); break; case "BuildError": Log.LogError(message.Subcategory, message.Code, message.HelpKeyword, message.File, message.LineNumber, message.ColumnNumber, message.EndLineNumber, message.EndColumnNumber, message.Message); break; case "ProjectStarted": Log.LogExternalProjectStarted(message.Message, message.HelpKeyword, message.ProjectFile, message.TargetNames); break; case "ProjectFinished": Log.LogExternalProjectFinished(message.Message, message.HelpKeyword, message.ProjectFile, message.Succeeded); break; case "TaskStarted": Log.LogMessage(MessageImportance.Low, message.Message); break; case "TaskFinished": Log.LogMessage(MessageImportance.Low, message.Message); break; case "TargetStarted": Log.LogMessage(MessageImportance.Low, message.Message); break; case "TargetFinished": Log.LogMessage(MessageImportance.Low, message.Message); break; case "BuildStarted": Log.LogMessage(MessageImportance.Low, message.Message); break; case "BuildFinished": Log.LogMessage(MessageImportance.Low, message.Message); break; case "BuildMessage": Log.LogMessage((MessageImportance)message.Importance, message.Message); break; default: Log.LogMessage(MessageImportance.Low, message.Message); break; } } catch (Exception e) { LogError("{0}/{1}/{2}", e.GetType().Name, e.Message, e.StackTrace); } return(false); }; foreach (var i in defines) { var p = i.IndexOf("="); var k = p > -1 ? i.Substring(0, p) : i; var v = p > -1 ? i.Substring(p + 1) : ""; buildScript.AddMacro(k, v); } var targets = Targets.IsNullOrEmpty() ? new string[0] : Targets.Select(each => each.ItemSpec).ToArray(); if (Targets.IsNullOrEmpty()) { targets = new string[] { "default" }; } Environment.SetEnvironmentVariable("MaxThreads", "" + MaxThreads); Environment.SetEnvironmentVariable("HIDE_THREADS", "true"); buildScript.MaxThreads = MaxThreads; return(buildScript.Execute(targets)); } } catch (Exception e) { LogError("{0}/{1}/{2}".format(e.GetType().Name, e.Message, e.StackTrace)); return(false); } finally { Environment.SetEnvironmentVariable("HIDE_THREADS", null); Environment.SetEnvironmentVariable("MaxThreads", null); } } }