From d256b3ffef278b9840cb3bf9e8810bad7e9df754 Mon Sep 17 00:00:00 2001 From: jasonmwebb-lv <97196139+jasonmwebb-lv@users.noreply.github.com> Date: Thu, 18 Apr 2024 23:39:57 -0600 Subject: [PATCH] Dev (#126) * Fixed DI scope issue with ScopedDataStoreEnlistementProvider. (#121) The StaticDataStore can be a singleton and still accessed through the StaticDataStoreRegistry with is now "Scoped" rather than a singleton to prevent root scope resolver issues. Updated example application and added some better exception handling around this area. * Version bump. * Bug fix/scoped service resolver issues iunit of work scope (#123) * Refactored CleanWithCQRS example to use Mediator abstractions. * Refactored Mediator pattern. * Refactored DI scope issues. * Version bump. * Feature/build script with nuke (#125) * Added Nuke build project. * Added Nuke build project to sln. * Implemented control flow yaml make process based on Nuke. * Refactored all nuget packaging to live inside build. * Set nuget meta data to proper settings. * Generating CI file now for Github. --------- Co-authored-by: Jason Webb <46631010+JasonMWebb@users.noreply.github.com> --------- Co-authored-by: Jason Webb <46631010+JasonMWebb@users.noreply.github.com> --- .github/workflows/ci.yml | 44 ++ .nuke/build.schema.json | 128 +++++ .nuke/parameters.json | 5 + Build/.editorconfig | 11 + Build/Build.cs | 542 ++++++++++++++++++ Build/Build.csproj | 49 ++ Build/Build.csproj.DotSettings | 27 + Build/Configuration.cs | 16 + Build/Directory.Build.props | 8 + Build/Directory.Build.targets | 8 + .../RCommon.ApplicationServices.csproj | 19 - .../RCommon.Authorization.Web.csproj | 21 - Src/RCommon.Core/RCommon.Core.csproj | 21 - Src/RCommon.Core/rcommon-icon.png | Bin 137265 -> 0 bytes Src/RCommon.Dapper/RCommon.Dapper.csproj | 21 - Src/RCommon.EfCore/RCommon.EFCore.csproj | 21 - Src/RCommon.Emailing/RCommon.Emailing.csproj | 20 - Src/RCommon.Entities/RCommon.Entities.csproj | 25 +- Src/RCommon.Linq2Db/RCommon.Linq2Db.csproj | 21 - .../RCommon.MassTransit.csproj | 21 - Src/RCommon.Mediator/RCommon.Mediator.csproj | 21 - Src/RCommon.Mediatr/RCommon.MediatR.csproj | 21 - Src/RCommon.Models/RCommon.Models.csproj | 25 +- .../RCommon.Persistence.csproj | 21 - Src/RCommon.Security/RCommon.Security.csproj | 25 +- Src/RCommon.SendGrid/RCommon.SendGrid.csproj | 20 - .../reactor2-icon-darkbg-small.jpg | Bin 3175 -> 0 bytes Src/RCommon.Web/RCommon.Web.csproj | 25 +- .../RCommon.Wolverine.csproj | 21 - Src/RCommon.sln | 7 + build.cmd | 7 + build.ps1 | 74 +++ build.sh | 67 +++ 33 files changed, 997 insertions(+), 365 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .nuke/build.schema.json create mode 100644 .nuke/parameters.json create mode 100644 Build/.editorconfig create mode 100644 Build/Build.cs create mode 100644 Build/Build.csproj create mode 100644 Build/Build.csproj.DotSettings create mode 100644 Build/Configuration.cs create mode 100644 Build/Directory.Build.props create mode 100644 Build/Directory.Build.targets delete mode 100644 Src/RCommon.Core/rcommon-icon.png delete mode 100644 Src/RCommon.SendGrid/reactor2-icon-darkbg-small.jpg create mode 100755 build.cmd create mode 100644 build.ps1 create mode 100755 build.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..d5860940 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,44 @@ +# ------------------------------------------------------------------------------ +# +# +# This code was generated. +# +# - To turn off auto-generation set: +# +# [GitHubActions (AutoGenerate = false)] +# +# - To trigger manual generation invoke: +# +# nuke --generate-configuration GitHubActions_ci --host GitHubActions +# +# +# ------------------------------------------------------------------------------ + +name: ci + +on: + push: + paths: + - 'Src/**' + - 'Build/**' + pull_request: + branches: + - main + +jobs: + ubuntu-latest: + name: ubuntu-latest + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: 'Cache: .nuke/temp, ~/.nuget/packages' + uses: actions/cache@v3 + with: + path: | + .nuke/temp + ~/.nuget/packages + key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }} + - name: 'Run: Compile, Pack, Push' + run: ./build.cmd Compile Pack Push + env: + NUGETAPIKEY: ${{ secrets.NUGETAPIKEY }} diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json new file mode 100644 index 00000000..32821b42 --- /dev/null +++ b/.nuke/build.schema.json @@ -0,0 +1,128 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/build", + "title": "Build Schema", + "definitions": { + "build": { + "type": "object", + "properties": { + "CI": { + "type": "boolean" + }, + "Configuration": { + "type": "string", + "description": "Configuration to build - Default is 'Debug' (local) or 'Release' (server)", + "enum": [ + "Debug", + "Release" + ] + }, + "Continue": { + "type": "boolean", + "description": "Indicates to continue a previously failed build attempt" + }, + "Help": { + "type": "boolean", + "description": "Shows the help text for this build assembly" + }, + "Host": { + "type": "string", + "description": "Host for execution. Default is 'automatic'", + "enum": [ + "AppVeyor", + "AzurePipelines", + "Bamboo", + "Bitbucket", + "Bitrise", + "GitHubActions", + "GitLab", + "Jenkins", + "Rider", + "SpaceAutomation", + "TeamCity", + "Terminal", + "TravisCI", + "VisualStudio", + "VSCode" + ] + }, + "NoLogo": { + "type": "boolean", + "description": "Disables displaying the NUKE logo" + }, + "NUGETAPIKEY": { + "type": "string", + "default": "Secrets must be entered via 'nuke :secrets [profile]'" + }, + "NuGetApiUrl": { + "type": "string" + }, + "Partition": { + "type": "string", + "description": "Partition to use on CI" + }, + "Plan": { + "type": "boolean", + "description": "Shows the execution plan (HTML)" + }, + "Profile": { + "type": "array", + "description": "Defines the profiles to load", + "items": { + "type": "string" + } + }, + "Root": { + "type": "string", + "description": "Root directory during build execution" + }, + "Skip": { + "type": "array", + "description": "List of targets to be skipped. Empty list skips all dependencies", + "items": { + "type": "string", + "enum": [ + "Clean", + "Compile", + "Pack", + "Print", + "Print_Net_SDK", + "Push", + "Restore" + ] + } + }, + "Solution": { + "type": "string", + "description": "Path to a solution file that is automatically loaded" + }, + "Target": { + "type": "array", + "description": "List of targets to be invoked. Default is '{default_target}'", + "items": { + "type": "string", + "enum": [ + "Clean", + "Compile", + "Pack", + "Print", + "Print_Net_SDK", + "Push", + "Restore" + ] + } + }, + "Verbosity": { + "type": "string", + "description": "Logging verbosity during build execution. Default is 'Normal'", + "enum": [ + "Minimal", + "Normal", + "Quiet", + "Verbose" + ] + } + } + } + } +} diff --git a/.nuke/parameters.json b/.nuke/parameters.json new file mode 100644 index 00000000..970ccaee --- /dev/null +++ b/.nuke/parameters.json @@ -0,0 +1,5 @@ +{ + "$schema": "./build.schema.json", + "Solution": "Src/RCommon.sln", + "Configuration": "Release" +} diff --git a/Build/.editorconfig b/Build/.editorconfig new file mode 100644 index 00000000..31e43dcd --- /dev/null +++ b/Build/.editorconfig @@ -0,0 +1,11 @@ +[*.cs] +dotnet_style_qualification_for_field = false:warning +dotnet_style_qualification_for_property = false:warning +dotnet_style_qualification_for_method = false:warning +dotnet_style_qualification_for_event = false:warning +dotnet_style_require_accessibility_modifiers = never:warning + +csharp_style_expression_bodied_methods = true:silent +csharp_style_expression_bodied_properties = true:warning +csharp_style_expression_bodied_indexers = true:warning +csharp_style_expression_bodied_accessors = true:warning diff --git a/Build/Build.cs b/Build/Build.cs new file mode 100644 index 00000000..389a67c0 --- /dev/null +++ b/Build/Build.cs @@ -0,0 +1,542 @@ +using System; +using System.IO; +using System.Linq; +using GlobExpressions; +using Microsoft.Build.Evaluation; +using Nuke.Common; +using Nuke.Common.CI; +using Nuke.Common.CI.GitHubActions; +using Nuke.Common.Execution; +using Nuke.Common.Git; +using Nuke.Common.IO; +using Nuke.Common.ProjectModel; +using Nuke.Common.Tooling; +using Nuke.Common.Tools.DotNet; +using Nuke.Common.Tools.GitHub; +using Nuke.Common.Tools.GitVersion; +using Nuke.Common.Utilities.Collections; +using Octokit; +using Serilog; +using static Nuke.Common.EnvironmentInfo; +using static Nuke.Common.IO.FileSystemTasks; +using static Nuke.Common.IO.PathConstruction; + +[GitHubActions("ci", + GitHubActionsImage.UbuntuLatest, + InvokedTargets = new[] { nameof(Compile), nameof(Pack), nameof(Push) }, + OnPushIncludePaths = new[] { + "Src/**", + "Build/**" + }, + OnPullRequestBranches = new[] { "main" }, + AutoGenerate = true, + ImportSecrets = new[] {"NUGETAPIKEY"})] +[ShutdownDotNetAfterServerBuild] +class Build : NukeBuild +{ + /// Support plugins are available for: + /// - JetBrains ReSharper https://nuke.build/resharper + /// - JetBrains Rider https://nuke.build/rider + /// - Microsoft VisualStudio https://nuke.build/visualstudio + /// - Microsoft VSCode https://nuke.build/vscode + + public static int Main () => Execute(build => build.Compile, build => build.Pack, build => build.Push); + + [Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")] + readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release; + + [Parameter] readonly bool CI = false; + + [Solution] readonly Solution Solution; + + [GitVersion] readonly GitVersion GitVersion; + + [GitRepository] readonly GitRepository GitRepository; + + GitHubActions GitHubActions => GitHubActions.Instance; + + AbsolutePath Directory_Src => RootDirectory / "Src"; + + AbsolutePath Directory_Build => RootDirectory / "Build"; + + AbsolutePath Directory_NuGet => RootDirectory / "NuGet"; + + [Parameter] string NuGetApiUrl = "https://api.nuget.org/v3/index.json"; + [Parameter][Secret] string NUGETAPIKEY; + + string Copyright = $"Copyright © Jason Webb {DateTime.Now.Year}"; + + protected override void OnBuildInitialized() + { + Log.Information("🚀 Build process started"); + + base.OnBuildInitialized(); + } + + Target Print => _ => _ + .Executes(() => + { + if (GitHubActions != null) + { + Log.Information("Branch = {Branch}", GitHubActions.Ref); + Log.Information("Commit = {Commit}", GitHubActions.Sha); + } + var projects = Solution.GetAllProjects("RCommon*"); + foreach (var project in projects) + { + Log.Information("Project: {0}", project.Path.ToString()); + } + }); + + Target Print_Net_SDK => _ => _ + .DependsOn(Print) + .Executes(() => + { + DotNetTasks.DotNet("--list-sdks"); + }); + + + Target Clean => _ => _ + .DependsOn(Print_Net_SDK) + .Executes(() => + { + Log.Information("Cleaning solution"); + Directory_Src.GlobDirectories("**/bin", "**/obj") + .ForEach(x => x.DeleteDirectory()); + }); + + Target Restore => _ => _ + .DependsOn(Clean) + .Executes(() => + { + Log.Information("Restoring solution"); + DotNetTasks + .DotNetRestore(_ => _ + .SetProjectFile(Solution)); + }); + + Target Compile => _ => _ + .DependsOn(Restore) + .Executes(() => + { + Log.Information("Compiling solution"); + DotNetTasks + .DotNetBuild(_ => _ + .SetProjectFile(Solution) + .SetConfiguration(Configuration) + .EnableNoRestore() + .SetCopyright(Copyright)); + }); + + Target Pack => _ => _ + .DependsOn(Compile) + .Executes(() => + { + Log.Information("Generating NuGet packages for projects in solution"); + int commitNum = 0; + string NuGetVersionCustom = "2.0.0.8"; + + + //if it's not a tagged release - append the commit number to the package version + //tagged commits on main have versions + // - v0.3.0-beta + //other commits have + // - v0.3.0-beta1 + + if (GitVersion != null && Int32.TryParse(GitVersion.CommitsSinceVersionSource, out commitNum)) + { + Log.Information("Setting version....."); + NuGetVersionCustom = commitNum > 0 ? NuGetVersionCustom + $"{commitNum}" : NuGetVersionCustom; + Log.Information("Version #: {0}", NuGetVersionCustom); + } + + Log.Information("Configuration: {0}", Configuration); + Log.Information("Solution: {0}", Solution.FileName); + var projects = Solution.GetAllProjects("RCommon*"); + foreach (var project in projects) + { + Log.Information("Project: {0}", project.Name); + } + //Log.Information("Project: {0}", Solution.GetProject("RCommon.Emailing")); + //var path = projects.FirstOrDefault(x => x.Name == "RCommon.Emailing").Path.ToString(); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.Emailing") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.Emailing").Path.ToString()) + .SetPackageTags("RCommon emailing email abstractions smtp") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.SendGrid") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.SendGrid").Path.ToString()) + .SetPackageTags("RCommon email emailing sendgrid") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.MassTransit") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.MassTransit").Path.ToString()) + .SetPackageTags("RCommon masstransit message bus event bus messaging") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.Wolverine") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.Wolverine").Path.ToString()) + .SetPackageTags("RCommon Wolverine messaging message bus event bus") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.Mediator") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.Mediator").Path.ToString()) + .SetPackageTags("RCommon mediator abstraction pubsub mediator pattern") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.MediatR") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.MediatR").Path.ToString()) + .SetPackageTags("RCommon MediatR mediator implementation pubsub mediator pattern") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.Dapper") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.Dapper").Path.ToString()) + .SetPackageTags("RCommon dapper dapper repository repository pattern crud dapper extensions") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.EFCore") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.EFCore").Path.ToString()) + .SetPackageTags("RCommon entity framework efcore repository crud repository pattern") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.Linq2Db") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.Linq2Db").Path.ToString()) + .SetPackageTags("RCommon linq2db linqtosql linqtodb repository pattern linq2db repository") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.Persistence") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.Persistence").Path.ToString()) + .SetPackageTags("RCommon persistence abstractions repository pattern crud") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.ApplicationServices") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.ApplicationServices").Path.ToString()) + .SetPackageTags("RCommon application services CQRS auto web api commands command handlers queries query handlers command bus query bus") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.Authorization.Web") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.Authorization.Web").Path.ToString()) + .SetPackageTags("RCommon web authorization web security web identity bearer tokens") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.Core") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.Core").Path.ToString()) + .SetPackageTags("RCommon infrastructure code design patterns design pattern abstractions cloud pattern abstractions persistence event handling") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.Entities") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.Entities").Path.ToString()) + .SetPackageTags("RCommon business entities domain objects domain model ddd domain events event aware entities entity helpers") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.Models") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.Models").Path.ToString()) + .SetPackageTags("RCommon model helpers dto dto conversion") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.Security") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.Security").Path.ToString()) + .SetPackageTags("RCommon security extensions claims identity authorization") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + DotNetTasks + .DotNetPack(_ => _ + .SetPackageId("RCommon.Web") + .SetProject(projects.FirstOrDefault(x => x.Name == "RCommon.Web").Path.ToString()) + .SetPackageTags("RCommon web extensions aspnet core") + .SetDescription("A cohesive set of infrastructure libraries for dotnet that utilizes abstractions for event handling persistence unit of work mediator distributed messaging event bus CQRS email and more") + .SetConfiguration(Configuration) + .SetCopyright(Copyright) + .SetAuthors("Jason Webb") + .SetPackageIconUrl("https://avatars.githubusercontent.com/u/96881178?s=200&v=4") + .SetRepositoryUrl("https://github.com/RCommon-Team/RCommon") + .SetPackageProjectUrl("https://rcommon.com") + .SetPackageLicenseUrl("https://licenses.nuget.org/Apache-2.0") + .SetVersion(NuGetVersionCustom) + .SetNoDependencies(true) + .SetOutputDirectory(Directory_NuGet) + .EnableNoBuild() + .EnableNoRestore()); + }); + + + Target Push => _ => _ + .DependsOn(Pack) + .Requires(() => NuGetApiUrl) + .Requires(() => NUGETAPIKEY) + .Requires(() => Configuration.Equals(Configuration.Release)) + .Executes(() => + { + Assert.NotNull(Glob.Files(Directory_NuGet, "*.nupkg", GlobOptions.MatchFullPath)) + .Where(x => !x.EndsWith("symbols.nupkg")) + .ForEach(file => + { + Log.Information("Pushing nuget from path: {0}", Directory_NuGet/file); + DotNetTasks + .DotNetNuGetPush(s => s + .SetTargetPath(Directory_NuGet/file) + .SetSource(NuGetApiUrl) + .SetApiKey(NUGETAPIKEY) + ); + }); + }); + + //Target CreateRelease => _ => _ + // .DependsOn(Pack) + // .Executes(() => + // { + // Logger.Info("Started creating the release"); + // GitHubTasks.GitHubClient = new GitHubClient(new ProductHeaderValue(nameof(NukeBuild))) + // { + // Credentials = new Credentials(GithubRepositoryAuthToken) + // }; + + // var newRelease = new NewRelease(GitVersion.NuGetVersionV2) + // { + // TargetCommitish = GitVersion.Sha, + // Draft = true, + // Name = $"Release version {GitVersion.SemVer}", + // Prerelease = false, + // Body = + // @$"See release notes in [docs](https://[YourSite]/{GitVersion.Major}.{GitVersion.Minor}/)" + // }; + + // var createdRelease = GitHubTasks.GitHubClient.Repository.Release.Create(GitRepository.GetGitHubOwner(), GitRepository.GetGitHubName(), newRelease).Result; + // if (ArtifactsDirectory.GlobDirectories("*").Count > 0) + // { + // Logger.Warn( + // $"Only files on the root of {ArtifactsDirectory} directory will be uploaded as release assets."); + // } + + // ArtifactsDirectory.GlobFiles("*").ForEach(p => UploadReleaseAssetToGithub(createdRelease, p)); + // var _ = GitHubTasks.GitHubClient.Repository.Release + // .Edit(GitRepository.GetGitHubOwner(), GitRepository.GetGitHubName(), createdRelease.Id, new ReleaseUpdate { Draft = false }) + // .Result; + // }); + + //private void UploadReleaseAssetToGithub(Release release, AbsolutePath asset) + //{ + // if (!FileExists(asset)) + // { + // return; + // } + + // Logger.Info($"Started Uploading {Path.GetFileName(asset)} to the release."); + // var releaseAssetUpload = new ReleaseAssetUpload + // { + // ContentType = "application/x-binary", + // FileName = Path.GetFileName(asset), + // RawData = File.OpenRead(asset) + // }; + // var _ = GitHubTasks.GitHubClient.Repository.Release.UploadAsset(release, releaseAssetUpload).Result; + // Logger.Success($"Done Uploading {Path.GetFileName(asset)} to the release."); + //} +} diff --git a/Build/Build.csproj b/Build/Build.csproj new file mode 100644 index 00000000..1bd56474 --- /dev/null +++ b/Build/Build.csproj @@ -0,0 +1,49 @@ + + + + Exe + net8.0 + + CS0649;CS0169;CA1050;CA1822;CA2211;IDE1006 + .. + .. + 1 + false + 16854301-8bc7-4d72-a537-a9491bfca591 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Build/Build.csproj.DotSettings b/Build/Build.csproj.DotSettings new file mode 100644 index 00000000..a778f33d --- /dev/null +++ b/Build/Build.csproj.DotSettings @@ -0,0 +1,27 @@ + + DO_NOT_SHOW + DO_NOT_SHOW + DO_NOT_SHOW + DO_NOT_SHOW + DO_NOT_SHOW + Implicit + Implicit + ExpressionBody + 0 + NEXT_LINE + True + False + 120 + IF_OWNER_IS_SINGLE_LINE + WRAP_IF_LONG + False + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + True + True + True + True + True + True + True + True diff --git a/Build/Configuration.cs b/Build/Configuration.cs new file mode 100644 index 00000000..9c08b1ae --- /dev/null +++ b/Build/Configuration.cs @@ -0,0 +1,16 @@ +using System; +using System.ComponentModel; +using System.Linq; +using Nuke.Common.Tooling; + +[TypeConverter(typeof(TypeConverter))] +public class Configuration : Enumeration +{ + public static Configuration Debug = new Configuration { Value = nameof(Debug) }; + public static Configuration Release = new Configuration { Value = nameof(Release) }; + + public static implicit operator string(Configuration configuration) + { + return configuration.Value; + } +} diff --git a/Build/Directory.Build.props b/Build/Directory.Build.props new file mode 100644 index 00000000..e147d635 --- /dev/null +++ b/Build/Directory.Build.props @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Build/Directory.Build.targets b/Build/Directory.Build.targets new file mode 100644 index 00000000..25326095 --- /dev/null +++ b/Build/Directory.Build.targets @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Src/RCommon.ApplicationServices/RCommon.ApplicationServices.csproj b/Src/RCommon.ApplicationServices/RCommon.ApplicationServices.csproj index 017b1211..958c3c3c 100644 --- a/Src/RCommon.ApplicationServices/RCommon.ApplicationServices.csproj +++ b/Src/RCommon.ApplicationServices/RCommon.ApplicationServices.csproj @@ -2,18 +2,6 @@ net6.0;net7.0;net8.0; - true - rcommon-icon.png - - https://github.com/Reactor2Team/RCommon - https://github.com/Reactor2Team/RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - Jason Webb - RCommon - 2.0.0.8 - GitHub - RCommon, application services, CQRS, auto web api, commands, command handlers, queries, query handlers, command bus, query bus, c#, .NET - Apache-2.0 @@ -21,13 +9,6 @@ - - - True - - - - diff --git a/Src/RCommon.Authorization.Web/RCommon.Authorization.Web.csproj b/Src/RCommon.Authorization.Web/RCommon.Authorization.Web.csproj index ad688630..6a19fbba 100644 --- a/Src/RCommon.Authorization.Web/RCommon.Authorization.Web.csproj +++ b/Src/RCommon.Authorization.Web/RCommon.Authorization.Web.csproj @@ -2,29 +2,8 @@ net6.0;net7.0;net8.0; - 2.0.0.8 - Jason Webb - RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - - https://github.com/Reactor2Team/RCommon - https://github.com/Reactor2Team/RCommon - rcommon-icon.png - RCommon, web authorization, web security, web identity, bearer tokens, c#, .NET - true - 2.0.0.0 - 2.0.0.0 - - Apache-2.0 - - - True - \ - - - diff --git a/Src/RCommon.Core/RCommon.Core.csproj b/Src/RCommon.Core/RCommon.Core.csproj index 2fbe4965..78ba8c7c 100644 --- a/Src/RCommon.Core/RCommon.Core.csproj +++ b/Src/RCommon.Core/RCommon.Core.csproj @@ -2,20 +2,6 @@ net6.0;net7.0;net8.0; - 2.0.0.8 - Jason Webb - RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - - https://github.com/Reactor2Team/RCommon - https://github.com/Reactor2Team/RCommon - rcommon-icon.png - RCommon, language extensions, generic factories, abstractions, c#, .NET - true - 2.0.0.0 - 2.0.0.0 - - Apache-2.0 $(MSBuildProjectName.Replace(" ", "_").Replace(".Core", "")) @@ -44,12 +30,5 @@ - - - - True - - - diff --git a/Src/RCommon.Core/rcommon-icon.png b/Src/RCommon.Core/rcommon-icon.png deleted file mode 100644 index a68805cc0544f5f06a03a85ddd72c0158460dcf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137265 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 EvL?Uocdc0FD8W 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 Czqn}t diff --git a/Src/RCommon.Dapper/RCommon.Dapper.csproj b/Src/RCommon.Dapper/RCommon.Dapper.csproj index f3df0455..da80940f 100644 --- a/Src/RCommon.Dapper/RCommon.Dapper.csproj +++ b/Src/RCommon.Dapper/RCommon.Dapper.csproj @@ -2,20 +2,6 @@ net6.0;net7.0;net8.0; - 2.0.0.8 - Jason Webb - RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - - https://github.com/Reactor2Team/RCommon - https://github.com/Reactor2Team/RCommon - rcommon-icon.png - RCommon, dapper, dapper repository, repository pattern, crud, dapper extensions, c#, .NET - true - 2.0.0.0 - 2.0.0.0 - - Apache-2.0 @@ -45,13 +31,6 @@ - - - True - - - - diff --git a/Src/RCommon.EfCore/RCommon.EFCore.csproj b/Src/RCommon.EfCore/RCommon.EFCore.csproj index 022aa86b..0098010b 100644 --- a/Src/RCommon.EfCore/RCommon.EFCore.csproj +++ b/Src/RCommon.EfCore/RCommon.EFCore.csproj @@ -3,20 +3,6 @@ enable net6.0;net7.0;net8.0; - 2.0.0.8 - Jason Webb - RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - - https://github.com/Reactor2Team/RCommon - https://github.com/Reactor2Team/RCommon - rcommon-icon.png - RCommon, entity framework, efcore, repository, crud, repository pattern, c#, .NET - true - 2.0.0.0 - 2.0.0.0 - - Apache-2.0 @@ -45,13 +31,6 @@ - - - True - - - - diff --git a/Src/RCommon.Emailing/RCommon.Emailing.csproj b/Src/RCommon.Emailing/RCommon.Emailing.csproj index 59f50743..8445a5e3 100644 --- a/Src/RCommon.Emailing/RCommon.Emailing.csproj +++ b/Src/RCommon.Emailing/RCommon.Emailing.csproj @@ -3,32 +3,12 @@ net6.0;net7.0;net8.0; enable - Jason Webb - RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - - https://github.com/Reactor2Team/RCommon - rcommon-icon.png - https://github.com/Reactor2Team/RCommon - RCommon, emailing, email abstractions, smtp - true - GitHub - 2.0.0.8 - - Apache-2.0 - - - True - - - - diff --git a/Src/RCommon.Entities/RCommon.Entities.csproj b/Src/RCommon.Entities/RCommon.Entities.csproj index fb2833a2..cc78e268 100644 --- a/Src/RCommon.Entities/RCommon.Entities.csproj +++ b/Src/RCommon.Entities/RCommon.Entities.csproj @@ -2,34 +2,11 @@ net6.0;net7.0;net8.0; - 2.0.0.8 - Jason Webb - RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - - https://github.com/Reactor2Team/RCommon - https://github.com/Reactor2Team/RCommon - rcommon-icon.png - RCommon, business entities, domain objects, domain model, ddd, domain events, event aware entities, entity helpers, c#, .NET - true - 2.0.0.0 - 2.0.0.0 - - Apache-2.0 - - - - - True - - - - - + diff --git a/Src/RCommon.Linq2Db/RCommon.Linq2Db.csproj b/Src/RCommon.Linq2Db/RCommon.Linq2Db.csproj index 35445652..c1882fca 100644 --- a/Src/RCommon.Linq2Db/RCommon.Linq2Db.csproj +++ b/Src/RCommon.Linq2Db/RCommon.Linq2Db.csproj @@ -2,31 +2,10 @@ net6.0;net7.0;net8.0; - 2.0.0.8 - Jason Webb - RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - - https://github.com/Reactor2Team/RCommon - https://github.com/Reactor2Team/RCommon - rcommon-icon.png - RCommon, linq2db, linqtosql, linqtodb, repository pattern, linq2db repository, c#, .NET - true - 2.0.0.0 - 2.0.0.0 - - Apache-2.0 enable enable - - - - True - - - diff --git a/Src/RCommon.MassTransit/RCommon.MassTransit.csproj b/Src/RCommon.MassTransit/RCommon.MassTransit.csproj index dd4a9b2f..14779471 100644 --- a/Src/RCommon.MassTransit/RCommon.MassTransit.csproj +++ b/Src/RCommon.MassTransit/RCommon.MassTransit.csproj @@ -2,31 +2,10 @@ net6.0;net7.0;net8.0; - 2.0.0.8 - Jason Webb - RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - - https://github.com/Reactor2Team/RCommon - https://github.com/Reactor2Team/RCommon - rcommon-icon.png - RCommon, masstransit, message bus, event bus, messaging, c#, .NET - true - 2.0.0.0 - 2.0.0.0 - - Apache-2.0 enable enable - - - - True - - - diff --git a/Src/RCommon.Mediator/RCommon.Mediator.csproj b/Src/RCommon.Mediator/RCommon.Mediator.csproj index a94dd7e3..f23078aa 100644 --- a/Src/RCommon.Mediator/RCommon.Mediator.csproj +++ b/Src/RCommon.Mediator/RCommon.Mediator.csproj @@ -2,31 +2,10 @@ net6.0;net7.0;net8.0; - 2.0.0.8 - Jason Webb - RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - - https://github.com/Reactor2Team/RCommon - https://github.com/Reactor2Team/RCommon - rcommon-icon.png - RCommon, language extensions, generic factories, abstractions, c#, .NET - true - 2.0.0.0 - 2.0.0.0 - - Apache-2.0 enable enable - - - - True - - - diff --git a/Src/RCommon.Mediatr/RCommon.MediatR.csproj b/Src/RCommon.Mediatr/RCommon.MediatR.csproj index 1c4257a1..f19e6374 100644 --- a/Src/RCommon.Mediatr/RCommon.MediatR.csproj +++ b/Src/RCommon.Mediatr/RCommon.MediatR.csproj @@ -2,31 +2,10 @@ net6.0;net7.0;net8.0; - 2.0.0.8 - Jason Webb - RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - - https://github.com/Reactor2Team/RCommon - https://github.com/Reactor2Team/RCommon - rcommon-icon.png - RCommon, language extensions, generic factories, abstractions, c#, .NET - true - 2.0.0.0 - 2.0.0.0 - - Apache-2.0 enable enable - - - - True - - - diff --git a/Src/RCommon.Models/RCommon.Models.csproj b/Src/RCommon.Models/RCommon.Models.csproj index a1088881..3e146d47 100644 --- a/Src/RCommon.Models/RCommon.Models.csproj +++ b/Src/RCommon.Models/RCommon.Models.csproj @@ -2,31 +2,8 @@ net6.0;net7.0;net8.0; - 2.0.0.8 - Jason Webb - RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - - https://github.com/Reactor2Team/RCommon - https://github.com/Reactor2Team/RCommon - rcommon-icon.png - RCommon, model helpers, dto, dto conversion, c#, .NET - true - 2.0.0.0 - 2.0.0.0 - - Apache-2.0 - - - - - True - - - - - + diff --git a/Src/RCommon.Persistence/RCommon.Persistence.csproj b/Src/RCommon.Persistence/RCommon.Persistence.csproj index 8dfa4b78..1744ad5d 100644 --- a/Src/RCommon.Persistence/RCommon.Persistence.csproj +++ b/Src/RCommon.Persistence/RCommon.Persistence.csproj @@ -2,20 +2,6 @@ net6.0;net7.0;net8.0; - 2.0.0.8 - Jason Webb - RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - - https://github.com/Reactor2Team/RCommon - https://github.com/Reactor2Team/RCommon - rcommon-icon.png - RCommon, persistence abstractions, repository pattern, crud, c#, .NET - true - 2.0.0.0 - 2.0.0.0 - - Apache-2.0 @@ -23,13 +9,6 @@ - - - True - - - - diff --git a/Src/RCommon.Security/RCommon.Security.csproj b/Src/RCommon.Security/RCommon.Security.csproj index 9c1c7607..f77be10d 100644 --- a/Src/RCommon.Security/RCommon.Security.csproj +++ b/Src/RCommon.Security/RCommon.Security.csproj @@ -2,34 +2,11 @@ net6.0;net7.0;net8.0; - 2.0.0.8 - Jason Webb - RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - - https://github.com/Reactor2Team/RCommon - https://github.com/Reactor2Team/RCommon - rcommon-icon.png - RCommon, security extensions, claims, identity, authorization, c#, .NET - true - 2.0.0.0 - 2.0.0.0 - - Apache-2.0 - - - - - True - - - - - + diff --git a/Src/RCommon.SendGrid/RCommon.SendGrid.csproj b/Src/RCommon.SendGrid/RCommon.SendGrid.csproj index 2f9fef49..53b8315b 100644 --- a/Src/RCommon.SendGrid/RCommon.SendGrid.csproj +++ b/Src/RCommon.SendGrid/RCommon.SendGrid.csproj @@ -4,19 +4,6 @@ net6.0;net7.0;net8.0; enable enable - Jason Webb - RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - - https://github.com/Reactor2Team/RCommon - rcommon-icon.png - https://github.com/Reactor2Team/RCommon - RCommon, emailing, sendgrid - true - GitHub - 2.0.0.8 - - Apache-2.0 @@ -28,11 +15,4 @@ - - - True - - - - diff --git a/Src/RCommon.SendGrid/reactor2-icon-darkbg-small.jpg b/Src/RCommon.SendGrid/reactor2-icon-darkbg-small.jpg deleted file mode 100644 index 81f7fe070e1c275542632cbf3de5abb280b90d2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3175 zcma);c{o&k8^_PA#xfZOMUi!~mTbw=j5T9l8!3fH*6dNJ>>^(4NV4xm*)mx|62{V0 zB6|jrF+_+W@eVyt&vm_jz4tlizJAyD{Oy2*BV)aQ-um(Mk@8&`D0H zpjlsX^-H+|w7efm7N=qF6P7==%+250)WC=iG2NwAPcel@2c z&eY643}yEfj7WCT46e^ z;1S_h7dmLJAaE{xj9Z7Kb1CMM zS3cwn51WVem|67;=}3|tn+=5*+4?sn06-WGKrmVaf`Pxqe=2Uu;W1KAB(`~f%8M}S zeyvMdKzt4N)8eV};+3Q0nffW;{f_BAIF)7P&W-AdC%xJ(y2E|{ zv(pqEFh)y1jdL(eB`&?j_89--$1%4h@@Kir%{ItT>O+XxTPgrL3Ji4cCe8Kwz3Q!G zKc3yueWm%leHb7xFwB;k|xMn3nCRvB$kM%=uN zlv}1pnN0aZs{u(mw?9ks!ou(5kp1KdMlMo4r;H3;-$>LDW3ya_oG5x^vFcS~z3Ayh zuR|Y(EOr_$44An9TFzTNBW|P%SIJu%@y@q4l&8VMTy@%}7Llm!LP^-vrkB)vmKr8GM$%nN zEpHcS)(55O^}wY?DUFVBU8XRZsypLfW?rKq?8=xsV`jf*JJBCnA0x@4Xz;B z-PdzW%4;1otw?bq+`7_3hBQ4YWs^FTZ*n}^$SOSC^O>ZR07##@t7ukg z$|~NE7W6`F2Wr0hd{YfB_YBc(qf51AS)%2N+xm{sLwXOt2)BgQZ-y*7jUQcTpw^q{m{C2 zZ$49)x9ai?diZu4H9Vu;qZvY7FR*Xcz2wK##V`Kq;kslm{j;@#=!TPm2yeW-*^Tmk zaI^g)kKoKg&>5edDoTlc)R4+iFPD ziHFq^CCXwozVg~A83wK>uEG-`%bBx^X5wccQs>kzjV8E!n8cPX1QQu2&SCuEdI8rL zwrDu7I(^6+uE{wety<42K-NbHM#>R&y5~15e{YJt9_<3H?lI!}{tKSTBQrQ|W0kJ!Yt8g}2qG z6U-Zl4d~4mzjxMt^L6c0yIyQw6#A~O&5oHM6h@y43@AhgcXimr-0ZtYMU+QLq_1_+ z%+~5C_-v-@YX0xk4}Qy~CK+=2y69>2YkxeswF`9SKgv$f_&#qMH$h(C38u+UR+r=q zTV~fmhJNCt;Snm?qA=!G@>oLJ(){OndE-cCkglp%UE%{Od|6%Bbp@Bi4YszM`|uDi zb`LvFK0zlZ{o{y%SfF%bU!=AlGW@OvlG zp5e1v7~@#+6g(ycFLtsIV{TwC91@w{Ew+T0=5%&UvBn(T5v{>{H0_7%2V(!MM%1n#0NVZ8CYAuW~yPY<8Cz5fgU7I>qKR%rK82{u?6opd#v*1f{htDlk5lR}%^uGPu9DZ`2lTOlw)m_C_EakBGmYA}et=_%xM##7IP@3=ZXl`@cd+O+eok4LYq8AFpjCxL|8BM-L^|nMj45wXxtiLSO7jyKT}apcV2$ z3Vp{TE-|JhO6#(t7)LxWRAe)^XbDHG2qhQC zJ8$%h`O+vFGEkQQHd5mOY0IcmMMoDM*kG>nbcb=)RX56c0r9-XcNv~#mhD%K0?J7S zTpIb91VVgQbbZ+RMch_};4K2`%%hZQ+O7RHh+zCIg0QGM;%l#8m=SM(JIwzIr&pE!USsjCP<^JL2yL{22LrvF6AJ4R;7`>SyK8MEVmpx3 z8LIjA*Ddz@rL5Z__6J4}J;Fq16Kmey net6.0;net7.0;net8.0; - 2.0.0.8 - Jason Webb - RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - - https://github.com/Reactor2Team/RCommon - https://github.com/Reactor2Team/RCommon - rcommon-icon.png - RCommon, web extensions, c#, .NET - true - 2.0.0.0 - 2.0.0.0 - - Apache-2.0 - - - - - True - - - - - + diff --git a/Src/RCommon.Wolverine/RCommon.Wolverine.csproj b/Src/RCommon.Wolverine/RCommon.Wolverine.csproj index e01887aa..cb171cec 100644 --- a/Src/RCommon.Wolverine/RCommon.Wolverine.csproj +++ b/Src/RCommon.Wolverine/RCommon.Wolverine.csproj @@ -2,31 +2,10 @@ net6.0;net7.0;net8.0; - 2.0.0.8 - Jason Webb - RCommon - A cohesive set of infrastructure libraries for .NET 6, .NET 7, and .NET 8 that utilizes abstractions for persistence, unit of work/transactions, distributed events, distributed transactions, and more. - - https://github.com/Reactor2Team/RCommon - https://github.com/Reactor2Team/RCommon - rcommon-icon.png - RCommon, Wolverine wrapper, messaging, message bus, event bus, c#, .NET - true - 2.0.0.0 - 2.0.0.0 - - Apache-2.0 enable enable - - - - True - - - diff --git a/Src/RCommon.sln b/Src/RCommon.sln index 7352d80f..aca6eeff 100644 --- a/Src/RCommon.sln +++ b/Src/RCommon.sln @@ -71,6 +71,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RCommon.Wolverine", "RCommo EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Event Handling", "Event Handling", "{6D73446A-6E32-4324-B524-E054334B394B}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Build", "..\Build\Build.csproj", "{A83FB80E-2B41-403E-9529-FF0FA8E74045}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Build", "_Build", "{206A03B9-635F-4811-8519-8B02170B8CB3}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -177,6 +181,8 @@ Global {397769BB-08F3-44DE-9BE6-90A73E0ABB76}.Debug|Any CPU.Build.0 = Debug|Any CPU {397769BB-08F3-44DE-9BE6-90A73E0ABB76}.Release|Any CPU.ActiveCfg = Release|Any CPU {397769BB-08F3-44DE-9BE6-90A73E0ABB76}.Release|Any CPU.Build.0 = Release|Any CPU + {A83FB80E-2B41-403E-9529-FF0FA8E74045}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A83FB80E-2B41-403E-9529-FF0FA8E74045}.Release|Any CPU.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -204,6 +210,7 @@ Global {CEDE1A60-3F6C-4F16-AC75-4477A646AD0D} = {EF78B8EE-80FF-45DE-9B82-352953B361A8} {FC484848-D719-4AAD-91B0-EDDC434F946E} = {EF78B8EE-80FF-45DE-9B82-352953B361A8} {397769BB-08F3-44DE-9BE6-90A73E0ABB76} = {6D73446A-6E32-4324-B524-E054334B394B} + {A83FB80E-2B41-403E-9529-FF0FA8E74045} = {206A03B9-635F-4811-8519-8B02170B8CB3} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {0B0CD26D-8067-4667-863E-6B0EE7EDAA42} diff --git a/build.cmd b/build.cmd new file mode 100755 index 00000000..b08cc590 --- /dev/null +++ b/build.cmd @@ -0,0 +1,7 @@ +:; set -eo pipefail +:; SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd) +:; ${SCRIPT_DIR}/build.sh "$@" +:; exit $? + +@ECHO OFF +powershell -ExecutionPolicy ByPass -NoProfile -File "%~dp0build.ps1" %* diff --git a/build.ps1 b/build.ps1 new file mode 100644 index 00000000..c1d1bb70 --- /dev/null +++ b/build.ps1 @@ -0,0 +1,74 @@ +[CmdletBinding()] +Param( + [Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)] + [string[]]$BuildArguments +) + +Write-Output "PowerShell $($PSVersionTable.PSEdition) version $($PSVersionTable.PSVersion)" + +Set-StrictMode -Version 2.0; $ErrorActionPreference = "Stop"; $ConfirmPreference = "None"; trap { Write-Error $_ -ErrorAction Continue; exit 1 } +$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent + +########################################################################### +# CONFIGURATION +########################################################################### + +$BuildProjectFile = "$PSScriptRoot\Build\Build.csproj" +$TempDirectory = "$PSScriptRoot\\.nuke\temp" + +$DotNetGlobalFile = "$PSScriptRoot\\global.json" +$DotNetInstallUrl = "https://dot.net/v1/dotnet-install.ps1" +$DotNetChannel = "STS" + +$env:DOTNET_CLI_TELEMETRY_OPTOUT = 1 +$env:DOTNET_NOLOGO = 1 + +########################################################################### +# EXECUTION +########################################################################### + +function ExecSafe([scriptblock] $cmd) { + & $cmd + if ($LASTEXITCODE) { exit $LASTEXITCODE } +} + +# If dotnet CLI is installed globally and it matches requested version, use for execution +if ($null -ne (Get-Command "dotnet" -ErrorAction SilentlyContinue) -and ` + $(dotnet --version) -and $LASTEXITCODE -eq 0) { + $env:DOTNET_EXE = (Get-Command "dotnet").Path +} +else { + # Download install script + $DotNetInstallFile = "$TempDirectory\dotnet-install.ps1" + New-Item -ItemType Directory -Path $TempDirectory -Force | Out-Null + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + (New-Object System.Net.WebClient).DownloadFile($DotNetInstallUrl, $DotNetInstallFile) + + # If global.json exists, load expected version + if (Test-Path $DotNetGlobalFile) { + $DotNetGlobal = $(Get-Content $DotNetGlobalFile | Out-String | ConvertFrom-Json) + if ($DotNetGlobal.PSObject.Properties["sdk"] -and $DotNetGlobal.sdk.PSObject.Properties["version"]) { + $DotNetVersion = $DotNetGlobal.sdk.version + } + } + + # Install by channel or version + $DotNetDirectory = "$TempDirectory\dotnet-win" + if (!(Test-Path variable:DotNetVersion)) { + ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Channel $DotNetChannel -NoPath } + } else { + ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Version $DotNetVersion -NoPath } + } + $env:DOTNET_EXE = "$DotNetDirectory\dotnet.exe" + $env:PATH = "$DotNetDirectory;$env:PATH" +} + +Write-Output "Microsoft (R) .NET SDK version $(& $env:DOTNET_EXE --version)" + +if (Test-Path env:NUKE_ENTERPRISE_TOKEN) { + & $env:DOTNET_EXE nuget remove source "nuke-enterprise" > $null + & $env:DOTNET_EXE nuget add source "https://f.feedz.io/nuke/enterprise/nuget" --name "nuke-enterprise" --username "PAT" --password $env:NUKE_ENTERPRISE_TOKEN > $null +} + +ExecSafe { & $env:DOTNET_EXE build $BuildProjectFile /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet } +ExecSafe { & $env:DOTNET_EXE run --project $BuildProjectFile --no-build -- $BuildArguments } diff --git a/build.sh b/build.sh new file mode 100755 index 00000000..259142b1 --- /dev/null +++ b/build.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +bash --version 2>&1 | head -n 1 + +set -eo pipefail +SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd) + +########################################################################### +# CONFIGURATION +########################################################################### + +BUILD_PROJECT_FILE="$SCRIPT_DIR/Build/Build.csproj" +TEMP_DIRECTORY="$SCRIPT_DIR//.nuke/temp" + +DOTNET_GLOBAL_FILE="$SCRIPT_DIR//global.json" +DOTNET_INSTALL_URL="https://dot.net/v1/dotnet-install.sh" +DOTNET_CHANNEL="STS" + +export DOTNET_CLI_TELEMETRY_OPTOUT=1 +export DOTNET_NOLOGO=1 + +########################################################################### +# EXECUTION +########################################################################### + +function FirstJsonValue { + perl -nle 'print $1 if m{"'"$1"'": "([^"]+)",?}' <<< "${@:2}" +} + +# If dotnet CLI is installed globally and it matches requested version, use for execution +if [ -x "$(command -v dotnet)" ] && dotnet --version &>/dev/null; then + export DOTNET_EXE="$(command -v dotnet)" +else + # Download install script + DOTNET_INSTALL_FILE="$TEMP_DIRECTORY/dotnet-install.sh" + mkdir -p "$TEMP_DIRECTORY" + curl -Lsfo "$DOTNET_INSTALL_FILE" "$DOTNET_INSTALL_URL" + chmod +x "$DOTNET_INSTALL_FILE" + + # If global.json exists, load expected version + if [[ -f "$DOTNET_GLOBAL_FILE" ]]; then + DOTNET_VERSION=$(FirstJsonValue "version" "$(cat "$DOTNET_GLOBAL_FILE")") + if [[ "$DOTNET_VERSION" == "" ]]; then + unset DOTNET_VERSION + fi + fi + + # Install by channel or version + DOTNET_DIRECTORY="$TEMP_DIRECTORY/dotnet-unix" + if [[ -z ${DOTNET_VERSION+x} ]]; then + "$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --channel "$DOTNET_CHANNEL" --no-path + else + "$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --version "$DOTNET_VERSION" --no-path + fi + export DOTNET_EXE="$DOTNET_DIRECTORY/dotnet" + export PATH="$DOTNET_DIRECTORY:$PATH" +fi + +echo "Microsoft (R) .NET SDK version $("$DOTNET_EXE" --version)" + +if [[ ! -z ${NUKE_ENTERPRISE_TOKEN+x} && "$NUKE_ENTERPRISE_TOKEN" != "" ]]; then + "$DOTNET_EXE" nuget remove source "nuke-enterprise" &>/dev/null || true + "$DOTNET_EXE" nuget add source "https://f.feedz.io/nuke/enterprise/nuget" --name "nuke-enterprise" --username "PAT" --password "$NUKE_ENTERPRISE_TOKEN" --store-password-in-clear-text &>/dev/null || true +fi + +"$DOTNET_EXE" build "$BUILD_PROJECT_FILE" /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet +"$DOTNET_EXE" run --project "$BUILD_PROJECT_FILE" --no-build -- "$@"