initial commit

This commit is contained in:
2026-01-15 23:47:04 +01:00
Unverified
parent 089c18ec53
commit c1a50c4f65
12 changed files with 220 additions and 0 deletions

9
.github/config/gitversion.yml vendored Normal file
View File

@@ -0,0 +1,9 @@
next-version: 1.0.0
mode: ContinuousDeployment
assembly-versioning-scheme: MajorMinorPatch
assembly-file-versioning-scheme: MajorMinorPatch
branches:
main:
regex: ^main$
increment: Patch

22
.github/workflows/pull_request_dev.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
name: Build NuGet package on dev branch pull request
on:
pull_request:
branches:
- "dev"
paths:
- "TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi**"
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6.0.2
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 10.0.x
- name: Build
run: dotnet build

22
.github/workflows/pull_request_main.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
name: Build NuGet package on main branch pull request
on:
pull_request:
branches:
- "main"
paths:
- "TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi**"
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6.0.2
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 10.0.x
- name: Build
run: dotnet build

22
.github/workflows/push_dev.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
name: Build NuGet package on dev branch push
on:
push:
branches:
- "dev"
paths:
- "TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi**"
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6.0.2
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 10.0.x
- name: Build
run: dotnet build

72
.github/workflows/push_main.yml vendored Normal file
View File

@@ -0,0 +1,72 @@
name: Build NuGet package on main branch push
on:
push:
branches:
- "main"
paths:
- "TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi**"
jobs:
build:
name: Build and pack
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6.0.2
with:
fetch-depth: 0
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 10.0.x
- name: Build
run: dotnet build
- name: Setup GitVersion
uses: gittools/actions/gitversion/setup@v4.2.0
with:
versionSpec: 6.4.x
- name: Determine version
uses: gittools/actions/gitversion/execute@v4.2.0
id: gitversion
with:
configFilePath: ./.github/config/gitversion.yml
- name: Create NuGet package
run: dotnet pack -c Release -p:Version=${{steps.gitversion.outputs.SemVer}} -p:PackageVersion=${{steps.gitversion.outputs.SemVer}} --output ${{ github.workspace}}/nuget
- name: Upload artifact
uses: actions/upload-artifact@v6
with:
name: nuget
path: ${{ github.workspace}}/nuget/*.nupkg
outputs:
version: ${{ steps.gitversion.outputs.SemVer }}
publish:
name: Publish
permissions: write-all
runs-on: ubuntu-latest
needs: build
steps:
- name: Download artifact
uses: actions/download-artifact@v6
with:
name: nuget
path: ${{ github.workspace}}/nuget
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 10.0.x
- name: Add source
run: dotnet nuget add source --username TimetableDesigner --password ${{secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/TimetableDesigner/index.json"
- name: Publish
run: dotnet nuget push ${{ github.workspace}}/nuget/*.nupkg --source "github" --api-key ${{ secrets.NUGET_REGISTRY_API_KEY }} --skip-duplicate
- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{needs.build.outputs.version}}
release_name: ${{needs.build.outputs.version}}
draft: false
prerelease: false

2
.gitignore vendored
View File

@@ -416,3 +416,5 @@ FodyWeavers.xsd
*.msix
*.msm
*.msp
.idea/

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Mateusz Skoczek
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,3 @@
<Solution>
<Project Path="TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi.csproj" />
</Solution>

View File

@@ -0,0 +1,14 @@
using Microsoft.Extensions.DependencyInjection;
namespace TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi;
public static class ServiceCollectionExtensions
{
public static IServiceCollection AddEventQueue<T>(this IServiceCollection services, Action<T> configuration) where T : EventQueue, new()
{
T builder = new T();
configuration(builder);
builder.Setup(services);
return services;
}
}

View File

@@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<Version />
<Title>TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi</Title>
<Authors>Mateusz Skoczek</Authors>
<PackageProjectUrl>https://github.com/TimetableDesigner/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi</PackageProjectUrl>
<PackageIcon>icon.png</PackageIcon>
<RepositoryUrl>https://github.com/TimetableDesigner/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi</RepositoryUrl>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.0.2" />
<PackageReference Include="timetabledesigner.backend.events" Version="1.1.1" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,13 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
namespace TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi;
public static class WebApplicationExtensions
{
public static void AddEventHandler<T>(this WebApplication app, Func<T, Task> handler) where T : class
{
IEventQueueSubscriber subscriber = app.Services.GetService<IEventQueueSubscriber>()!;
subscriber.Subscribe(handler);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB