().GitHubToken)
+ .When(generateReports, _ => _
+ .EnableReportRisk()
+ .SetSbom(SbomFormat.cyclonedx)
+ .SetSbomOutput(PackageGuardSbomFile)
+ .SetProcessEnvironmentVariable(PackageGuardReportRiskPathOverrideEnvironmentVariable, PackageGuardSarifFile)));
+ });
+}
diff --git a/build/_build.csproj b/build/_build.csproj
index 0b0a10b64..5c1d3324d 100644
--- a/build/_build.csproj
+++ b/build/_build.csproj
@@ -58,6 +58,7 @@
Build.cs as the canonical version source. Replaces GitVersion.Tool (#81). Direct
dependency because _build.csproj turns off central package management. -->
+
diff --git a/docs/website/03-common/08-cli-tools.md b/docs/website/03-common/08-cli-tools.md
index 63fe159b9..2cadfce8e 100644
--- a/docs/website/03-common/08-cli-tools.md
+++ b/docs/website/03-common/08-cli-tools.md
@@ -49,6 +49,7 @@ Interacting with third-party command-line interface tools (CLIs) is an essential
| [Octopus](https://octopus.com/) | `build-information`, `create-release`, `deploy-release`, `pack`, `push` |
| [OctoVersion](https://github.com/OctopusDeploy/OctoVersion) | `octoversion`, `octoversion` |
| [OpenCover](https://github.com/OpenCover/opencover) | _Single top-level command_ |
+| [PackageGuard](https://github.com/dennisdoomen/packageguard) | _Single top-level command_ |
| [Paket](https://fsprojects.github.io/paket) | `pack`, `push`, `restore`, `update` |
| [PowerShell](https://docs.microsoft.com/en-us/powershell/) | _Single top-level command_ |
| [Pulumi](https://www.pulumi.com/) | `config`, `config cp`, `config get`, `config refresh`, `config rm`, `config set`, `destroy`, `new`, `preview`, `stack`, `stack change-secrets-provider`, `stack export`, `stack graph`, `stack history`, `stack import`, `stack init`, `stack ls`, `stack output`, `stack rename`, `stack rm`, `stack select`, `stack tag get`, `stack tag ls`, `stack tag rm`, `stack tag set`, `up` |
diff --git a/src/Fallout.Build/VCS/GitRepositoryExtensions.cs b/src/Fallout.Build/VCS/GitRepositoryExtensions.cs
index aa9806ae8..e65db3d45 100644
--- a/src/Fallout.Build/VCS/GitRepositoryExtensions.cs
+++ b/src/Fallout.Build/VCS/GitRepositoryExtensions.cs
@@ -51,4 +51,10 @@ public static bool IsOnHotfixBranch(this GitRepository repository)
return (repository.Branch?.StartsWithOrdinalIgnoreCase("hotfix/") ?? false) ||
(repository.Branch?.StartsWithOrdinalIgnoreCase("hotfixes/") ?? false);
}
+
+ public static bool IsOnSupportBranch(this GitRepository repository)
+ {
+ return (repository.Branch?.StartsWithOrdinalIgnoreCase("support/") ?? false) ||
+ (repository.Branch?.StartsWithOrdinalIgnoreCase("supports/") ?? false);
+ }
}
diff --git a/src/Fallout.Common/Tools/PackageGuard/PackageGuard.Generated.cs b/src/Fallout.Common/Tools/PackageGuard/PackageGuard.Generated.cs
new file mode 100644
index 000000000..87b0ead28
--- /dev/null
+++ b/src/Fallout.Common/Tools/PackageGuard/PackageGuard.Generated.cs
@@ -0,0 +1,344 @@
+// Generated from https://github.com/Fallout-build/Fallout/blob/develop/src/Fallout.Common/Tools/PackageGuard/PackageGuard.json
+
+using Fallout.Common;
+using Fallout.Common.Tooling;
+using Fallout.Common.Tools;
+using Fallout.Common.Utilities.Collections;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Diagnostics.CodeAnalysis;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Text.Json.Serialization;
+
+namespace Fallout.Common.Tools.PackageGuard;
+
+/// PackageGuard scans the NuGet, npm, Yarn and pnpm dependencies of a solution or project against an allow- or deny-list, so you can control which open-source licenses and package versions are acceptable. It can also print a colored risk summary, generate HTML/SARIF risk reports, and produce a Software Bill of Materials.
For more details, visit the official website.
+[ExcludeFromCodeCoverage]
+[NuGetTool(Id = PackageId, Executable = PackageExecutable)]
+public partial class PackageGuardTasks : ToolTasks, IRequireNuGetPackage
+{
+ public static string PackageGuardPath { get => new PackageGuardTasks().GetToolPathInternal(); set => new PackageGuardTasks().SetToolPath(value); }
+ public const string PackageId = "PackageGuard";
+ public const string PackageExecutable = "PackageGuard.dll|PackageGuard.exe";
+ /// PackageGuard scans the NuGet, npm, Yarn and pnpm dependencies of a solution or project against an allow- or deny-list, so you can control which open-source licenses and package versions are acceptable. It can also print a colored risk summary, generate HTML/SARIF risk reports, and produce a Software Bill of Materials.
For more details, visit the official website.
+ public static IReadOnlyCollection