From 9a086309803085070b5951e6192d98ccfcfe70d0 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Mon, 1 Apr 2024 18:27:13 +0200 Subject: [PATCH 01/24] set correct env var reading --- templates/scimodule/Application/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/scimodule/Application/Program.cs b/templates/scimodule/Application/Program.cs index 9a92b51..f16f3ab 100644 --- a/templates/scimodule/Application/Program.cs +++ b/templates/scimodule/Application/Program.cs @@ -12,7 +12,7 @@ public static IHostBuilder CreateHostBuilder(string[] args) return Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, config) => { - if (hostingContext.HostingEnvironment.IsDevelopment()) + if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == Environments.Development) { // execute "dotnet user-secrets init" in the project folder to create the secrets.json file // add specific secrets with "dotnet user-secrets set "Kurmann:Videoschnitt:MikaModule:SampleSetting" "Secret Value"" From cbeb9812505403c41fef4d68948eccb1794a8013 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Mon, 1 Apr 2024 18:27:49 +0200 Subject: [PATCH 02/24] set stable version --- Templates.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Templates.csproj b/Templates.csproj index 72deb30..d44a896 100644 --- a/Templates.csproj +++ b/Templates.csproj @@ -12,8 +12,8 @@ - 1.10.0-beta - Integration von UserSecrets, IOptions-Pattern beim SCI-Modul angewandt und ausführlich dokumentiert. + 1.10.0 + Veröffentlichung als stabile Version 1.10.0. README.md From b2834f83b8af0f84fe33f24e10bb73872b11c07b Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 07:21:09 +0200 Subject: [PATCH 03/24] release notes and version --- Templates.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Templates.csproj b/Templates.csproj index d44a896..ba386ff 100644 --- a/Templates.csproj +++ b/Templates.csproj @@ -12,8 +12,8 @@ - 1.10.0 - Veröffentlichung als stabile Version 1.10.0. + 1.11.0-beta + Umbenennung der Vorlagen mit Fokus auf "Kurmann.Videoschnitt". README.md From 1424200ad71cf46f3e4dc6c77b18553097ff2aa2 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 07:22:17 +0200 Subject: [PATCH 04/24] move to root dir --- templates/entitylib/Tests/{Entities => }/SampleEntityTest.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) rename templates/entitylib/Tests/{Entities => }/SampleEntityTest.cs (78%) diff --git a/templates/entitylib/Tests/Entities/SampleEntityTest.cs b/templates/entitylib/Tests/SampleEntityTest.cs similarity index 78% rename from templates/entitylib/Tests/Entities/SampleEntityTest.cs rename to templates/entitylib/Tests/SampleEntityTest.cs index 5445f6a..7e276cb 100644 --- a/templates/entitylib/Tests/Entities/SampleEntityTest.cs +++ b/templates/entitylib/Tests/SampleEntityTest.cs @@ -1,6 +1,4 @@ -using Kurmann.Videoschnitt.EntityLib; - -namespace Kurmann.Videoschnitt.EntityLib.Tests.Entities; +namespace Kurmann.Videoschnitt.EntityLib.Tests; [TestClass] public class SampleEntityTest From 4f7800fb5d344d1b1ea1cc9baf0149acf6d1f52a Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 07:27:03 +0200 Subject: [PATCH 05/24] unified template classifications --- .../entitylib-github-workflow/.template.config/template.json | 5 +++-- templates/entitylib/.template.config/template.json | 3 ++- .../scimodule-github-workflow/.template.config/template.json | 5 +++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/templates/entitylib-github-workflow/.template.config/template.json b/templates/entitylib-github-workflow/.template.config/template.json index d641cd0..1fd731a 100644 --- a/templates/entitylib-github-workflow/.template.config/template.json +++ b/templates/entitylib-github-workflow/.template.config/template.json @@ -2,8 +2,9 @@ "$schema": "http://json.schemastore.org/template", "author": "Patrick Kurmann", "classifications": [ - "Common", - "GitHubActions" + "Kurmann", + "Videoschnitt", + "GitHub" ], "identity": "Kurmann.Videoschnitt.EntityLib.GitHubWorkfow", "name": "Entity Library GitHub Workflow", diff --git a/templates/entitylib/.template.config/template.json b/templates/entitylib/.template.config/template.json index 2bb7366..fd76675 100644 --- a/templates/entitylib/.template.config/template.json +++ b/templates/entitylib/.template.config/template.json @@ -2,7 +2,8 @@ "$schema": "http://json.schemastore.org/template", "author": "Patrick Kurmann", "classifications": [ - "Common", + "Kurmann", + "Videoschnitt", "ClassLibrary" ], "identity": "Kurmann.Videoschnitt.EntityLib", diff --git a/templates/scimodule-github-workflow/.template.config/template.json b/templates/scimodule-github-workflow/.template.config/template.json index 328f326..9cc9d65 100644 --- a/templates/scimodule-github-workflow/.template.config/template.json +++ b/templates/scimodule-github-workflow/.template.config/template.json @@ -2,8 +2,9 @@ "$schema": "http://json.schemastore.org/template", "author": "Patrick Kurmann", "classifications": [ - "Common", - "GitHubActions" + "Kurmann", + "Videoschnitt", + "GitHub" ], "identity": "Kurmann.Videoschnitt.SciModule.GitHubWorkfow", "name": "SCI Module GitHub Workflow", From c0d45f32d831851688dee17f10cccd939fe2e5d9 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 07:31:09 +0200 Subject: [PATCH 06/24] doc with renamed templates first draft by chatgpt --- README.md | 210 ++++++++++++------------------------------------------ 1 file changed, 45 insertions(+), 165 deletions(-) diff --git a/README.md b/README.md index bef0bf1..6dfe80f 100644 --- a/README.md +++ b/README.md @@ -18,209 +18,89 @@ dotnet new [TemplateShortName] -n Projektname ## Verfügbare Templates -### Service Collection Integrated Module (SCI Module) +### Videoschnitt Modul -Kurzname: **scimodule** +Kurzname: **videoschnitt-module** -Das `ServiceCollectionIntegratedModuleTemplate` ist das erste Template in dieser Sammlung, entworfen für die nahtlose Erstellung von Modulen, die einfach mit der `IServiceCollection` für Dependency Injection integriert werden können. Dieses Template legt Wert auf Modularität, Event-Driven Design und klare Operationsergebnis-Typen, um den Entwicklungsprozess zu vereinfachen und Konsistenz über Module hinweg zu gewährleisten. +Das `VideoschnittModulTemplate` ist speziell für die schnelle Erstellung von Modulen konzipiert, die nahtlos mit der `IServiceCollection` für Dependency Injection integriert werden können, mit einem starken Fokus auf Modularität und Event-Driven Design. -#### Features SCI Module +#### Features Videoschnitt Modul -- **IServiceCollection Integration**: Erleichtert die Registrierung von Diensten mit der IServiceCollection, was die Dependency Injection verbessert. -- **Modulare Architektur**: Hält sich an unsere Prinzipien von hoher Kohäsion und loser Kopplung. -- **Event-Driven Design**: Beinhaltet Event- und Delegate-Muster für die Nachrichtenverarbeitung innerhalb des Moduls. -- **Operationsergebnis-Typen**: Nutzt `Result` für die explizite Handhabung von Erfolgs- und Fehlerfällen. -- **Einfache Integration**: Entwickelt für die mühelose Eingliederung in Host-Anwendungen. -- **Namespace-Unterstützung**: Der Stammnamespace `Kurmann.Videoschnitt` wird korrekt angewandt. -- **Konfigurationsmodell**: Vollständige Unterstützung des .NET `IOptions`-Pattern einschliesslich Beispiel-Integration von .NET User Secrets. +- **IServiceCollection Integration** +- **Modulare Architektur** +- **Event-Driven Design** +- **Operationsergebnis-Typen** +- **Einfache Integration** +- **Namespace-Unterstützung**: `Kurmann.Videoschnitt` +- **Konfigurationsmodell** -#### Anwendung SCI Module +#### Anwendung Videoschnitt Modul ```bash -dotnet new scimodule -n Projektname -o src +dotnet new videoschnitt-module -n Projektname -o src ``` -ergibt ein Modul im "src"-Verzeichnis mit den .NET-Projekten +ergibt ein Modul im "src"-Verzeichnis mit dem Namespace `Kurmann.Videoschnitt.Projektname`. -```text -working-directory/ -└── src/ - └── Kurmann.Videoschnitt.Projektname - └── Kurmann.Videoschnitt.Projektname.Application -``` - -### SCI Module GitHub Workflow - -Kurzname: **scimodule-github-workflow** - -#### Features SCI GitHub Workflow - -Das Template erzeugt eine GitHub Actions Workflow-Konfiguration (`YAML`-Datei), die für das Publizieren eines Service Collection Integrated Modules auf NuGet.org ausgelegt ist. - -#### Anwendung SCI GitHub Workflow - -```bash -dotnet new scimodule-github-workflow -o . -``` - -erzeugt folgende Verzeichnisstruktur im Arbeitsverzeichnis - -```text -working-directory/ -└── .github/ - └── workflows/ - └── dotnet.yml -``` +### Videoschnitt Modul Workflow -Hinweis: Die **Namensgebung des Projektes** mit `-n` Parameter hat keinen Einfluss auf die YAML-Datei und kann somit **verzichtet** werden. +Kurzname: **videoschnitt-module-wf** -### SCI Module Visual Studio Code Debug Configuration +Erzeugt eine GitHub Actions Workflow-Konfiguration, speziell für das Bauen und Publizieren eines Videoschnitt Moduls auf NuGet.org. -Kurzname: **scimodule-vscode-debugconfig** +#### Features Videoschnitt Modul Workflow -#### Features SCI Module VS Code Config +- **Automatisierte CI/CD Pipeline für Videoschnitt Module** -Dieses Modul bietet eine vordefinierte Debug-Konfiguration für die Entwicklung eines Service Collection Integrated Modules in Visual Studio Code. Es umfasst sowohl `launch.json` als auch `tasks.json`, um das Debuggen und Ausführen von Aufgaben innerhalb der VSCode-Umgebung zu erleichtern. - -#### Anwendung SCI Module VS Code Config +#### Anwendung Videoschnitt Modul Workflow ```bash -dotnet new scimodule-vscode-debugconfig -n Projektname -o . +dotnet new videoschnitt-module-wf -o . ``` -erzeugt folgende Verzeichnisstruktur im Arbeitsverzeichnis - -```text -scimodule-vscode-debugconfig/ -└── .vscode/ - └── launch.json - └── tasks.json -``` +erzeugt eine passende GitHub Actions Workflow-Konfiguration im `.github/workflows/` Verzeichnis. -### Entity Library Template +### Videoschnitt Modul Debug Konfiguration -Kurzname: **entitylib** +Kurzname: **videoschnitt-module-debug** -Das `Entity Library Template` wurde entwickelt, um die Erstellung von Class-Libraries für die Domänenlogik in .NET-Projekten zu vereinfachen. Durch die Verwendung der C# Functional Extensions Library als `Result`-Typ, fördert dieses Template einen funktionalen Programmieransatz und verbessert die Handhabung von Operationsergebnissen. +Bietet eine vorkonfigurierte Debug-Umgebung für die Entwicklung eines Videoschnitt Moduls in Visual Studio Code. -#### Features Entity Library +#### Features Videoschnitt Modul Debug -- **C# Functional Extensions**: Verwendet die C# Functional Extensions Library, um `Result`-Typen für die Rückgabe von Operationsergebnissen zu ermöglichen. -- **Fokussiert auf Domänenlogik**: Ideal für die Entwicklung von Bibliotheken, die Geschäftslogik und Domänenmodelle enthalten. -- **Test-Projekt Integration**: Erstellt automatisch ein zugehöriges Test-Projekt, um die Qualität und Funktionalität der Domänenlogik sicherzustellen. -- **.NET Class-Library Basis**: Bietet eine solide Grundlage für die Entwicklung von wiederverwendbaren .NET Class-Libraries. -- **Modularer Aufbau**: Fördert die Entwicklung von sauber strukturierten, modularen und wartbaren Code-Basen. -- **Namespace-Unterstützung**: Passt sich nahtlos an den Stammnamespace `Kurmann.Videoschnitt` an und gewährleistet eine konsistente Namensgebung. +- **Vordefinierte Debug- und Task-Konfigurationen** für VSCode -#### Anwendung Entity Library +#### Anwendung Videoschnitt Modul Debug ```bash -dotnet new entitylib -n EntityLibName -o src -``` - -ergibt eine Class-Library im "src"-Verzeichnis mit den .NET-Projekten - -```text -working-directory/ -└── src/ - └── Kurmann.Videoschnitt.EntityLibName - └── Kurmann.Videoschnitt.EntityLibName.Tests +dotnet new videoschnitt-module-debug -n Projektname -o . ``` -Dieses Setup ist optimal für Entwickler, die sich auf die Implementierung von Domänenlogik mit einem klaren Fokus auf funktionale Programmierprinzipien und testgetriebene Entwicklung konzentrieren möchten. +erzeugt eine Debug-Konfiguration im `.vscode/` Verzeichnis des Projekts. -### Entity Library GitHub Workflow +### Videoschnitt Entity Library -Kurzname: **entitylib-github-workflow** +Kurzname: **videoschnitt-entitylib** -Das `Entity Library GitHub Workflow` Template erweitert die Sammlung von .NET Templates um eine automatisierte CI/CD Pipeline speziell für die `Entity Library`. Es generiert eine GitHub Actions Workflow-Konfiguration, die spezifisch für das Bauen, Testen und optional das Veröffentlichen einer .NET Class-Library, welche die Domänenlogik beinhaltet, auf NuGet.org ausgelegt ist. +Entwickelt, um die Erstellung von Class-Libraries zu erleichtern, die Geschäftslogik und Domänenmodelle enthalten, mit einem Schwerpunkt auf funktionaler Programmierung und Testautomatisierung. -#### Features Entity Library GitHub Workflow +#### Features Videoschnitt Entity Library -- **Automatisierte CI/CD Pipeline**: Konfiguriert GitHub Actions für das automatische Bauen und Testen der Entity Library bei jedem Push oder Pull Request. -- **NuGet-Veröffentlichung**: Ermöglicht die automatische Veröffentlichung der gebauten Library auf NuGet.org, abhängig von spezifischen Triggern oder Tags. -- **Angepasste Workflow-Events**: Unterstützt verschiedene GitHub Event-Typen wie `push`, `pull_request` oder manuell ausgelöste Workflows. -- **Testautomatisierung**: Führt automatisch alle definierten Unit- und Integrationstests als Teil des CI-Prozesses aus. -- **Flexibilität und Anpassbarkeit**: Ermöglicht einfache Anpassungen der Workflow-Schritte, um spezifische Anforderungen oder Projektkonfigurationen zu berücksichtigen. +- **C# Functional Extensions** +- **Fokussiert auf Domänenlogik** +- **Test-Projekt Integration** +- **.NET Class-Library Basis** +- **Modularer Aufbau** +- **Namespace-Unterstützung**: `Kurmann.Videoschnitt` -#### Anwendung Entity Library GitHub Workflow +#### Anwendung Videoschnitt Entity Library ```bash -dotnet new entitylib-github-workflow -o . +dotnet new videoschnitt-entitylib -n EntityLibName -o src ``` -erzeugt folgende Verzeichnisstruktur im Arbeitsverzeichnis - -```text -working-directory/ -└── .github/ - └── workflows/ - └── entitylib-ci-cd.yml -``` - -Die Konfigurationsdatei `entitylib-ci-cd.yml` ist so voreingestellt, dass sie die Entity Library bei jedem `push` auf den `main`-Zweig oder bei jedem `pull_request` gegen den `main`-Zweig baut und testet. Optional kann die Konfiguration so erweitert werden, dass erfolgreiche Builds automatisch auf NuGet.org veröffentlicht werden, sobald ein neuer Release-Tag gepusht wird. - -Dieses Template ist eine essenzielle Erweiterung für Teams, die die Entity Library in ihre Entwicklungspipeline integrieren möchten, um eine kontinuierliche Qualitätssicherung und -verbesserung der Domänenlogik zu gewährleisten. - -## Empfehlungen - -### NuGet API Key - -Um die automatische Veröffentlichung Ihrer NuGet-Pakete über die GitHub Actions Workflow zu ermöglichen, ist es notwendig, den `NUGET_API_KEY` in den GitHub Secrets jedes Repositories zu hinterlegen. Dieser API-Key ermöglicht es GitHub Actions, die Pakete in Ihrem Namen auf NuGet.org zu veröffentlichen. Sie können den API-Key von Ihrem NuGet.org-Konto erhalten und sollten diesen sicher im Abschnitt Settings > Secrets > Actions Ihres GitHub-Repositories speichern. Durch das Setzen dieses Secrets stellen Sie sicher, dass Ihre CI/CD Pipeline die Pakete erfolgreich auf NuGet.org pushen kann, ohne Ihren API-Key offenlegen zu müssen. - -### Komplette Erstellung eines SCI Modul Repository - -Zum Erstellen eines kompletten Service Collection Integrated Moduls mitsamt Repository-Struktur wird die kombination der Templates `scimodule`, `scimodule-github-workflow` und `scimodule-vscode-debugconfig` empfohlen. - -Bitte vorher zum **Wurzelverzeichnis** des neu erstellte GitHub-**Repositorys** wechseln. - -Erstellt ein Service Collection Integrated Modul um "src"-Verzeichnis und erzeugt eine passende GitHub Actions Workflow-Konfiguration und eine passende vordefinierte Debug-Konfiguration für Visual Studio Code. - -```bash -export PROJEKTNAME="MeinProjekt" -dotnet new scimodule -n $PROJEKTNAME -o src -dotnet new scimodule-github-workflow -o . -dotnet new scimodule-vscode-debugconfig -n $PROJEKTNAME -o . - -``` - -### Konfiguration von Modulen - -Wenn Sie ein Modul über unser .NET-Template erstellen, wird die Konfiguration des Moduls durch eine dedizierte Sektion in der Konfigurationsdatei ermöglicht. Diese Sektion ist nach dem Muster `Kurmann.Videoschnitt.YourModuleName` benannt, wobei `YourModuleName` der Name Ihres spezifischen Moduls ist. - -#### Anpassung der Moduleinstellungen - -Innerhalb jeder Modul-Konfigurationssektion können Sie die `ModuleSettings`-Klasse anpassen, um verschiedene Konfigurationswerte zu definieren. Diese Werte können Sie dann einfach in der `appsettings.json` oder durch Umgebungsvariablen konfigurieren. - -#### Beispiel - -Für ein Modul namens `VideoEditor` würden Sie eine Sektion `Kurmann.Videoschnitt.VideoEditor` in Ihrer `appsettings.json` hinzufügen: - -```json -{ - "Kurmann.Videoschnitt.VideoEditor": { - "OutputPath": "/path/to/output" - } -} -``` - -Anschließend passen Sie die `ModuleSettings`-Klasse in Ihrem Modul an, um den `OutputPath` als Konfigurationseinstellung zu definieren: - -```csharp -public class ModuleSettings -{ - public string OutputPath { get; set; } = "Standardwert"; -} -``` - -#### Nutzung in Ihrer Anwendung - -Durch die Anwendung des `IOptions`-Patterns können Sie diese Konfigurationswerte leicht in Ihrem Modul abrufen und verwenden. Dies bietet Ihnen eine flexible und starke Typisierung für die Verwaltung von Konfigurationseinstellungen. - -#### Vorteile +ergibt eine Class-Library im "src"-Verzeichnis unter `Kurmann.Videoschnitt.EntityLibName`. -- **Flexibilität:** Jedes Modul kann unabhängig konfiguriert werden, was die Anpassung und Erweiterung erleichtert. -- **Einfachheit:** Die Verwendung der `ModuleSettings`-Klasse zusammen mit dem `IOptions`-Pattern macht den Zugriff auf Konfigurationswerte klar und einfach. -- **Anpassbarkeit:** Sie können Konfigurationswerte leicht ändern, ohne den Code des Moduls anpassen zu müssen, sei es durch Bearbeitung der `appsettings.json` oder Setzen von Umgebungsvariablen. +### Empfehlungen -Diese Struktur ermöglicht es Ihnen, Ihre Anwendung modular und flexibel zu gestalten, mit klaren und einfachen Konfigurationsmechanismen für jedes Modul. +Für eine effiziente und sichere Veröffentlichung Ihrer Pakete auf NuGet.org, vergessen Sie nicht, den `NUGET_API_KEY` in den GitHub Secrets zu hinterlegen. Darüber hinaus wird die Kombination der Templates `videoschnitt-module`, `videoschnitt-module-wf` und `videoschnitt-module-debug` für eine umfassende Entwicklungsumgebung empfohlen. Die Konfiguration der Module erfolgt über dedizierte Abschnitte in der `appsettings.json`, was die Flexibilität und Anpassungsfähigkeit der Modulentwicklung erheblich erhöht. \ No newline at end of file From 909384a2af19c161c46940c0505e0389d8fa7438 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 07:31:55 +0200 Subject: [PATCH 07/24] recreation of readme, starting with introduction --- README.md | 105 +----------------------------------------------------- 1 file changed, 1 insertion(+), 104 deletions(-) diff --git a/README.md b/README.md index 6dfe80f..4293b2d 100644 --- a/README.md +++ b/README.md @@ -1,106 +1,3 @@ # Videoschnitt Templates -Dieses Repository, "Videoschnitt Templates", ist eine Sammlung von benutzerdefinierten .NET Templates, die darauf ausgelegt sind, die schnelle Entwicklung von Modulen und Anwendungen innerhalb des Videoschnitt Projekts zu erleichtern. Jedes Template hält sich an unsere Architekturprinzipien und bietet eine strukturierte Grundlage für den Bau modularer, wartbarer und skalierbarer Lösungen in .NET Core und ASP.NET Core Anwendungen. - -## Installation - -```bash -dotnet new install Kurmann.Videoschnitt.Templates -``` - -## Anwendung - -Nach der Installation können Sie ein neues Projekt basierend auf einem Template erstellen mit: - -```bash -dotnet new [TemplateShortName] -n Projektname -``` - -## Verfügbare Templates - -### Videoschnitt Modul - -Kurzname: **videoschnitt-module** - -Das `VideoschnittModulTemplate` ist speziell für die schnelle Erstellung von Modulen konzipiert, die nahtlos mit der `IServiceCollection` für Dependency Injection integriert werden können, mit einem starken Fokus auf Modularität und Event-Driven Design. - -#### Features Videoschnitt Modul - -- **IServiceCollection Integration** -- **Modulare Architektur** -- **Event-Driven Design** -- **Operationsergebnis-Typen** -- **Einfache Integration** -- **Namespace-Unterstützung**: `Kurmann.Videoschnitt` -- **Konfigurationsmodell** - -#### Anwendung Videoschnitt Modul - -```bash -dotnet new videoschnitt-module -n Projektname -o src -``` - -ergibt ein Modul im "src"-Verzeichnis mit dem Namespace `Kurmann.Videoschnitt.Projektname`. - -### Videoschnitt Modul Workflow - -Kurzname: **videoschnitt-module-wf** - -Erzeugt eine GitHub Actions Workflow-Konfiguration, speziell für das Bauen und Publizieren eines Videoschnitt Moduls auf NuGet.org. - -#### Features Videoschnitt Modul Workflow - -- **Automatisierte CI/CD Pipeline für Videoschnitt Module** - -#### Anwendung Videoschnitt Modul Workflow - -```bash -dotnet new videoschnitt-module-wf -o . -``` - -erzeugt eine passende GitHub Actions Workflow-Konfiguration im `.github/workflows/` Verzeichnis. - -### Videoschnitt Modul Debug Konfiguration - -Kurzname: **videoschnitt-module-debug** - -Bietet eine vorkonfigurierte Debug-Umgebung für die Entwicklung eines Videoschnitt Moduls in Visual Studio Code. - -#### Features Videoschnitt Modul Debug - -- **Vordefinierte Debug- und Task-Konfigurationen** für VSCode - -#### Anwendung Videoschnitt Modul Debug - -```bash -dotnet new videoschnitt-module-debug -n Projektname -o . -``` - -erzeugt eine Debug-Konfiguration im `.vscode/` Verzeichnis des Projekts. - -### Videoschnitt Entity Library - -Kurzname: **videoschnitt-entitylib** - -Entwickelt, um die Erstellung von Class-Libraries zu erleichtern, die Geschäftslogik und Domänenmodelle enthalten, mit einem Schwerpunkt auf funktionaler Programmierung und Testautomatisierung. - -#### Features Videoschnitt Entity Library - -- **C# Functional Extensions** -- **Fokussiert auf Domänenlogik** -- **Test-Projekt Integration** -- **.NET Class-Library Basis** -- **Modularer Aufbau** -- **Namespace-Unterstützung**: `Kurmann.Videoschnitt` - -#### Anwendung Videoschnitt Entity Library - -```bash -dotnet new videoschnitt-entitylib -n EntityLibName -o src -``` - -ergibt eine Class-Library im "src"-Verzeichnis unter `Kurmann.Videoschnitt.EntityLibName`. - -### Empfehlungen - -Für eine effiziente und sichere Veröffentlichung Ihrer Pakete auf NuGet.org, vergessen Sie nicht, den `NUGET_API_KEY` in den GitHub Secrets zu hinterlegen. Darüber hinaus wird die Kombination der Templates `videoschnitt-module`, `videoschnitt-module-wf` und `videoschnitt-module-debug` für eine umfassende Entwicklungsumgebung empfohlen. Die Konfiguration der Module erfolgt über dedizierte Abschnitte in der `appsettings.json`, was die Flexibilität und Anpassungsfähigkeit der Modulentwicklung erheblich erhöht. \ No newline at end of file +Dieses Repository, "Videoschnitt Templates", ist eine Sammlung von benutzerdefinierten .NET Templates, die speziell darauf ausgelegt sind, die schnelle Entwicklung von Modulen und Anwendungen für das Videoschnitt Projekt zu erleichtern. Diese Templates dienen als strukturierte Grundlage für den Bau modularer, wartbarer und skalierbarer Lösungen, wobei sowohl .NET Core als auch ASP.NET Core Anwendungen unterstützt werden. Jedes Template wurde sorgfältig entworfen, um unseren Architekturprinzipien zu entsprechen und eine effiziente und konsistente Entwicklungserfahrung zu gewährleisten. From 0284d22ff4884e00bbcc6f3c7aa6c1afe2d0aef0 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 07:32:15 +0200 Subject: [PATCH 08/24] installation and application --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index 4293b2d..285f8cb 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,25 @@ # Videoschnitt Templates Dieses Repository, "Videoschnitt Templates", ist eine Sammlung von benutzerdefinierten .NET Templates, die speziell darauf ausgelegt sind, die schnelle Entwicklung von Modulen und Anwendungen für das Videoschnitt Projekt zu erleichtern. Diese Templates dienen als strukturierte Grundlage für den Bau modularer, wartbarer und skalierbarer Lösungen, wobei sowohl .NET Core als auch ASP.NET Core Anwendungen unterstützt werden. Jedes Template wurde sorgfältig entworfen, um unseren Architekturprinzipien zu entsprechen und eine effiziente und konsistente Entwicklungserfahrung zu gewährleisten. + +## Installation + +Um die Videoschnitt Templates zu verwenden, beginnen Sie mit der Installation des gesamten Template-Pakets über die .NET CLI. Dies ermöglicht es Ihnen, neue Projekte mit den bereitgestellten Templates zu initialisieren. Die Installation kann mit dem folgenden Befehl durchgeführt werden: + +```bash +dotnet new install Kurmann.Videoschnitt.Templates +``` + +Diese Aktion fügt alle Videoschnitt Templates Ihrem .NET CLI Tool hinzu, sodass Sie darauf zugreifen und sie für die Erstellung neuer Projekte nutzen können. + +## Anwendung + +Nach der Installation der Templates können Sie ein neues Projekt basierend auf einem der Videoschnitt Templates erstellen. Verwenden Sie dazu den Befehl `dotnet new` mit dem Kurznamen des gewünschten Templates, gefolgt vom `-n` Argument, um den Namen Ihres neuen Projekts anzugeben. Das Grundformat des Befehls sieht wie folgt aus: + +```bash +dotnet new [TemplateShortName] -n Projektname +``` + +Dabei ist `[TemplateShortName]` durch den Kurznamen des Templates zu ersetzen, das Sie verwenden möchten, und `Projektname` durch den gewünschten Namen Ihres Projekts. Dieser Prozess initialisiert ein neues Projektverzeichnis, das auf der Struktur und den Voreinstellungen des ausgewählten Templates basiert. + +Die Anwendung der Videoschnitt Templates ermöglicht es Ihnen, schnell mit der Entwicklung zu beginnen, indem sie eine vordefinierte Projektstruktur und Konfiguration bieten, die speziell auf die Anforderungen und Best Practices des Videoschnitt Projekts abgestimmt sind. From 78c5095ac8e12f5c7b281c568b99e8cefed13104 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 07:36:53 +0200 Subject: [PATCH 09/24] recreated doc of first template including renaming --- README.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/README.md b/README.md index 285f8cb..47aaba5 100644 --- a/README.md +++ b/README.md @@ -23,3 +23,54 @@ dotnet new [TemplateShortName] -n Projektname Dabei ist `[TemplateShortName]` durch den Kurznamen des Templates zu ersetzen, das Sie verwenden möchten, und `Projektname` durch den gewünschten Namen Ihres Projekts. Dieser Prozess initialisiert ein neues Projektverzeichnis, das auf der Struktur und den Voreinstellungen des ausgewählten Templates basiert. Die Anwendung der Videoschnitt Templates ermöglicht es Ihnen, schnell mit der Entwicklung zu beginnen, indem sie eine vordefinierte Projektstruktur und Konfiguration bieten, die speziell auf die Anforderungen und Best Practices des Videoschnitt Projekts abgestimmt sind. + +## Templates + +### Videoschnitt Modul + +Kurzname: **videoschnitt-module** + +Das `VideoschnittModulTemplate` ist ein fundamentales Template dieser Sammlung, entworfen für die Erstellung von Modulen, die sich nahtlos in die .NET Core und ASP.NET Core Anwendungen einfügen. Diese Module können leicht mit der `IServiceCollection` für Dependency Injection integriert werden und legen einen starken Fokus auf Modularität, Event-Driven Design sowie klare Operationsergebnis-Typen. + +#### Features Videoschnitt Modul + +- **IServiceCollection Integration**: Vereinfacht die Registrierung von Diensten und deren Abhängigkeiten, was die Verwendung von Dependency Injection innerhalb des Moduls erleichtert. +- **Modulare Architektur**: Fördert die Entwicklung von klar definierten, unabhängigen Modulen, die sich durch hohe Kohäsion und lose Kopplung auszeichnen. +- **Event-Driven Design**: Unterstützt die Implementierung von Event-basierten Kommunikationsmustern zwischen den Komponenten des Moduls, um eine flexible und erweiterbare Architektur zu fördern. +- **Operationsergebnis-Typen**: Verwendung von `Result` und ähnlichen Mustern für die explizite Handhabung von Erfolgs- und Fehlerfällen in Geschäftslogikoperationen. +- **Einfache Integration**: Entwickelt für die mühelose Eingliederung in bestehende Host-Anwendungen, was die Wiederverwendbarkeit und Skalierbarkeit von Modulen verbessert. +- **Namespace-Unterstützung**: Verwendet den Stammnamespace `Kurmann.Videoschnitt` und gewährleistet eine konsistente und klare Organisationsstruktur des Codes. +- **Konfigurationsmodell**: Vollständige Unterstützung des .NET `IOptions`-Pattern, einschließlich der Integration von .NET User Secrets für eine sichere und flexible Konfiguration. + +#### Anwendung Videoschnitt Modul + +Um ein neues Videoschnitt Modul zu erstellen, verwenden Sie den folgenden Befehl in Ihrem Terminal oder Command Prompt: + +```bash +dotnet new videoschnitt-module -n IhrModulname -o src +``` + +Dieser Befehl generiert eine neue Modulstruktur im Verzeichnis `src` basierend auf dem VideoschnittModulTemplate, wobei `IhrModulname` der Name Ihres Moduls ist. Die resultierende Verzeichnisstruktur sieht beispielhaft wie folgt aus: + +```text +Projektname/ +├── .template.config/ +├── Application/ +│ ├── Commands/ +│ ├── Queries/ +│ ├── Services/ +│ ├── Application.csproj +│ └── Program.cs +├── Module/ +│ ├── Commands/ +│ ├── Queries/ +│ ├── Services/ +│ ├── Module.csproj +│ ├── ModuleSettings.cs +│ └── ServiceCollection.cs +└── Projektname.sln +``` + +Dies spiegelt die modulare Trennung zwischen der Anwendungsebene und dem eigentlichen Modul wider, wobei `Commands`, `Queries` und `Services` jeweils für die Anwendung und das Modul dedizierte Verzeichnisse haben. Das Projekt wird durch eine Solution-Datei (`Projektname.sln`) an der Wurzel organisiert, die es ermöglicht, sowohl das Anwendungs- als auch das Modulprojekt in Entwicklungsumgebungen wie Visual Studio zu laden und zu verwalten. + +Bei der Erstellung des Moduls mit dem `videoschnitt-module` Template wird also eine Struktur aufgebaut, die eine klare Trennung der Verantwortlichkeiten und eine saubere Organisation des Codes fördert. From 460e54589ac7e61e754a680cdb629049bb8a0e11 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 07:39:31 +0200 Subject: [PATCH 10/24] recreted documentation of second template --- README.md | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/README.md b/README.md index 47aaba5..27d2d57 100644 --- a/README.md +++ b/README.md @@ -74,3 +74,65 @@ Projektname/ Dies spiegelt die modulare Trennung zwischen der Anwendungsebene und dem eigentlichen Modul wider, wobei `Commands`, `Queries` und `Services` jeweils für die Anwendung und das Modul dedizierte Verzeichnisse haben. Das Projekt wird durch eine Solution-Datei (`Projektname.sln`) an der Wurzel organisiert, die es ermöglicht, sowohl das Anwendungs- als auch das Modulprojekt in Entwicklungsumgebungen wie Visual Studio zu laden und zu verwalten. Bei der Erstellung des Moduls mit dem `videoschnitt-module` Template wird also eine Struktur aufgebaut, die eine klare Trennung der Verantwortlichkeiten und eine saubere Organisation des Codes fördert. + +### Videoschnitt Modul Workflow + +Kurzname: **videoschnitt-module-wf** + +Das `VideoschnittModulWorkflowTemplate` automatisiert den Build- und Veröffentlichungsprozess eines Videoschnitt Moduls mittels GitHub Actions. Dieses Template erstellt eine Konfigurationsdatei für einen Workflow, der bei jedem Push oder Pull Request gegen den `main` Branch aktiviert wird. + +#### Features Videoschnitt Modul Workflow + +- **Automatisierte CI/CD-Pipeline**: Ausführung von Build- und Pack-Schritten bei jedem Push oder Pull Request. +- **.NET Core Setup**: Einrichtung einer spezifischen .NET-Version. +- **Abhängigkeitsmanagement**: Stellt sicher, dass alle notwendigen Pakete vor dem Build-Vorgang wiederhergestellt werden. +- **NuGet-Paketierung**: Packt das Modul in ein NuGet-Paket, bereit zur Veröffentlichung. +- **NuGet-Veröffentlichung**: Veröffentlicht das Paket und zugehörige Symbolpakete auf NuGet.org unter Verwendung eines API-Keys. + +#### Anwendung Videoschnitt Modul Workflow + +Die Einrichtung der CI/CD-Pipeline erfolgt durch den folgenden Befehl: + +```bash +dotnet new videoschnitt-module-wf -o . +``` + +Nach Ausführung dieses Befehls wird eine Workflow-Konfigurationsdatei im `.github/workflows`-Verzeichnis des Projekts erstellt. Die YAML-Datei könnte beispielsweise `dotnet-ci-cd.yml` heißen und enthält die Workflow-Definitionen, die Ihrem angegebenen Prozess entsprechen. + +Die resultierende Datei sieht dann wie folgt aus: + +```yaml +name: .NET CI/CD + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build_and_pack: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Setup .NET Core + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.0.x' + + - name: Restore dependencies for Module + run: dotnet restore src/Entities/Entities.csproj + + - name: Pack Entities + run: dotnet pack src/Entities/Entities.csproj --output ./nupkgs + + # Veröffentlichen der NuGet-Pakete + - name: Push NuGet and Symbol Packages + run: | + dotnet nuget push ./nupkgs/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate + dotnet nuget push ./nupkgs/*.snupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate +``` + +Diese Workflow-Datei stellt sicher, dass Ihr Modul immer gebaut, verpackt und optional veröffentlicht wird, sobald Änderungen im `main`-Zweig gepusht oder Pull Requests eingereicht werden. Sie garantiert eine konsistente Build-Umgebung und eine verlässliche Bereitstellung der Module. \ No newline at end of file From 6bffaf477ecd869dd7a510afc2135c0937c93652 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 07:42:57 +0200 Subject: [PATCH 11/24] unified classification here as well --- .../.template.config/template.json | 6 +++--- templates/scimodule/.template.config/template.json | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/templates/scimodule-vscode-debugconfig/.template.config/template.json b/templates/scimodule-vscode-debugconfig/.template.config/template.json index 7d1a26c..cf48bc2 100644 --- a/templates/scimodule-vscode-debugconfig/.template.config/template.json +++ b/templates/scimodule-vscode-debugconfig/.template.config/template.json @@ -2,9 +2,9 @@ "$schema": "http://json.schemastore.org/template", "author": "Patrick Kurmann", "classifications": [ - "Common", - "VsCode", - "DebugConfig" + "Kurmann", + "Videoschnitt", + "Debug" ], "identity": "Kurmann.Videoschnitt.SciModule.VsCode.DebugConfig", "name": "SCI Module VS Code Debug Config", diff --git a/templates/scimodule/.template.config/template.json b/templates/scimodule/.template.config/template.json index c18cdce..990603b 100644 --- a/templates/scimodule/.template.config/template.json +++ b/templates/scimodule/.template.config/template.json @@ -2,7 +2,8 @@ "$schema": "http://json.schemastore.org/template", "author": "Patrick Kurmann", "classifications": [ - "Common", + "Kurmann", + "Videoschnitt", "ServiceCollection" ], "identity": "Kurmann.Videoschnitt.ServiceCollectionIntegratedModule", From 94a834e0091de8f464a5b6183cf1ab8daf267cec Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 07:44:58 +0200 Subject: [PATCH 12/24] recreated module debug config doc --- README.md | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 95 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 27d2d57..d862e52 100644 --- a/README.md +++ b/README.md @@ -135,4 +135,98 @@ jobs: dotnet nuget push ./nupkgs/*.snupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate ``` -Diese Workflow-Datei stellt sicher, dass Ihr Modul immer gebaut, verpackt und optional veröffentlicht wird, sobald Änderungen im `main`-Zweig gepusht oder Pull Requests eingereicht werden. Sie garantiert eine konsistente Build-Umgebung und eine verlässliche Bereitstellung der Module. \ No newline at end of file +Diese Workflow-Datei stellt sicher, dass Ihr Modul immer gebaut, verpackt und optional veröffentlicht wird, sobald Änderungen im `main`-Zweig gepusht oder Pull Requests eingereicht werden. Sie garantiert eine konsistente Build-Umgebung und eine verlässliche Bereitstellung der Module. + +### Videoschnitt Modul Debug Konfiguration + +Kurzname: **videoschnitt-module-debug** + +Das `VideoschnittModulDebugTemplate` ist eine essentielle Hilfe für Entwickler, um schnell eine funktionierende Debug-Umgebung in Visual Studio Code für das Videoschnitt Modul einzurichten. Es generiert die `launch.json` und `tasks.json`, die für das Ausführen und Debuggen des Moduls in Visual Studio Code nötig sind. + +#### Features Videoschnitt Modul Debug + +- **Angepasste .NET Core Launch Konfiguration**: Ermöglicht das Debuggen der Anwendung mit detaillierten Einstellungen. +- **Vorkonfigurierte Build- und Watch-Tasks**: Unterstützt die Entwicklung mit Aufgaben zum Bauen und Beobachten des Projekts in Echtzeit. +- **Einfache Integration in den Workflow**: Durch die Voreinstellungen kann sofort mit dem Debuggen begonnen werden, ohne zusätzliche Konfigurationen vornehmen zu müssen. + +#### Anwendung Videoschnitt Modul Debug + +Nach Erstellung des Videoschnitt Moduls können Sie die Debug-Konfiguration hinzufügen: + +```bash +dotnet new videoschnitt-module-debug -n IhrModulname -o . +``` + +Dieser Befehl platziert die entsprechenden Dateien in einem `.vscode`-Verzeichnis an der Wurzel des Projekts. Die resultierenden Dateien `launch.json` und `tasks.json` werden auf Ihr spezifisches Modul zugeschnitten sein. + +Die `launch.json` Datei könnte so aussehen: + +```json +{ + "version": "0.2.0", + "configurations": [ + { + "name": ".NET Core Launch (console)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + "program": "${workspaceFolder}/src/Application/bin/Debug/net8.0/Kurmann.Videoschnitt.SciModule.VsCode.DebugConfig.Application.dll", + "args": [], + "cwd": "${workspaceFolder}", + "stopAtEntry": false, + "console": "internalConsole", + "env": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + ] +} +``` + +Und die `tasks.json` Datei stellt die notwendigen Aufgaben für den Build und das Watchen des Projekts bereit: + +```json +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/src/Application/Application.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary;ForceNoAlign" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/src/Application/Application.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary;ForceNoAlign" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "--project", + "${workspaceFolder}/src/Application/Application.csproj" + ], + "problemMatcher": "$msCompile" + } + ] +} +``` + +Mit dieser Konfiguration können Entwickler direkt in Visual Studio Code das Projekt bauen, veröffentlichen und in Echtzeit Veränderungen beobachten, was den Entwicklungsprozess erheblich vereinfacht und beschleunigt. From 208918cfd75c76d82a6e01c08ab00b70a2e22239 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 07:48:07 +0200 Subject: [PATCH 13/24] recreated doc for entity lib template --- README.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/README.md b/README.md index d862e52..ec92ee9 100644 --- a/README.md +++ b/README.md @@ -230,3 +230,51 @@ Und die `tasks.json` Datei stellt die notwendigen Aufgaben für den Build und da ``` Mit dieser Konfiguration können Entwickler direkt in Visual Studio Code das Projekt bauen, veröffentlichen und in Echtzeit Veränderungen beobachten, was den Entwicklungsprozess erheblich vereinfacht und beschleunigt. + +### Videoschnitt Entity Library + +Kurzname: **videoschnitt-entitylib** + +Das `VideoschnittEntityLibraryTemplate` ist speziell dafür entworfen worden, um die schnelle Erstellung von Class-Libraries zu unterstützen, die die Domänenlogik innerhalb des Videoschnitt Projekts repräsentieren. Es fördert einen funktionalen Ansatz durch die Verwendung der C# Functional Extensions Library und verbessert dadurch die Handhabung von Operationsergebnissen. + +#### Features Videoschnitt Entity Library + +- **C# Functional Extensions Nutzung**: Ermöglicht die Verwendung von erweiterten funktionalen Konzepten und Mustern, wie z.B. `Result`. +- **Fokussierung auf Domänenlogik**: Ideal für die Entwicklung von Bibliotheken, die Geschäftslogik und Domänenmodelle enthalten. +- **Testprojekt Integration**: Generiert automatisch ein Testprojekt zur Sicherstellung der Qualität und Funktionalität der Domänenlogik. +- **.NET Class-Library Basis**: Bietet eine solide Grundlage und ein konsistentes Layout für .NET Class-Libraries. +- **Modularer Aufbau**: Unterstützt die Schaffung einer sauber strukturierten, modularen Codebasis. +- **Namespace-Konformität**: Gewährleistet eine konsistente Verwendung des `Kurmann.Videoschnitt` Stammbereichs für die Namensgebung. + +#### Anwendung Videoschnitt Entity Library + +Um die Entity Library zu erstellen, nutzen Sie den folgenden Befehl: + +```bash +dotnet new videoschnitt-entitylib -n EntityLibName -o src +``` + +Daraufhin wird eine neue Class-Library im `src`-Verzeichnis erzeugt. Die resultierende Verzeichnisstruktur sowie die .csproj- und Code-Dateien sind speziell für die Anforderungen von Entitäten innerhalb des Videoschnitt Projekts ausgerichtet. + +Auf Basis der bereitgestellten Struktur für das Entity Library Template und unter Anwendung des neuen Namensschemas wird die Verzeichnisstruktur wie folgt aussehen: + +```text +EntityLibName/ +├── .template.config/ +├── Entities/ +│ ├── Entities.csproj +│ └── SampleEntity.cs +├── Tests/ +│ ├── GlobalUsings.cs +│ ├── SampleEntityTest.cs +│ └── Tests.csproj +└── EntityLibName.sln +``` + +Innerhalb des `Entities/`-Ordners finden Sie das Projekt für die Bibliothek, das die Entitätsklassen enthält, in diesem Fall repräsentiert durch `SampleEntity.cs`. Die `Tests/`-Ordnerstruktur ist für das zugehörige Testprojekt vorgesehen, wobei `SampleEntityTest.cs` als ein Beispiel für einen Unit-Test dient. + +`GlobalUsings.cs` in der Teststruktur könnte dazu verwendet werden, global verfügbare `using`-Direktiven für das gesamte Testprojekt zu definieren, um die Notwendigkeit wiederholter Direktiven in jedem Test zu vermeiden. + +`EntityLibName.sln` ist die zugehörige Solution-Datei, welche beide Projekte (die Entitätsbibliothek und das Testprojekt) für eine einfachere Verwaltung in Entwicklungs-Tools wie Visual Studio zusammenfasst. + +Diese Konfiguration gewährleistet eine klare Trennung zwischen der Implementierung der Geschäftslogik und den Tests, was für eine saubere Codebasis und leichtere Wartbarkeit sorgt. \ No newline at end of file From 7ff653ebaef39e7221b76602e55f78c3e2e812a8 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 07:50:45 +0200 Subject: [PATCH 14/24] recreated doc for entity lib github workflow --- README.md | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ec92ee9..643c9f9 100644 --- a/README.md +++ b/README.md @@ -277,4 +277,66 @@ Innerhalb des `Entities/`-Ordners finden Sie das Projekt für die Bibliothek, da `EntityLibName.sln` ist die zugehörige Solution-Datei, welche beide Projekte (die Entitätsbibliothek und das Testprojekt) für eine einfachere Verwaltung in Entwicklungs-Tools wie Visual Studio zusammenfasst. -Diese Konfiguration gewährleistet eine klare Trennung zwischen der Implementierung der Geschäftslogik und den Tests, was für eine saubere Codebasis und leichtere Wartbarkeit sorgt. \ No newline at end of file +Diese Konfiguration gewährleistet eine klare Trennung zwischen der Implementierung der Geschäftslogik und den Tests, was für eine saubere Codebasis und leichtere Wartbarkeit sorgt. + +### Videoschnitt Entity Library GitHub Workflow + +Kurzname: **videoschnitt-entitylib-wf** + +Das `VideoschnittEntityLibraryWorkflowTemplate` schafft eine CI/CD-Pipeline mittels GitHub Actions für das automatische Bauen, Testen und Veröffentlichen von Entity Libraries des Videoschnitt Projekts auf NuGet.org. + +#### Features Videoschnitt Entity Library GitHub Workflow + +- **Automatisierte CI/CD-Pipeline**: Konfiguriert GitHub Actions für die Automatisierung des Build- und Pack-Prozesses. +- **.NET Core Setup**: Einrichtung und Verwendung einer spezifischen .NET-Version für den Build-Prozess. +- **Abhängigkeitsmanagement**: Wiederherstellung der benötigten Pakete vor dem Build. +- **NuGet-Paketierung**: Erstellt NuGet-Pakete aus dem Class-Library-Projekt. +- **NuGet-Veröffentlichung**: Stellt die erstellten Pakete auf NuGet.org bereit und verwendet dabei GitHub Secrets, um den NuGet API-Key sicher zu handhaben. + +#### Anwendung Videoschnitt Entity Library GitHub Workflow + +Die Einrichtung der CI/CD-Pipeline für die Entity Library erfolgt durch den folgenden Befehl: + +```bash +dotnet new videoschnitt-entitylib-wf -o . +``` + +Durch diesen Befehl wird eine `dotnet.yml` Workflow-Datei im `.github/workflows`-Verzeichnis des Projekts erstellt, die folgende Schritte für den CI/CD-Prozess vorsieht: + +```yaml +name: .NET CI/CD + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build_and_pack: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Setup .NET Core + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.0.x' + + - name: Restore dependencies for Module + run: dotnet restore src/Entities/Entities.csproj + + - name: Pack Entities + run: dotnet pack src/Entities/Entities.csproj --output ./nupkgs + + # Veröffentlichen der NuGet-Pakete + - name: Push NuGet and Symbol Packages + run: | + dotnet nuget push ./nupkgs/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate + dotnet nuget push ./nupkgs/*.snupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate +``` + +Diese Konfiguration sorgt dafür, dass Ihre Entity Library automatisch gebaut und verpackt wird, und bei Bedarf – wenn zum Beispiel ein Tag gepusht wird – auf NuGet.org veröffentlicht wird. Durch den Einsatz von `--skip-duplicate` wird verhindert, dass bereits existierende Paketversionen zu Konflikten führen. + +Die CI/CD-Pipeline ist ein wichtiger Bestandteil moderner Softwareentwicklungsprozesse und stellt sicher, dass Ihre Bibliothek immer nach den neuesten Änderungen neu gebaut, getestet und veröffentlicht wird. From a979292ed58aef89903df775225ed19ade09ff00 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 07:57:01 +0200 Subject: [PATCH 15/24] recreated doc for recommandations --- README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/README.md b/README.md index 643c9f9..492382a 100644 --- a/README.md +++ b/README.md @@ -340,3 +340,27 @@ jobs: Diese Konfiguration sorgt dafür, dass Ihre Entity Library automatisch gebaut und verpackt wird, und bei Bedarf – wenn zum Beispiel ein Tag gepusht wird – auf NuGet.org veröffentlicht wird. Durch den Einsatz von `--skip-duplicate` wird verhindert, dass bereits existierende Paketversionen zu Konflikten führen. Die CI/CD-Pipeline ist ein wichtiger Bestandteil moderner Softwareentwicklungsprozesse und stellt sicher, dass Ihre Bibliothek immer nach den neuesten Änderungen neu gebaut, getestet und veröffentlicht wird. + +## Empfehlungen + +Für eine effiziente Nutzung der Videoschnitt Templates und zur Sicherstellung eines reibungslosen Entwicklungsprozesses sind folgende Praktiken ratsam: + +### NuGet API-Key Verwaltung + +Es ist entscheidend, den `NUGET_API_KEY` sicher in den GitHub Secrets des Repositories zu speichern, um die Automatisierung der Paketveröffentlichung auf NuGet.org zu ermöglichen. Dieser Schlüssel sollte niemals öffentlich gemacht werden und kann vertraulich über `Settings > Secrets > Actions` im Repository hinterlegt werden. + +### Strukturierte Modulerstellung + +Die kombinierte Verwendung der Templates `scimodule`, `scimodule-github-workflow` und `scimodule-vscode-debugconfig` wird empfohlen, um eine kohärente Entwicklungsumgebung zu etablieren. Die Konfiguration der Module sollte durch dedizierte Abschnitte in der `appsettings.json` erfolgen, was die Flexibilität bei der Verwaltung der Konfigurationseinstellungen erhöht. + +### Modulkonfiguration + +Durch die Anwendung des `IOptions`-Patterns lässt sich eine klare und einfache Handhabung der Konfigurationswerte erreichen. Die `ModuleSettings`-Klasse dient dabei als Basis für die Konfiguration und ermöglicht eine einfache Anpassung und Erweiterung. + +## Lizenz + +Dieses Projekt steht unter der Apache 2.0 Lizenz. Details finden Sie in der [LICENSE](LICENSE) Datei. + +## Mitwirken + +Während eine aktive Beteiligung nicht erwartet wird, sind Interessierte, die zum Projekt beitragen möchten, herzlich eingeladen, sich bei mir zu melden. From 9103264f7ab0f11f0f7b495ee95a28c720257574 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 07:59:43 +0200 Subject: [PATCH 16/24] fix application dir structure --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 492382a..33266d2 100644 --- a/README.md +++ b/README.md @@ -56,9 +56,6 @@ Dieser Befehl generiert eine neue Modulstruktur im Verzeichnis `src` basierend a Projektname/ ├── .template.config/ ├── Application/ -│ ├── Commands/ -│ ├── Queries/ -│ ├── Services/ │ ├── Application.csproj │ └── Program.cs ├── Module/ From 16fc744636f66899c73cf46a3afb194d72eb94a5 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 08:22:20 +0200 Subject: [PATCH 17/24] renamed scimodule to videoschnitt module --- templates/scimodule/Module/ModuleSettings.cs | 8 -------- .../.template.config/template.json | 8 ++++---- .../Application/Application.csproj | 4 ++-- .../Application/Program.cs | 4 ++-- .../Module/Commands/ICommand.cs | 2 +- .../Module/Commands/SampleModule.cs | 2 +- .../Module/Module.csproj | 6 +++--- templates/videoschnitt-module/Module/ModuleSettings.cs | 8 ++++++++ .../Module/Queries/IQueryService.cs | 2 +- .../Module/Queries/SampleQuery.cs | 2 +- .../Module/ServiceCollection.cs | 6 +++--- .../Module/Services/SampleHostedService.cs | 2 +- .../ModuleName.sln} | 0 13 files changed, 27 insertions(+), 27 deletions(-) delete mode 100644 templates/scimodule/Module/ModuleSettings.cs rename templates/{scimodule => videoschnitt-module}/.template.config/template.json (81%) rename templates/{scimodule => videoschnitt-module}/Application/Application.csproj (73%) rename templates/{scimodule => videoschnitt-module}/Application/Program.cs (82%) rename templates/{scimodule => videoschnitt-module}/Module/Commands/ICommand.cs (55%) rename templates/{scimodule => videoschnitt-module}/Module/Commands/SampleModule.cs (85%) rename templates/{scimodule => videoschnitt-module}/Module/Module.csproj (88%) create mode 100644 templates/videoschnitt-module/Module/ModuleSettings.cs rename templates/{scimodule => videoschnitt-module}/Module/Queries/IQueryService.cs (58%) rename templates/{scimodule => videoschnitt-module}/Module/Queries/SampleQuery.cs (88%) rename templates/{scimodule => videoschnitt-module}/Module/ServiceCollection.cs (71%) rename templates/{scimodule => videoschnitt-module}/Module/Services/SampleHostedService.cs (95%) rename templates/{scimodule/ServiceCollectionIntegratedModule.sln => videoschnitt-module/ModuleName.sln} (100%) diff --git a/templates/scimodule/Module/ModuleSettings.cs b/templates/scimodule/Module/ModuleSettings.cs deleted file mode 100644 index 15b5945..0000000 --- a/templates/scimodule/Module/ModuleSettings.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Kurmann.Videoschnitt.ServiceCollectionIntegratedModule; - -public class ModuleSettings -{ - public const string SectionName = "Kurmann.Videoschnitt.ServiceCollectionIntegratedModule"; - - public string SampleSetting { get; set; } = "Sample Value"; -} \ No newline at end of file diff --git a/templates/scimodule/.template.config/template.json b/templates/videoschnitt-module/.template.config/template.json similarity index 81% rename from templates/scimodule/.template.config/template.json rename to templates/videoschnitt-module/.template.config/template.json index 990603b..84c2b7f 100644 --- a/templates/scimodule/.template.config/template.json +++ b/templates/videoschnitt-module/.template.config/template.json @@ -6,10 +6,10 @@ "Videoschnitt", "ServiceCollection" ], - "identity": "Kurmann.Videoschnitt.ServiceCollectionIntegratedModule", - "name": "SCI Module", - "shortName": "scimodule", - "sourceName": "ServiceCollectionIntegratedModule", + "identity": "Kurmann.Videoschnitt.Module", + "name": "Videoschnitt Module", + "shortName": "videoschnitt-module", + "sourceName": "ModuleName", "description": "Module with Application, Entities, Module and Test project for the Videoschnitt modular monolith architecture.", "tags": { "language": "C#", diff --git a/templates/scimodule/Application/Application.csproj b/templates/videoschnitt-module/Application/Application.csproj similarity index 73% rename from templates/scimodule/Application/Application.csproj rename to templates/videoschnitt-module/Application/Application.csproj index 85ad84d..dae88f1 100644 --- a/templates/scimodule/Application/Application.csproj +++ b/templates/videoschnitt-module/Application/Application.csproj @@ -6,8 +6,8 @@ net8.0 enable enable - Kurmann.Videoschnitt.ServiceCollectionIntegratedModule.Application. - Kurmann.Videoschnitt.ServiceCollectionIntegratedModule.Application + Kurmann.Videoschnitt.ModuleName.Application. + Kurmann.Videoschnitt.ModuleName.Application false 1.0.0 diff --git a/templates/scimodule/Application/Program.cs b/templates/videoschnitt-module/Application/Program.cs similarity index 82% rename from templates/scimodule/Application/Program.cs rename to templates/videoschnitt-module/Application/Program.cs index f16f3ab..4d09ee2 100644 --- a/templates/scimodule/Application/Program.cs +++ b/templates/videoschnitt-module/Application/Program.cs @@ -1,7 +1,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; -namespace Kurmann.Videoschnitt.ServiceCollectionIntegratedModule.Application; +namespace Kurmann.Videoschnitt.ModuleName.Application; internal class Program { @@ -21,7 +21,7 @@ public static IHostBuilder CreateHostBuilder(string[] args) }) .ConfigureServices((hostContext, services) => { - services.AddServiceCollectionIntegratedModule(hostContext.Configuration); + services.AddModuleName(hostContext.Configuration); }); } } diff --git a/templates/scimodule/Module/Commands/ICommand.cs b/templates/videoschnitt-module/Module/Commands/ICommand.cs similarity index 55% rename from templates/scimodule/Module/Commands/ICommand.cs rename to templates/videoschnitt-module/Module/Commands/ICommand.cs index 6b85715..b973b31 100644 --- a/templates/scimodule/Module/Commands/ICommand.cs +++ b/templates/videoschnitt-module/Module/Commands/ICommand.cs @@ -1,6 +1,6 @@ using CSharpFunctionalExtensions; -namespace Kurmann.Videoschnitt.ServiceCollectionIntegratedModule.Commands; +namespace Kurmann.Videoschnitt.ModuleName.Commands; public interface ICommand { diff --git a/templates/scimodule/Module/Commands/SampleModule.cs b/templates/videoschnitt-module/Module/Commands/SampleModule.cs similarity index 85% rename from templates/scimodule/Module/Commands/SampleModule.cs rename to templates/videoschnitt-module/Module/Commands/SampleModule.cs index ddd3844..afe71ac 100644 --- a/templates/scimodule/Module/Commands/SampleModule.cs +++ b/templates/videoschnitt-module/Module/Commands/SampleModule.cs @@ -1,6 +1,6 @@ using CSharpFunctionalExtensions; -namespace Kurmann.Videoschnitt.ServiceCollectionIntegratedModule.Commands; +namespace Kurmann.Videoschnitt.ModuleName.Commands; public class SampleCommand(string? sampleParameter) : ICommand { diff --git a/templates/scimodule/Module/Module.csproj b/templates/videoschnitt-module/Module/Module.csproj similarity index 88% rename from templates/scimodule/Module/Module.csproj rename to templates/videoschnitt-module/Module/Module.csproj index 2739780..9e04eac 100644 --- a/templates/scimodule/Module/Module.csproj +++ b/templates/videoschnitt-module/Module/Module.csproj @@ -6,9 +6,9 @@ enable enable - Kurmann.Videoschnitt.ServiceCollectionIntegratedModule - Kurmann.Videoschnitt.ServiceCollectionIntegratedModule - Kurmann.Videoschnitt.ServiceCollectionIntegratedModule + Kurmann.Videoschnitt.ModuleName + Kurmann.Videoschnitt.ModuleName + Kurmann.Videoschnitt.ModuleName Videoschnitt diff --git a/templates/videoschnitt-module/Module/ModuleSettings.cs b/templates/videoschnitt-module/Module/ModuleSettings.cs new file mode 100644 index 0000000..b82dc9a --- /dev/null +++ b/templates/videoschnitt-module/Module/ModuleSettings.cs @@ -0,0 +1,8 @@ +namespace Kurmann.Videoschnitt.ModuleName; + +public class ModuleSettings +{ + public const string SectionName = "Kurmann.Videoschnitt.ModuleName"; + + public string SampleSetting { get; set; } = "Sample Value"; +} \ No newline at end of file diff --git a/templates/scimodule/Module/Queries/IQueryService.cs b/templates/videoschnitt-module/Module/Queries/IQueryService.cs similarity index 58% rename from templates/scimodule/Module/Queries/IQueryService.cs rename to templates/videoschnitt-module/Module/Queries/IQueryService.cs index a8575be..b9bc12b 100644 --- a/templates/scimodule/Module/Queries/IQueryService.cs +++ b/templates/videoschnitt-module/Module/Queries/IQueryService.cs @@ -1,6 +1,6 @@ using CSharpFunctionalExtensions; -namespace Kurmann.Videoschnitt.ServiceCollectionIntegratedModule.Queries; +namespace Kurmann.Videoschnitt.ModuleName.Queries; public interface IQueryService { diff --git a/templates/scimodule/Module/Queries/SampleQuery.cs b/templates/videoschnitt-module/Module/Queries/SampleQuery.cs similarity index 88% rename from templates/scimodule/Module/Queries/SampleQuery.cs rename to templates/videoschnitt-module/Module/Queries/SampleQuery.cs index 6bf8fdb..fa49f3c 100644 --- a/templates/scimodule/Module/Queries/SampleQuery.cs +++ b/templates/videoschnitt-module/Module/Queries/SampleQuery.cs @@ -1,6 +1,6 @@ using CSharpFunctionalExtensions; -namespace Kurmann.Videoschnitt.ServiceCollectionIntegratedModule.Queries; +namespace Kurmann.Videoschnitt.ModuleName.Queries; public class SampleQuery(string? sampleParameter) : IQueryService { diff --git a/templates/scimodule/Module/ServiceCollection.cs b/templates/videoschnitt-module/Module/ServiceCollection.cs similarity index 71% rename from templates/scimodule/Module/ServiceCollection.cs rename to templates/videoschnitt-module/Module/ServiceCollection.cs index 6a035a1..4bfa8bb 100644 --- a/templates/scimodule/Module/ServiceCollection.cs +++ b/templates/videoschnitt-module/Module/ServiceCollection.cs @@ -1,12 +1,12 @@ using Microsoft.Extensions.DependencyInjection; -using Kurmann.Videoschnitt.ServiceCollectionIntegratedModule.Services; +using Kurmann.Videoschnitt.ModuleName.Services; using Microsoft.Extensions.Configuration; -namespace Kurmann.Videoschnitt.ServiceCollectionIntegratedModule; +namespace Kurmann.Videoschnitt.ModuleName; public static class ServiceCollectionExtensions { - public static IServiceCollection AddServiceCollectionIntegratedModule( + public static IServiceCollection AddModuleName( this IServiceCollection services, IConfiguration configuration) { diff --git a/templates/scimodule/Module/Services/SampleHostedService.cs b/templates/videoschnitt-module/Module/Services/SampleHostedService.cs similarity index 95% rename from templates/scimodule/Module/Services/SampleHostedService.cs rename to templates/videoschnitt-module/Module/Services/SampleHostedService.cs index 5734008..dde0bd6 100644 --- a/templates/scimodule/Module/Services/SampleHostedService.cs +++ b/templates/videoschnitt-module/Module/Services/SampleHostedService.cs @@ -2,7 +2,7 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; -namespace Kurmann.Videoschnitt.ServiceCollectionIntegratedModule.Services; +namespace Kurmann.Videoschnitt.ModuleName.Services; public class SampleHostedService(ILogger logger, IOptionsSnapshot options) : IHostedService, IDisposable { diff --git a/templates/scimodule/ServiceCollectionIntegratedModule.sln b/templates/videoschnitt-module/ModuleName.sln similarity index 100% rename from templates/scimodule/ServiceCollectionIntegratedModule.sln rename to templates/videoschnitt-module/ModuleName.sln From 68e4c918cd24ca431eccd3f9c5c8aef27aa78ca8 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 08:25:10 +0200 Subject: [PATCH 18/24] renamed entity lib --- .../.template.config/template.json | 6 +++--- .../Entities/Entities.csproj | 0 .../Entities/SampleEntity.cs | 0 .../{entitylib => videoschnitt-entitylib}/EntityLib.sln | 0 .../Tests/GlobalUsings.cs | 0 .../Tests/SampleEntityTest.cs | 0 .../Tests/Tests.csproj | 0 7 files changed, 3 insertions(+), 3 deletions(-) rename templates/{entitylib => videoschnitt-entitylib}/.template.config/template.json (73%) rename templates/{entitylib => videoschnitt-entitylib}/Entities/Entities.csproj (100%) rename templates/{entitylib => videoschnitt-entitylib}/Entities/SampleEntity.cs (100%) rename templates/{entitylib => videoschnitt-entitylib}/EntityLib.sln (100%) rename templates/{entitylib => videoschnitt-entitylib}/Tests/GlobalUsings.cs (100%) rename templates/{entitylib => videoschnitt-entitylib}/Tests/SampleEntityTest.cs (100%) rename templates/{entitylib => videoschnitt-entitylib}/Tests/Tests.csproj (100%) diff --git a/templates/entitylib/.template.config/template.json b/templates/videoschnitt-entitylib/.template.config/template.json similarity index 73% rename from templates/entitylib/.template.config/template.json rename to templates/videoschnitt-entitylib/.template.config/template.json index fd76675..6b2a893 100644 --- a/templates/entitylib/.template.config/template.json +++ b/templates/videoschnitt-entitylib/.template.config/template.json @@ -7,10 +7,10 @@ "ClassLibrary" ], "identity": "Kurmann.Videoschnitt.EntityLib", - "name": "Entity Library", - "shortName": "entitylib", + "name": "Videoschnitt Entity Library", + "shortName": "videoschnitt-entitylib", "sourceName": "EntityLib", - "description": ".NET Class-Library template for domain logic with an associated test project, using C# Functional Extensions for Result types.", + "description": "A .NET Class-Library template for domain logic with an associated test project, using C# Functional Extensions for Result types for the Kurmann.Videoschnitt namespace.", "tags": { "language": "C#", "type": "solution" diff --git a/templates/entitylib/Entities/Entities.csproj b/templates/videoschnitt-entitylib/Entities/Entities.csproj similarity index 100% rename from templates/entitylib/Entities/Entities.csproj rename to templates/videoschnitt-entitylib/Entities/Entities.csproj diff --git a/templates/entitylib/Entities/SampleEntity.cs b/templates/videoschnitt-entitylib/Entities/SampleEntity.cs similarity index 100% rename from templates/entitylib/Entities/SampleEntity.cs rename to templates/videoschnitt-entitylib/Entities/SampleEntity.cs diff --git a/templates/entitylib/EntityLib.sln b/templates/videoschnitt-entitylib/EntityLib.sln similarity index 100% rename from templates/entitylib/EntityLib.sln rename to templates/videoschnitt-entitylib/EntityLib.sln diff --git a/templates/entitylib/Tests/GlobalUsings.cs b/templates/videoschnitt-entitylib/Tests/GlobalUsings.cs similarity index 100% rename from templates/entitylib/Tests/GlobalUsings.cs rename to templates/videoschnitt-entitylib/Tests/GlobalUsings.cs diff --git a/templates/entitylib/Tests/SampleEntityTest.cs b/templates/videoschnitt-entitylib/Tests/SampleEntityTest.cs similarity index 100% rename from templates/entitylib/Tests/SampleEntityTest.cs rename to templates/videoschnitt-entitylib/Tests/SampleEntityTest.cs diff --git a/templates/entitylib/Tests/Tests.csproj b/templates/videoschnitt-entitylib/Tests/Tests.csproj similarity index 100% rename from templates/entitylib/Tests/Tests.csproj rename to templates/videoschnitt-entitylib/Tests/Tests.csproj From 5d8364b5293e99f6b9040bffcf1d13c2c10fa750 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 08:31:29 +0200 Subject: [PATCH 19/24] renamed sci module debug to videoschnitt module debug --- README.md | 2 +- .../.template.config/template.json | 10 +++++----- .../.vscode/launch.json | 2 +- .../.vscode/tasks.json | 0 4 files changed, 7 insertions(+), 7 deletions(-) rename templates/{scimodule-vscode-debugconfig => videoschnitt-module-debug}/.template.config/template.json (71%) rename templates/{scimodule-vscode-debugconfig => videoschnitt-module-debug}/.vscode/launch.json (86%) rename templates/{scimodule-vscode-debugconfig => videoschnitt-module-debug}/.vscode/tasks.json (100%) diff --git a/README.md b/README.md index 33266d2..3e7cefc 100644 --- a/README.md +++ b/README.md @@ -167,7 +167,7 @@ Die `launch.json` Datei könnte so aussehen: "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/src/Application/bin/Debug/net8.0/Kurmann.Videoschnitt.SciModule.VsCode.DebugConfig.Application.dll", + "program": "${workspaceFolder}/src/Application/bin/Debug/net8.0/Kurmann.Videoschnitt.ModuleName.Application.dll", "args": [], "cwd": "${workspaceFolder}", "stopAtEntry": false, diff --git a/templates/scimodule-vscode-debugconfig/.template.config/template.json b/templates/videoschnitt-module-debug/.template.config/template.json similarity index 71% rename from templates/scimodule-vscode-debugconfig/.template.config/template.json rename to templates/videoschnitt-module-debug/.template.config/template.json index cf48bc2..fe85c3c 100644 --- a/templates/scimodule-vscode-debugconfig/.template.config/template.json +++ b/templates/videoschnitt-module-debug/.template.config/template.json @@ -6,11 +6,11 @@ "Videoschnitt", "Debug" ], - "identity": "Kurmann.Videoschnitt.SciModule.VsCode.DebugConfig", - "name": "SCI Module VS Code Debug Config", - "shortName": "scimodule-vscode-debugconfig", - "sourceName": "SciModule.VsCode.DebugConfig", - "description": "This template creates the Visual Studio Code debug configuration for the Service Collection Integrated Module.", + "identity": "Kurmann.Videoschnitt.Module.Debug", + "name": "Videoschnitt Module VS Code Debug Config", + "shortName": "videoschnitt-module-debug", + "sourceName": "ModuleName", + "description": "This template creates the Visual Studio Code debug configuration for Kurmann Videoschnitt module.", "tags": { "language": "JSON", "type": "item" diff --git a/templates/scimodule-vscode-debugconfig/.vscode/launch.json b/templates/videoschnitt-module-debug/.vscode/launch.json similarity index 86% rename from templates/scimodule-vscode-debugconfig/.vscode/launch.json rename to templates/videoschnitt-module-debug/.vscode/launch.json index c295c21..abf56d2 100644 --- a/templates/scimodule-vscode-debugconfig/.vscode/launch.json +++ b/templates/videoschnitt-module-debug/.vscode/launch.json @@ -6,7 +6,7 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/src/Application/bin/Debug/net8.0/Kurmann.Videoschnitt.SciModule.VsCode.DebugConfig.Application.dll", + "program": "${workspaceFolder}/src/Application/bin/Debug/net8.0/Kurmann.Videoschnitt.ModuleName.Application.dll", "args": [], "cwd": "${workspaceFolder}", "stopAtEntry": false, diff --git a/templates/scimodule-vscode-debugconfig/.vscode/tasks.json b/templates/videoschnitt-module-debug/.vscode/tasks.json similarity index 100% rename from templates/scimodule-vscode-debugconfig/.vscode/tasks.json rename to templates/videoschnitt-module-debug/.vscode/tasks.json From 9d2d3ef78a2f84fe33b5127c9e033686316f9837 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 08:33:13 +0200 Subject: [PATCH 20/24] renamed to videoschnitt-entitylib-wf --- .../.github/workflows/dotnet.yml | 0 .../.template.config/template.json | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) rename templates/{entitylib-github-workflow => videoschnitt-entitylib-wf}/.github/workflows/dotnet.yml (100%) rename templates/{entitylib-github-workflow => videoschnitt-entitylib-wf}/.template.config/template.json (82%) diff --git a/templates/entitylib-github-workflow/.github/workflows/dotnet.yml b/templates/videoschnitt-entitylib-wf/.github/workflows/dotnet.yml similarity index 100% rename from templates/entitylib-github-workflow/.github/workflows/dotnet.yml rename to templates/videoschnitt-entitylib-wf/.github/workflows/dotnet.yml diff --git a/templates/entitylib-github-workflow/.template.config/template.json b/templates/videoschnitt-entitylib-wf/.template.config/template.json similarity index 82% rename from templates/entitylib-github-workflow/.template.config/template.json rename to templates/videoschnitt-entitylib-wf/.template.config/template.json index 1fd731a..cf966e4 100644 --- a/templates/entitylib-github-workflow/.template.config/template.json +++ b/templates/videoschnitt-entitylib-wf/.template.config/template.json @@ -7,10 +7,10 @@ "GitHub" ], "identity": "Kurmann.Videoschnitt.EntityLib.GitHubWorkfow", - "name": "Entity Library GitHub Workflow", - "shortName": "entitylib-github-workflow", + "name": "Videoschnitt Library GitHub Workflow", + "shortName": "videoschnitt-entitylib-wf", "sourceName": "EntityLib.GitHubWorkfow", - "description": "Creates a GitHub Actions workflow for publishing a entity library to NuGet.org.", + "description": "Creates a GitHub Actions workflow for publishing a entity library to NuGet.org for the Kurmann.Videoschnitt namespace.", "tags": { "language": "YAML", "type": "item" From fb52ca3fd4548b26dcece9bcf5f2bd7f209b4e31 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 08:36:46 +0200 Subject: [PATCH 21/24] renamed to videoschnitt-module-wf --- .../.github/workflows/dotnet.yml | 4 ---- .../.template.config/template.json | 10 +++++----- 2 files changed, 5 insertions(+), 9 deletions(-) rename templates/{scimodule-github-workflow => videoschnitt-module-wf}/.github/workflows/dotnet.yml (86%) rename templates/{scimodule-github-workflow => videoschnitt-module-wf}/.template.config/template.json (73%) diff --git a/templates/scimodule-github-workflow/.github/workflows/dotnet.yml b/templates/videoschnitt-module-wf/.github/workflows/dotnet.yml similarity index 86% rename from templates/scimodule-github-workflow/.github/workflows/dotnet.yml rename to templates/videoschnitt-module-wf/.github/workflows/dotnet.yml index 215ba27..267f8d2 100644 --- a/templates/scimodule-github-workflow/.github/workflows/dotnet.yml +++ b/templates/videoschnitt-module-wf/.github/workflows/dotnet.yml @@ -20,10 +20,6 @@ jobs: - name: Restore dependencies for Module run: dotnet restore src/Module/Module.csproj - - # Optional: Ausführen der Tests - # - name: Test - # run: dotnet test src/Tests/Tests.csproj --no-build --verbosity normal - name: Pack Module run: dotnet pack src/Module/Module.csproj --output ./nupkgs diff --git a/templates/scimodule-github-workflow/.template.config/template.json b/templates/videoschnitt-module-wf/.template.config/template.json similarity index 73% rename from templates/scimodule-github-workflow/.template.config/template.json rename to templates/videoschnitt-module-wf/.template.config/template.json index 9cc9d65..f30ecd8 100644 --- a/templates/scimodule-github-workflow/.template.config/template.json +++ b/templates/videoschnitt-module-wf/.template.config/template.json @@ -6,11 +6,11 @@ "Videoschnitt", "GitHub" ], - "identity": "Kurmann.Videoschnitt.SciModule.GitHubWorkfow", - "name": "SCI Module GitHub Workflow", - "shortName": "scimodule-github-workflow", - "sourceName": "SciModule.GitHubWorkfow", - "description": "Creates a GitHub Actions workflow for publishing a Service Collection Integrated Module to NuGet.org.", + "identity": "Kurmann.Videoschnitt.Module.GitHubWorkfow", + "name": "Videoschnitt Module GitHub Workflow", + "shortName": "videoschnitt-module-wf", + "sourceName": "ModuleName", + "description": "Creates a GitHub Actions workflow for publishing a Videoschnitt Module to NuGet.org.", "tags": { "language": "YAML", "type": "item" From 49da6a7c85acfa33227b1a260e97be82f89562c0 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 08:39:22 +0200 Subject: [PATCH 22/24] coherent title --- .../videoschnitt-entitylib-wf/.template.config/template.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/videoschnitt-entitylib-wf/.template.config/template.json b/templates/videoschnitt-entitylib-wf/.template.config/template.json index cf966e4..b9f0773 100644 --- a/templates/videoschnitt-entitylib-wf/.template.config/template.json +++ b/templates/videoschnitt-entitylib-wf/.template.config/template.json @@ -7,7 +7,7 @@ "GitHub" ], "identity": "Kurmann.Videoschnitt.EntityLib.GitHubWorkfow", - "name": "Videoschnitt Library GitHub Workflow", + "name": "Videoschnitt Entity Library GitHub Workflow", "shortName": "videoschnitt-entitylib-wf", "sourceName": "EntityLib.GitHubWorkfow", "description": "Creates a GitHub Actions workflow for publishing a entity library to NuGet.org for the Kurmann.Videoschnitt namespace.", From 8e46788a2e1b8b2482a602f7f5c71a774ab56258 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 08:46:12 +0200 Subject: [PATCH 23/24] created solution to avoid vscode to be confused with sln file to open --- Templates.sln | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Templates.sln diff --git a/Templates.sln b/Templates.sln new file mode 100644 index 0000000..6a6ec57 --- /dev/null +++ b/Templates.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Templates", "Templates.csproj", "{09299963-E1A4-4A58-B0A7-7AD8F1779A16}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {09299963-E1A4-4A58-B0A7-7AD8F1779A16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {09299963-E1A4-4A58-B0A7-7AD8F1779A16}.Debug|Any CPU.Build.0 = Debug|Any CPU + {09299963-E1A4-4A58-B0A7-7AD8F1779A16}.Release|Any CPU.ActiveCfg = Release|Any CPU + {09299963-E1A4-4A58-B0A7-7AD8F1779A16}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal From 87e94ef51f6429d9c2ba5ed1de54ba22e40e4a33 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Sat, 6 Apr 2024 08:47:35 +0200 Subject: [PATCH 24/24] updated package release notes --- Templates.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Templates.csproj b/Templates.csproj index ba386ff..1686e9b 100644 --- a/Templates.csproj +++ b/Templates.csproj @@ -13,7 +13,7 @@ 1.11.0-beta - Umbenennung der Vorlagen mit Fokus auf "Kurmann.Videoschnitt". + Umbenennung aller Vorlagen mit Fokus auf "Kurmann.Videoschnitt". Einheitliche Namensgebung. README.md