From 6464386242411bd88ae09c63f8691d1eec8b29af Mon Sep 17 00:00:00 2001 From: Aaron Powell Date: Tue, 24 Sep 2024 01:37:47 +0000 Subject: [PATCH 01/14] Changed names in files --- .devcontainer/post-create.sh | 2 +- .github/ISSUE_TEMPLATE/bug_report.yml | 4 +- .github/ISSUE_TEMPLATE/feature_proposal.yml | 3 +- .../ISSUE_TEMPLATE/integration_proposal.yml | 3 +- .github/workflows/dotnet-ci.yml | 4 +- .github/workflows/dotnet-main.yml | 4 +- .github/workflows/dotnet-release.yml | 4 +- CODEOWNERS | 6 +- CommunityToolkit.Aspire.sln | 40 +++++------ README.md | 41 ++++++------ docs/contributing.md | 9 +-- docs/faq.md | 3 +- docs/getting-started.md | 11 ++-- docs/index.md | 8 +-- .../hosting-azure-static-web-apps.md | 11 ++-- docs/integrations/hosting-java.md | 37 ++++++----- .../integrations/hosting-nodejs-extensions.md | 7 +- docs/integrations/hosting-ollama.md | 5 +- ...yToolkit.Aspire.Hosting.Java.ApiApp.csproj | 2 +- .../CommunityToolkit.Aspire.Java.ApiApp.http | 4 +- ...Toolkit.Aspire.Hosting.Java.AppHost.csproj | 8 +-- .../Program.cs | 2 +- .../Clients/IApiClient.cs | 4 +- .../Clients/SpringApiClient.cs | 4 +- .../Clients/WebApiClient.cs | 4 +- ...yToolkit.Aspire.Hosting.Java.WebApp.csproj | 2 +- .../Components/App.razor | 2 +- .../Components/Layout/NavMenu.razor | 2 +- .../Components/Pages/Weather.razor | 2 +- .../Components/UI/WeatherComponent.razor | 26 ++++---- .../Components/_Imports.razor | 4 +- .../Models/WeatherForecast.cs | 2 +- .../Program.cs | 6 +- .../Services/ApiClientService.cs | 6 +- examples/java/azure.yaml | 5 +- ...e.Hosting.NodeJS.Extensions.AppHost.csproj | 2 +- ...olkit.Aspire.Hosting.Ollama.AppHost.csproj | 4 +- ...tyToolkit.Aspire.Hosting.Ollama.Web.csproj | 2 +- .../Components/App.razor | 2 +- .../Components/Layout/NavMenu.razor | 2 +- .../Components/_Imports.razor | 4 +- .../Program.cs | 4 +- .../WeatherApiClient.cs | 2 +- ...Toolkit.Aspire.StaticWebApps.ApiApp.csproj | 2 +- ...oolkit.Aspire.StaticWebApps.AppHost.csproj | 4 +- .../Program.cs | 2 +- .../JavaAppHostingExtension.cs | 2 +- .../README.md | 17 ++--- .../Utils/PathNormalizer.cs | 2 +- .../NodeJSHostingExtensions.cs | 2 +- .../NodePackageInstaller.cs | 2 +- .../NpmPackageInstallerLifecycleHook.cs | 2 +- .../PnpmPackageInstallerLifecycleHook.cs | 2 +- .../YarnPackageInstallerLifecycleHook.cs | 2 +- .../OllamaContainerImageTags.cs | 2 +- .../OllamaResourceBuilderExtensions.cs | 66 +++++++++---------- .../OllamaResourceLifecycleHook.cs | 2 +- src/Directory.Build.props | 2 +- ...e.Hosting.Azure.StaticWebApps.Tests.csproj | 6 +- .../ResourceCreationTests.cs | 4 +- .../SwaHostingComponentTests.cs | 4 +- ...tyToolkit.Aspire.Hosting.Java.Tests.csproj | 4 +- .../JavaHostingComponentTests.cs | 4 +- .../AppHostTests.cs | 4 +- ...ire.Hosting.NodeJS.Extensions.Tests.csproj | 4 +- .../ResourceCreationTests.cs | 2 +- .../AppHostTests.cs | 4 +- ...Toolkit.Aspire.Hosting.Ollama.Tests.csproj | 6 +- .../ResourceCreationTests.cs | 2 +- .../AspireIntegrationTest.cs | 2 +- .../LoggerNotificationExtensions.cs | 2 +- 71 files changed, 240 insertions(+), 228 deletions(-) diff --git a/.devcontainer/post-create.sh b/.devcontainer/post-create.sh index b8cca861..5f86ae22 100755 --- a/.devcontainer/post-create.sh +++ b/.devcontainer/post-create.sh @@ -23,7 +23,7 @@ sudo apt-get update sudo apt-get install libnss3 libnspr4 libdbus-1-3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libatspi2.0-0 libx11-6 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxrandr2 libgbm1 libxcb1 libxkbcommon0 libpango-1.0-0 libcairo2 libasound2 # Install the npm packages for the SWA sample -cd examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp +cd examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp npm ci cd ../../../ diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index fca3c83b..1f22e3d2 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -77,8 +77,8 @@ body: label: Nuget packages description: Which NuGet packages have you used? Include the version number. options: - - label: CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps - - label: CommunityToolkit.Aspire.Hosting.Java + - label: Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps + - label: Aspire.CommunityToolkit.Hosting.Java - type: input id: nuget-package-version validations: diff --git a/.github/ISSUE_TEMPLATE/feature_proposal.yml b/.github/ISSUE_TEMPLATE/feature_proposal.yml index 6c541fca..bb35cc34 100644 --- a/.github/ISSUE_TEMPLATE/feature_proposal.yml +++ b/.github/ISSUE_TEMPLATE/feature_proposal.yml @@ -44,7 +44,7 @@ body: description: A complete API breakdown of the new proposed feature or change. placeholder: | ```csharp - namespace CommunityToolkit.Aspire.SomePackage; + namespace Aspire.CommunityToolkit.SomePackage; public class MyProposedClass { @@ -93,3 +93,4 @@ body: - Yes, I'd like to be assigned to work on this item - Yes, but only if others can assist - No, just wanted to propose this + diff --git a/.github/ISSUE_TEMPLATE/integration_proposal.yml b/.github/ISSUE_TEMPLATE/integration_proposal.yml index d9ac5dd4..53880faf 100644 --- a/.github/ISSUE_TEMPLATE/integration_proposal.yml +++ b/.github/ISSUE_TEMPLATE/integration_proposal.yml @@ -34,7 +34,7 @@ body: description: A complete API breakdown of the new proposed feature or change. placeholder: | ```csharp - namespace CommunityToolkit.Aspire.SomePackage; + namespace Aspire.CommunityToolkit.SomePackage; public class MyProposedClass { @@ -65,3 +65,4 @@ body: - Yes, I'd like to be assigned to work on this item - Yes, but only if others can assist - No, just wanted to propose this + diff --git a/.github/workflows/dotnet-ci.yml b/.github/workflows/dotnet-ci.yml index b3015686..c304580b 100644 --- a/.github/workflows/dotnet-ci.yml +++ b/.github/workflows/dotnet-ci.yml @@ -47,7 +47,7 @@ jobs: name: Cache Java Docker images with: path: /var/lib/docker/image - key: ${{ runner.os }}-docker-${{ hashFiles('examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/Dockerfile') }} + key: ${{ runner.os }}-docker-${{ hashFiles('examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/Dockerfile') }} restore-keys: | ${{ runner.os }}-docker- @@ -60,7 +60,7 @@ jobs: - name: Setup Node projects run: | npm install -g @azure/static-web-apps-cli - cd examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp + cd examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp npm ci - name: Restore dependencies diff --git a/.github/workflows/dotnet-main.yml b/.github/workflows/dotnet-main.yml index 614e780d..a33760a2 100644 --- a/.github/workflows/dotnet-main.yml +++ b/.github/workflows/dotnet-main.yml @@ -47,7 +47,7 @@ jobs: name: Cache Java Docker images with: path: /var/lib/docker/image - key: ${{ runner.os }}-docker-${{ hashFiles('examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/Dockerfile') }} + key: ${{ runner.os }}-docker-${{ hashFiles('examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/Dockerfile') }} restore-keys: | ${{ runner.os }}-docker- @@ -60,7 +60,7 @@ jobs: - name: Setup Node projects run: | npm install -g @azure/static-web-apps-cli - cd examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp + cd examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp npm ci - name: Restore dependencies diff --git a/.github/workflows/dotnet-release.yml b/.github/workflows/dotnet-release.yml index 6d75cc3a..4abea265 100644 --- a/.github/workflows/dotnet-release.yml +++ b/.github/workflows/dotnet-release.yml @@ -48,7 +48,7 @@ jobs: name: Cache Java Docker images with: path: /var/lib/docker/image - key: ${{ runner.os }}-docker-${{ hashFiles('examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/Dockerfile') }} + key: ${{ runner.os }}-docker-${{ hashFiles('examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/Dockerfile') }} restore-keys: | ${{ runner.os }}-docker- @@ -61,7 +61,7 @@ jobs: - name: Setup Node projects run: | npm install -g @azure/static-web-apps-cli - cd examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp + cd examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp npm ci - name: Restore dependencies diff --git a/CODEOWNERS b/CODEOWNERS index 104115b0..b3599a95 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,8 +1,8 @@ # Default owner * @aaronpowell -# CommunityToolkit.Aspire.Hosting.Java +# Aspire.CommunityToolkit.Hosting.Java /docs/integrations/hosting-java/* @justinyoo /examples/java/* @justinyoo -/src/CommunityToolkit.Aspire.Hosting.Java/* @justinyoo -/tests/CommunityToolkit.Aspire.Hosting.Java/* @justinyoo +/src/Aspire.CommunityToolkit.Hosting.Java/* @justinyoo +/tests/Aspire.CommunityToolkit.Hosting.Java/* @justinyoo diff --git a/CommunityToolkit.Aspire.sln b/CommunityToolkit.Aspire.sln index d7338212..9d381ee2 100644 --- a/CommunityToolkit.Aspire.sln +++ b/CommunityToolkit.Aspire.sln @@ -5,57 +5,57 @@ VisualStudioVersion = 17.12.35101.237 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{414151D4-7009-4E78-A5C6-D99EBD1E67D1}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CommunityToolkit.Aspire.Hosting.Java", "src\CommunityToolkit.Aspire.Hosting.Java\CommunityToolkit.Aspire.Hosting.Java.csproj", "{DAA67050-44B3-458F-9818-5877D606866A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.CommunityToolkit.Hosting.Java", "src\Aspire.CommunityToolkit.Hosting.Java\Aspire.CommunityToolkit.Hosting.Java.csproj", "{DAA67050-44B3-458F-9818-5877D606866A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps", "src\CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps\CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.csproj", "{125DFA83-328D-4F8B-91EC-3057FFF410BE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps", "src\Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps\Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.csproj", "{125DFA83-328D-4F8B-91EC-3057FFF410BE}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{8519CC01-1370-47C8-AD94-B0F326B1563F}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "java", "java", "{F120E99A-FB2A-4C3B-B588-9B7ED1CD4E8A}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CommunityToolkit.Aspire.Hosting.Java.WebApp", "examples\java\CommunityToolkit.Aspire.Hosting.Java.WebApp\CommunityToolkit.Aspire.Hosting.Java.WebApp.csproj", "{3D767C8C-7E04-4264-B4E9-13600650D2B1}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.CommunityToolkit.Hosting.Java.WebApp", "examples\java\Aspire.CommunityToolkit.Hosting.Java.WebApp\Aspire.CommunityToolkit.Hosting.Java.WebApp.csproj", "{3D767C8C-7E04-4264-B4E9-13600650D2B1}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CommunityToolkit.Aspire.Hosting.Java.ApiApp", "examples\java\CommunityToolkit.Aspire.Hosting.Java.ApiApp\CommunityToolkit.Aspire.Hosting.Java.ApiApp.csproj", "{34602A2D-24B2-47C0-9678-F1F7CD6C8C6D}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.CommunityToolkit.Hosting.Java.ApiApp", "examples\java\Aspire.CommunityToolkit.Hosting.Java.ApiApp\Aspire.CommunityToolkit.Hosting.Java.ApiApp.csproj", "{34602A2D-24B2-47C0-9678-F1F7CD6C8C6D}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CommunityToolkit.Aspire.Hosting.Java.AppHost", "examples\java\CommunityToolkit.Aspire.Hosting.Java.AppHost\CommunityToolkit.Aspire.Hosting.Java.AppHost.csproj", "{55AC8E7E-DA0A-489D-8059-4E7190C9EEBF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.CommunityToolkit.Hosting.Java.AppHost", "examples\java\Aspire.CommunityToolkit.Hosting.Java.AppHost\Aspire.CommunityToolkit.Hosting.Java.AppHost.csproj", "{55AC8E7E-DA0A-489D-8059-4E7190C9EEBF}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CommunityToolkit.Aspire.Hosting.Java.ServiceDefaults", "examples\java\CommunityToolkit.Aspire.Hosting.Java.ServiceDefaults\CommunityToolkit.Aspire.Hosting.Java.ServiceDefaults.csproj", "{BBAFA814-1026-4A39-AA28-BCAE3951A224}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.CommunityToolkit.Hosting.Java.ServiceDefaults", "examples\java\Aspire.CommunityToolkit.Hosting.Java.ServiceDefaults\Aspire.CommunityToolkit.Hosting.Java.ServiceDefaults.csproj", "{BBAFA814-1026-4A39-AA28-BCAE3951A224}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{899F0713-7FC6-4750-BAFC-AC650B35B453}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CommunityToolkit.Aspire.Hosting.Java.Tests", "tests\CommunityToolkit.Aspire.Hosting.Java.Tests\CommunityToolkit.Aspire.Hosting.Java.Tests.csproj", "{E2905A71-E25D-46FC-A128-D6A366D4D751}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.CommunityToolkit.Hosting.Java.Tests", "tests\Aspire.CommunityToolkit.Hosting.Java.Tests\Aspire.CommunityToolkit.Hosting.Java.Tests.csproj", "{E2905A71-E25D-46FC-A128-D6A366D4D751}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests", "tests\CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests\CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests.csproj", "{1B55E682-B518-4E59-8972-07C82ED5A677}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests", "tests\Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests\Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests.csproj", "{1B55E682-B518-4E59-8972-07C82ED5A677}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommunityToolkit.Aspire.Testing", "tests\CommunityToolkit.Aspire.Testing\CommunityToolkit.Aspire.Testing.csproj", "{4C1D5422-4C52-4603-A01A-E1E6304633EC}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.CommunityToolkit.Testing", "tests\Aspire.CommunityToolkit.Testing\Aspire.CommunityToolkit.Testing.csproj", "{4C1D5422-4C52-4603-A01A-E1E6304633EC}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "swa", "swa", "{564FA6A0-EC54-41C6-A35F-89890E1D06E3}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommunityToolkit.Aspire.StaticWebApps.AppHost", "examples\swa\CommunityToolkit.Aspire.StaticWebApps.AppHost\CommunityToolkit.Aspire.StaticWebApps.AppHost.csproj", "{C083A377-13CA-47C1-8B17-1FE353EA76F0}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.CommunityToolkit.StaticWebApps.AppHost", "examples\swa\Aspire.CommunityToolkit.StaticWebApps.AppHost\Aspire.CommunityToolkit.StaticWebApps.AppHost.csproj", "{C083A377-13CA-47C1-8B17-1FE353EA76F0}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommunityToolkit.Aspire.StaticWebApps.ApiApp", "examples\swa\CommunityToolkit.Aspire.StaticWebApps.ApiApp\CommunityToolkit.Aspire.StaticWebApps.ApiApp.csproj", "{BAEA0F6F-39E9-4893-8787-C4D292D3B169}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.CommunityToolkit.StaticWebApps.ApiApp", "examples\swa\Aspire.CommunityToolkit.StaticWebApps.ApiApp\Aspire.CommunityToolkit.StaticWebApps.ApiApp.csproj", "{BAEA0F6F-39E9-4893-8787-C4D292D3B169}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommunityToolkit.Aspire.StaticWebApps.ServiceDefaults", "examples\swa\CommunityToolkit.Aspire.StaticWebApps.ServiceDefaults\CommunityToolkit.Aspire.StaticWebApps.ServiceDefaults.csproj", "{83FF8083-7EE2-4196-86A8-239F921B443C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.CommunityToolkit.StaticWebApps.ServiceDefaults", "examples\swa\Aspire.CommunityToolkit.StaticWebApps.ServiceDefaults\Aspire.CommunityToolkit.StaticWebApps.ServiceDefaults.csproj", "{83FF8083-7EE2-4196-86A8-239F921B443C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommunityToolkit.Aspire.Hosting.NodeJS.Extensions", "src\CommunityToolkit.Aspire.Hosting.NodeJS.Extensions\CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.csproj", "{1F299343-30DF-4599-A95D-BCFB1754DA48}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.CommunityToolkit.Hosting.NodeJS.Extensions", "src\Aspire.CommunityToolkit.Hosting.NodeJS.Extensions\Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.csproj", "{1F299343-30DF-4599-A95D-BCFB1754DA48}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "nodejs-ext", "nodejs-ext", "{261AC321-8982-4C3A-8DBF-DAFC95F97697}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost", "examples\nodejs-ext\CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost\CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost.csproj", "{D3F5EF2B-CE37-4339-A8BD-50E6C5B2AFA1}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost", "examples\nodejs-ext\Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost\Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost.csproj", "{D3F5EF2B-CE37-4339-A8BD-50E6C5B2AFA1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests", "tests\CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests\CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests.csproj", "{E8F93376-1367-4A7B-A729-116199804356}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests", "tests\Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests\Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests.csproj", "{E8F93376-1367-4A7B-A729-116199804356}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommunityToolkit.Aspire.Hosting.Ollama", "src\CommunityToolkit.Aspire.Hosting.Ollama\CommunityToolkit.Aspire.Hosting.Ollama.csproj", "{6C6696CB-8DCC-4E93-A667-A313D70E0220}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.CommunityToolkit.Hosting.Ollama", "src\Aspire.CommunityToolkit.Hosting.Ollama\Aspire.CommunityToolkit.Hosting.Ollama.csproj", "{6C6696CB-8DCC-4E93-A667-A313D70E0220}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommunityToolkit.Aspire.Hosting.Ollama.Tests", "tests\CommunityToolkit.Aspire.Hosting.Ollama.Tests\CommunityToolkit.Aspire.Hosting.Ollama.Tests.csproj", "{1DB27FA0-E7E4-42C1-B062-4DE0128D4FA1}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.CommunityToolkit.Hosting.Ollama.Tests", "tests\Aspire.CommunityToolkit.Hosting.Ollama.Tests\Aspire.CommunityToolkit.Hosting.Ollama.Tests.csproj", "{1DB27FA0-E7E4-42C1-B062-4DE0128D4FA1}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ollama", "ollama", "{14BD8AE7-C8DF-4C7C-8244-7F74C101569D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommunityToolkit.Aspire.Hosting.Ollama.AppHost", "examples\ollama\CommunityToolkit.Aspire.Hosting.Ollama.AppHost\CommunityToolkit.Aspire.Hosting.Ollama.AppHost.csproj", "{F4602DC8-3C17-4834-B640-9A3B27FE278A}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.CommunityToolkit.Hosting.Ollama.AppHost", "examples\ollama\Aspire.CommunityToolkit.Hosting.Ollama.AppHost\Aspire.CommunityToolkit.Hosting.Ollama.AppHost.csproj", "{F4602DC8-3C17-4834-B640-9A3B27FE278A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommunityToolkit.Aspire.Hosting.Ollama.ServiceDefaults", "examples\ollama\CommunityToolkit.Aspire.Hosting.Ollama.ServiceDefaults\CommunityToolkit.Aspire.Hosting.Ollama.ServiceDefaults.csproj", "{2F037600-2002-4A13-9359-98FB0D2416BE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.CommunityToolkit.Hosting.Ollama.ServiceDefaults", "examples\ollama\Aspire.CommunityToolkit.Hosting.Ollama.ServiceDefaults\Aspire.CommunityToolkit.Hosting.Ollama.ServiceDefaults.csproj", "{2F037600-2002-4A13-9359-98FB0D2416BE}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommunityToolkit.Aspire.Hosting.Ollama.Web", "examples\ollama\CommunityToolkit.Aspire.Hosting.Ollama.Web\CommunityToolkit.Aspire.Hosting.Ollama.Web.csproj", "{0A17021E-5F10-429B-88C8-E4073EADACB6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.CommunityToolkit.Hosting.Ollama.Web", "examples\ollama\Aspire.CommunityToolkit.Hosting.Ollama.Web\Aspire.CommunityToolkit.Hosting.Ollama.Web.csproj", "{0A17021E-5F10-429B-88C8-E4073EADACB6}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/README.md b/README.md index 1489cd10..f07706b3 100644 --- a/README.md +++ b/README.md @@ -12,10 +12,10 @@ This repository contains the source code for the .NET Aspire Community Toolkit, | Package | Latest stable | Latest Preview | Description | | ---------------------------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| [`Hosting.Azure.StaticWebApps`][swa-integration-docs] | [![CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps][swa-shields]][swa-nuget] | [![CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps][swa-shields-preview]][swa-nuget-preview] | A hosting integration for the [Azure Static Web Apps emulator](https://learn.microsoft.com/azure/static-web-apps/static-web-apps-cli-overview) (Note: this does not support deployment of a project to Azure Static Web Apps). | -| [`Hosting.Java`][java-integration-docs] | [![CommunityToolkit.Aspire.Hosting.Java][java-shields]][java-nuget] | [![CommunityToolkit.Aspire.Hosting.Java][java-shields-preview]][java-nuget-preview] | A integration for running Java code in .NET Aspire either using the local JDK or using a container. | -| [`Hosting.NodeJS.Extensions`][nodejs-ext-integration-docs] | [![CommunityToolkit.Aspire.NodeJS.Extensions][nodejs-ext-shields]][nodejs-ext-nuget] | [![CommunityToolkit.Aspire.Hosting.NodeJS.Extensions][nodejs-ext-shields-preview]][nodejs-ext-nuget-preview] | An integration that contains some additional extensions for running Node.js applications | -| [`Hosting.Ollama`][ollama-integration-docs] | [![CommunityToolkit.Aspire.Ollama][ollama-shields]][ollama-nuget] | [![CommunityToolkit.Aspire.Hosting.Ollama][ollama-shields-preview]][ollama-nuget-preview] | An Aspire component leveraging the [Ollama](https://ollama.com) container with support for downloading a model on startup. | +| [`Hosting.Azure.StaticWebApps`][swa-integration-docs] | [![Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps][swa-shields]][swa-nuget] | [![Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps][swa-shields-preview]][swa-nuget-preview] | A hosting integration for the [Azure Static Web Apps emulator](https://learn.microsoft.com/azure/static-web-apps/static-web-apps-cli-overview) (Note: this does not support deployment of a project to Azure Static Web Apps). | +| [`Hosting.Java`][java-integration-docs] | [![Aspire.CommunityToolkit.Hosting.Java][java-shields]][java-nuget] | [![Aspire.CommunityToolkit.Hosting.Java][java-shields-preview]][java-nuget-preview] | A integration for running Java code in .NET Aspire either using the local JDK or using a container. | +| [`Hosting.NodeJS.Extensions`][nodejs-ext-integration-docs] | [![Aspire.CommunityToolkit.NodeJS.Extensions][nodejs-ext-shields]][nodejs-ext-nuget] | [![Aspire.CommunityToolkit.Hosting.NodeJS.Extensions][nodejs-ext-shields-preview]][nodejs-ext-nuget-preview] | An integration that contains some additional extensions for running Node.js applications | +| [`Hosting.Ollama`][ollama-integration-docs] | [![Aspire.CommunityToolkit.Ollama][ollama-shields]][ollama-nuget] | [![Aspire.CommunityToolkit.Hosting.Ollama][ollama-shields-preview]][ollama-nuget-preview] | An Aspire component leveraging the [Ollama](https://ollama.com) container with support for downloading a model on startup. | ## 🙌 Getting Started @@ -38,22 +38,23 @@ Check out our [Contributing guide](./CONTRIBUTING.md) to learn more about contri Made with [contrib.rocks](https://contrib.rocks). [swa-integration-docs]: https://communitytoolkit.github.io/aspire/integrations/hosting-azure-static-web-apps -[swa-shields]: https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps -[swa-nuget]: https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps/ -[swa-shields-preview]: https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps?label=nuget%20(preview) -[swa-nuget-preview]: https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps/absoluteLatest +[swa-shields]: https://img.shields.io/nuget/v/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps +[swa-nuget]: https://nuget.org/packages/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps/ +[swa-shields-preview]: https://img.shields.io/nuget/v/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps?label=nuget%20(preview) +[swa-nuget-preview]: https://nuget.org/packages/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps/absoluteLatest [java-integration-docs]: https://communitytoolkit.github.io/aspire/integrations/hosting-java -[java-shields]: https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Java -[java-nuget]: https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Java/ -[java-shields-preview]: https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Java?label=nuget%20(preview) -[java-nuget-preview]: https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Java/absoluteLatest +[java-shields]: https://img.shields.io/nuget/v/Aspire.CommunityToolkit.Hosting.Java +[java-nuget]: https://nuget.org/packages/Aspire.CommunityToolkit.Hosting.Java/ +[java-shields-preview]: https://img.shields.io/nuget/v/Aspire.CommunityToolkit.Hosting.Java?label=nuget%20(preview) +[java-nuget-preview]: https://nuget.org/packages/Aspire.CommunityToolkit.Hosting.Java/absoluteLatest [nodejs-ext-integration-docs]: https://communitytoolkit.github.io/aspire/integrations/hosting-nodejs-extensions -[nodejs-ext-shields]: https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions -[nodejs-ext-nuget]: https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/ -[nodejs-ext-shields-preview]: https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions?label=nuget%20(preview) -[nodejs-ext-nuget-preview]: https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/absoluteLatest +[nodejs-ext-shields]: https://img.shields.io/nuget/v/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions +[nodejs-ext-nuget]: https://nuget.org/packages/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/ +[nodejs-ext-shields-preview]: https://img.shields.io/nuget/v/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions?label=nuget%20(preview) +[nodejs-ext-nuget-preview]: https://nuget.org/packages/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/absoluteLatest [ollama-integration-docs]: https://communitytoolkit.github.io/aspire/integrations/hosting-ollama -[ollama-shields]: https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Ollama -[ollama-nuget]: https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Ollama/ -[ollama-shields-preview]: https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Ollama?label=nuget%20(preview) -[ollama-nuget-preview]: https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Ollama/absoluteLatest +[ollama-shields]: https://img.shields.io/nuget/v/Aspire.CommunityToolkit.Hosting.Ollama +[ollama-nuget]: https://nuget.org/packages/Aspire.CommunityToolkit.Hosting.Ollama/ +[ollama-shields-preview]: https://img.shields.io/nuget/v/Aspire.CommunityToolkit.Hosting.Ollama?label=nuget%20(preview) +[ollama-nuget-preview]: https://nuget.org/packages/Aspire.CommunityToolkit.Hosting.Ollama/absoluteLatest + diff --git a/docs/contributing.md b/docs/contributing.md index f1f40c8a..f654d359 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -28,15 +28,15 @@ There are four main directories in the repository: ### Naming Convention -When creating a new integration, the project should be prefixed with `CommunityToolkit.Aspire` and the name should then follow a similar design as the .NET Aspire integrations. For example, with the `CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps` integration, the integration is a hosting integration (meaning it's used in the AppHost project), it's specific for Azure, and related to the Static Web Apps service. In contrast, the `CommunityToolkit.Aspire.Hosting.Java` integration is a hosting integration, but it's specific for Java applications but not related to any specific cloud provider. +When creating a new integration, the project should be prefixed with `Aspire.CommunityToolkit` and the name should then follow a similar design as the .NET Aspire integrations. For example, with the `Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps` integration, the integration is a hosting integration (meaning it's used in the AppHost project), it's specific for Azure, and related to the Static Web Apps service. In contrast, the `Aspire.CommunityToolkit.Hosting.Java` integration is a hosting integration, but it's specific for Java applications but not related to any specific cloud provider. ### Tests -All new integrations should have a test project that covers the integration. The test project should be named `CommunityToolkit.Aspire.Hosting..Tests` and should be located in the `tests` directory. The test project should contain both unit and integration tests. The testing framework of choice is xUnit and will be automatically added to the test project. +All new integrations should have a test project that covers the integration. The test project should be named `Aspire.CommunityToolkit.Hosting..Tests` and should be located in the `tests` directory. The test project should contain both unit and integration tests. The testing framework of choice is xUnit and will be automatically added to the test project. For unit tests, it should cover all the configuration parameters that are available for configuring the integration on the AppHost. -Integration tests should use the sample application that is provided for the integration and launch AppHost project using the [.NET Aspire testing framework](https://learn.microsoft.com/dotnet/aspire/fundamentals/testing?pivots=xunit). To simplify this, an [xUnit collection feature](https://xunit.net/docs/shared-context#collection-fixture), `AspireIntegrationTestFixture` has been created in the `CommunityToolkit.Aspire.Testing` project that will launch the AppHost project once for all the tests in the collection. +Integration tests should use the sample application that is provided for the integration and launch AppHost project using the [.NET Aspire testing framework](https://learn.microsoft.com/dotnet/aspire/fundamentals/testing?pivots=xunit). To simplify this, an [xUnit collection feature](https://xunit.net/docs/shared-context#collection-fixture), `AspireIntegrationTestFixture` has been created in the `Aspire.CommunityToolkit.Testing` project that will launch the AppHost project once for all the tests in the collection. Here is an example of an integration test: @@ -48,7 +48,7 @@ public class SwaHostingComponentTests(AspireIntegrationTestFixture)](https://nuget.org/packages/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps/absoluteLatest) ## Overview @@ -9,19 +9,19 @@ This is a .NET Aspire Integration for using the [Azure Static Web App CLI](https It provides support for proxying both the static frontend and the API backend using resources defined in the AppHost project. !!! note - This does not support deployment to Azure Static Web Apps. +This does not support deployment to Azure Static Web Apps. ## Usage !!! note - This integration requires the Azure Static Web Apps CLI to be installed. You can install it using the following command: +This integration requires the Azure Static Web Apps CLI to be installed. You can install it using the following command: ```bash npm install -g @azure/static-web-apps-cli ``` ```csharp -using CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps; +using Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps; var builder = DistributedApplication.CreateBuilder(args); @@ -30,7 +30,7 @@ var api = builder.AddProject)](https://nuget.org/packages/Aspire.CommunityToolkit.Hosting.Azure.Java/absoluteLatest) ## Overview @@ -10,9 +10,9 @@ It provides support for both container options and executable options for the Ja ## Prerequisites -- This integration requires the [OpenTelemetry Agent for Java](https://opentelemetry.io/docs/zero-code/java/agent/) to be downloaded and placed in the `agents` directory in the root of the project. Depending on your preferred shell, use either of the following commands to download the agent: +- This integration requires the [OpenTelemetry Agent for Java](https://opentelemetry.io/docs/zero-code/java/agent/) to be downloaded and placed in the `agents` directory in the root of the project. Depending on your preferred shell, use either of the following commands to download the agent: - **For bash/zsh** + **For bash/zsh** ```bash # bash/zsh @@ -21,7 +21,7 @@ It provides support for both container options and executable options for the Ja https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar ``` - **For PowerShell** + **For PowerShell** ```powershell # PowerShell @@ -34,7 +34,7 @@ It provides support for both container options and executable options for the Ja ## Usage !!! note - This integration requires your Java/Spring application to be compiled and built through Maven, Gradle or any other build tool that generates a JAR file. +This integration requires your Java/Spring application to be compiled and built through Maven, Gradle or any other build tool that generates a JAR file. ### Use the containerized Spring app @@ -63,13 +63,13 @@ builder.Build().Run(); Here are the details of `JavaAppContainerResourceOptions`: -- `ContainerRegistry`: The container registry URL. Default is `docker.io`. -- `ContainerImageName`: The name of the container image that contains the Spring app. It should include the repository name and the image name. -- `ContainerImageTag`: The tag of the container image. Default is `latest`. -- `Port`: The port number that the Spring app listens on. Default is `8080`. -- `TargetPort`: The port number that the Spring app listens on inside the container. Default is `8080`. -- `OtelAgentPath`: The path to the OpenTelemetry Java agent in the container image, relative to the project root. -- `Args`: The arguments to pass to the Java/Spring application. +- `ContainerRegistry`: The container registry URL. Default is `docker.io`. +- `ContainerImageName`: The name of the container image that contains the Spring app. It should include the repository name and the image name. +- `ContainerImageTag`: The tag of the container image. Default is `latest`. +- `Port`: The port number that the Spring app listens on. Default is `8080`. +- `TargetPort`: The port number that the Spring app listens on inside the container. Default is `8080`. +- `OtelAgentPath`: The path to the OpenTelemetry Java agent in the container image, relative to the project root. +- `Args`: The arguments to pass to the Java/Spring application. ### Use the executable Spring app @@ -80,7 +80,7 @@ var builder = DistributedApplication.CreateBuilder(args); // Define the executable Spring app directly from the JAR file var executableapp = builder.AddSpringApp("executableapp", - workingDirectory: "../CommunityToolkit.Aspire.Hosting.Java.Spring.Maven", + workingDirectory: "../Aspire.CommunityToolkit.Hosting.Java.Spring.Maven", new JavaAppExecutableResourceOptions() { ApplicationName = "target/app.jar", @@ -106,10 +106,10 @@ builder.Build().Run(); Here are the details of `JavaAppExecutableResourceOptions`: -- `ApplicationName`: The name of the JAR file that contains the Spring app. Default is `target/app.jar`. -- `Port`: The port number that the Spring app listens on. Default is `8080`. -- `OtelAgentPath`: The path to the OpenTelemetry Java agent in the container image, relative to the Java/Spring app directory. -- `Args`: The arguments to pass to the Java/Spring application. +- `ApplicationName`: The name of the JAR file that contains the Spring app. Default is `target/app.jar`. +- `Port`: The port number that the Spring app listens on. Default is `8080`. +- `OtelAgentPath`: The path to the OpenTelemetry Java agent in the container image, relative to the Java/Spring app directory. +- `Args`: The arguments to pass to the Java/Spring application. #### When using `PublishAsDockerFile` @@ -143,3 +143,4 @@ EXPOSE ${SERVER_PORT} ... ``` + diff --git a/docs/integrations/hosting-nodejs-extensions.md b/docs/integrations/hosting-nodejs-extensions.md index 388ce249..37b4fa08 100644 --- a/docs/integrations/hosting-nodejs-extensions.md +++ b/docs/integrations/hosting-nodejs-extensions.md @@ -1,6 +1,6 @@ -# CommunityToolkit.Aspire.Hosting.NodeJS.Extensions +# Aspire.CommunityToolkit.Hosting.NodeJS.Extensions -[![CommunityToolkit.Aspire.Hosting.NodeJS.Extensions](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/) | [![CommunityToolkit.Aspire.Hosting.NodeJS.Extensions (latest)]()](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/absoluteLatest) +[![Aspire.CommunityToolkit.Hosting.NodeJS.Extensions](https://img.shields.io/nuget/v/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions)](https://nuget.org/packages/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/) | [![Aspire.CommunityToolkit.Hosting.NodeJS.Extensions (latest)]()](https://nuget.org/packages/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/absoluteLatest) ## Overview @@ -13,7 +13,7 @@ This package provides some extensions on the .NET Aspire [NodeJS hosting package ## Usage ```csharp -using CommunityToolkit.Aspire.Hosting.NodeJS.Extensions; +using Aspire.CommunityToolkit.Hosting.NodeJS.Extensions; var builder = DistributedApplication.CreateBuilder(args); @@ -28,3 +28,4 @@ builder.AddViteApp("pnpm-demo", packageManager: "pnpm") builder.Build().Run(); ``` + diff --git a/docs/integrations/hosting-ollama.md b/docs/integrations/hosting-ollama.md index 64829c2b..7d3a77b1 100644 --- a/docs/integrations/hosting-ollama.md +++ b/docs/integrations/hosting-ollama.md @@ -1,6 +1,6 @@ -# CommunityToolkit.Aspire.Hosting.Ollama +# Aspire.CommunityToolkit.Hosting.Ollama -[![CommunityToolkit.Aspire.Ollama](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Ollama)](https://nuget.org/packages/CommunityToolkit.Aspire.Ollama/) | [![CommunityToolkit.Aspire.Ollama (latest)]()](https://nuget.org/packages/CommunityToolkit.Aspire.Ollama/absoluteLatest) +[![Aspire.CommunityToolkit.Ollama](https://img.shields.io/nuget/v/Aspire.CommunityToolkit.Ollama)](https://nuget.org/packages/Aspire.CommunityToolkit.Ollama/) | [![Aspire.CommunityToolkit.Ollama (latest)]()](https://nuget.org/packages/Aspire.CommunityToolkit.Ollama/absoluteLatest) ## Overview @@ -49,3 +49,4 @@ var connectionString = builder.Configuration.GetConnectionString("Ollama"); ``` You can then call any of the Ollama endpoints through this connection string. We recommend using the [OllamaSharp](https://www.nuget.org/packages/OllamaSharp) client to do this. + diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/CommunityToolkit.Aspire.Hosting.Java.ApiApp.csproj b/examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/CommunityToolkit.Aspire.Hosting.Java.ApiApp.csproj index e0f7dc57..8a210bb6 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/CommunityToolkit.Aspire.Hosting.Java.ApiApp.csproj +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/CommunityToolkit.Aspire.Hosting.Java.ApiApp.csproj @@ -6,7 +6,7 @@ - + diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/CommunityToolkit.Aspire.Java.ApiApp.http b/examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/CommunityToolkit.Aspire.Java.ApiApp.http index 5143c71c..a4b10984 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/CommunityToolkit.Aspire.Java.ApiApp.http +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/CommunityToolkit.Aspire.Java.ApiApp.http @@ -1,6 +1,6 @@ -@CommunityToolkit.Aspire.ApiApp_HostAddress = http://localhost:5236 +@Aspire.CommunityToolkit.ApiApp_HostAddress = http://localhost:5236 -GET {{CommunityToolkit.Aspire.ApiApp_HostAddress}}/weatherforecast/ +GET {{Aspire.CommunityToolkit.ApiApp_HostAddress}}/weatherforecast/ Accept: application/json ### diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/CommunityToolkit.Aspire.Hosting.Java.AppHost.csproj b/examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/CommunityToolkit.Aspire.Hosting.Java.AppHost.csproj index 921ad528..0a27293f 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/CommunityToolkit.Aspire.Hosting.Java.AppHost.csproj +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/CommunityToolkit.Aspire.Hosting.Java.AppHost.csproj @@ -6,7 +6,7 @@ 8b981031-6978-4b8e-b276-711918308102 - $(MSBuildProjectDirectory)/../CommunityToolkit.Aspire.Hosting.Java.Spring.Maven + $(MSBuildProjectDirectory)/../Aspire.CommunityToolkit.Hosting.Java.Spring.Maven @@ -14,9 +14,9 @@ - - - + + + diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/Program.cs b/examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/Program.cs index d5033d5c..0ebf3abc 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/Program.cs +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/Program.cs @@ -9,7 +9,7 @@ OtelAgentPath = "/agents" }); var executableapp = builder.AddSpringApp("executableapp", - workingDirectory: "../CommunityToolkit.Aspire.Hosting.Java.Spring.Maven", + workingDirectory: "../Aspire.CommunityToolkit.Hosting.Java.Spring.Maven", new JavaAppExecutableResourceOptions() { ApplicationName = "target/spring-maven-0.0.1-SNAPSHOT.jar", diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/IApiClient.cs b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/IApiClient.cs index b4723ac6..e66cbbe3 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/IApiClient.cs +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/IApiClient.cs @@ -1,6 +1,6 @@ -using CommunityToolkit.Aspire.Hosting.Java.WebApp.Models; +using Aspire.CommunityToolkit.Hosting.Java.WebApp.Models; -namespace CommunityToolkit.Aspire.Hosting.Java.WebApp.Clients; +namespace Aspire.CommunityToolkit.Hosting.Java.WebApp.Clients; public interface IApiClient { diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/SpringApiClient.cs b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/SpringApiClient.cs index c09dcbf3..c5754659 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/SpringApiClient.cs +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/SpringApiClient.cs @@ -1,6 +1,6 @@ -using CommunityToolkit.Aspire.Hosting.Java.WebApp.Models; +using Aspire.CommunityToolkit.Hosting.Java.WebApp.Models; -namespace CommunityToolkit.Aspire.Hosting.Java.WebApp.Clients; +namespace Aspire.CommunityToolkit.Hosting.Java.WebApp.Clients; public class SpringContainerClient(HttpClient http) : IApiClient { diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/WebApiClient.cs b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/WebApiClient.cs index b87a02dc..27c0afce 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/WebApiClient.cs +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/WebApiClient.cs @@ -1,6 +1,6 @@ -using CommunityToolkit.Aspire.Hosting.Java.WebApp.Models; +using Aspire.CommunityToolkit.Hosting.Java.WebApp.Models; -namespace CommunityToolkit.Aspire.Hosting.Java.WebApp.Clients; +namespace Aspire.CommunityToolkit.Hosting.Java.WebApp.Clients; public class WebApiClient(HttpClient http) : IApiClient { diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/CommunityToolkit.Aspire.Hosting.Java.WebApp.csproj b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/CommunityToolkit.Aspire.Hosting.Java.WebApp.csproj index 0448f202..35483eb0 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/CommunityToolkit.Aspire.Hosting.Java.WebApp.csproj +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/CommunityToolkit.Aspire.Hosting.Java.WebApp.csproj @@ -1,7 +1,7 @@ - + diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/App.razor b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/App.razor index 653b5138..f3ab32db 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/App.razor +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/App.razor @@ -7,7 +7,7 @@ - + diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Layout/NavMenu.razor b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Layout/NavMenu.razor index 36330d48..ef0e066a 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Layout/NavMenu.razor +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Layout/NavMenu.razor @@ -1,6 +1,6 @@  diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Pages/Weather.razor b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Pages/Weather.razor index 5a5c1e82..6e69fe98 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Pages/Weather.razor +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Pages/Weather.razor @@ -1,5 +1,5 @@ @page "/weather" -@using CommunityToolkit.Aspire.Hosting.Java.WebApp.Components.UI +@using Aspire.CommunityToolkit.Hosting.Java.WebApp.Components.UI Weather diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/UI/WeatherComponent.razor b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/UI/WeatherComponent.razor index fd8f7291..e13d38f8 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/UI/WeatherComponent.razor +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/UI/WeatherComponent.razor @@ -1,6 +1,6 @@ -@using CommunityToolkit.Aspire.Hosting.Java.WebApp.Clients -@using CommunityToolkit.Aspire.Hosting.Java.WebApp.Models -@using CommunityToolkit.Aspire.Hosting.Java.WebApp.Services +@using Aspire.CommunityToolkit.Hosting.Java.WebApp.Clients +@using Aspire.CommunityToolkit.Hosting.Java.WebApp.Models +@using Aspire.CommunityToolkit.Hosting.Java.WebApp.Services @attribute [StreamRendering] @inject IApiClientService Api @@ -15,16 +15,16 @@ else { - - - - - - - - - - @foreach (var forecast in forecasts) + + + + + + + + + + @foreach (var forecast in forecasts) { diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/_Imports.razor b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/_Imports.razor index 276af1a9..494a9a01 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/_Imports.razor +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/_Imports.razor @@ -6,5 +6,5 @@ @using static Microsoft.AspNetCore.Components.Web.RenderMode @using Microsoft.AspNetCore.Components.Web.Virtualization @using Microsoft.JSInterop -@using CommunityToolkit.Aspire.Hosting.Java.WebApp -@using CommunityToolkit.Aspire.Hosting.Java.WebApp.Components +@using Aspire.CommunityToolkit.Hosting.Java.WebApp +@using Aspire.CommunityToolkit.Hosting.Java.WebApp.Components diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Models/WeatherForecast.cs b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Models/WeatherForecast.cs index e347189c..efef698d 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Models/WeatherForecast.cs +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Models/WeatherForecast.cs @@ -1,4 +1,4 @@ -namespace CommunityToolkit.Aspire.Hosting.Java.WebApp.Models; +namespace Aspire.CommunityToolkit.Hosting.Java.WebApp.Models; public class WeatherForecast { diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Program.cs b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Program.cs index 8b3ae393..fb3a3f45 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Program.cs +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Program.cs @@ -1,6 +1,6 @@ -using CommunityToolkit.Aspire.Hosting.Java.WebApp.Clients; -using CommunityToolkit.Aspire.Hosting.Java.WebApp.Services; -using CommunityToolkit.Aspire.Hosting.Java.WebApp.Components; +using Aspire.CommunityToolkit.Hosting.Java.WebApp.Clients; +using Aspire.CommunityToolkit.Hosting.Java.WebApp.Services; +using Aspire.CommunityToolkit.Hosting.Java.WebApp.Components; var builder = WebApplication.CreateBuilder(args); diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Services/ApiClientService.cs b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Services/ApiClientService.cs index 58d3d4b0..10c01054 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Services/ApiClientService.cs +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Services/ApiClientService.cs @@ -1,7 +1,7 @@ -using CommunityToolkit.Aspire.Hosting.Java.WebApp.Clients; -using CommunityToolkit.Aspire.Hosting.Java.WebApp.Models; +using Aspire.CommunityToolkit.Hosting.Java.WebApp.Clients; +using Aspire.CommunityToolkit.Hosting.Java.WebApp.Models; -namespace CommunityToolkit.Aspire.Hosting.Java.WebApp.Services; +namespace Aspire.CommunityToolkit.Hosting.Java.WebApp.Services; public interface IApiClientService { diff --git a/examples/java/azure.yaml b/examples/java/azure.yaml index ae4c4c0a..250bbbfc 100644 --- a/examples/java/azure.yaml +++ b/examples/java/azure.yaml @@ -1,8 +1,9 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/Azure/azure-dev/main/schemas/v1.0/azure.yaml.json name: aspire-contribs -services: +services: app: language: dotnet - project: ./CommunityToolkit.Aspire.Hosting.Java.AppHost/CommunityToolkit.Aspire.Hosting.Java.AppHost.csproj + project: ./Aspire.CommunityToolkit.Hosting.Java.AppHost/Aspire.CommunityToolkit.Hosting.Java.AppHost.csproj host: containerapp + diff --git a/examples/nodejs-ext/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost.csproj b/examples/nodejs-ext/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost.csproj index d3011a7f..13c50330 100644 --- a/examples/nodejs-ext/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost.csproj +++ b/examples/nodejs-ext/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost.csproj @@ -14,7 +14,7 @@ - + diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.AppHost/CommunityToolkit.Aspire.Hosting.Ollama.AppHost.csproj b/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.AppHost/CommunityToolkit.Aspire.Hosting.Ollama.AppHost.csproj index ab63d0f7..61260d4b 100644 --- a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.AppHost/CommunityToolkit.Aspire.Hosting.Ollama.AppHost.csproj +++ b/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.AppHost/CommunityToolkit.Aspire.Hosting.Ollama.AppHost.csproj @@ -10,8 +10,8 @@ - - + + diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/CommunityToolkit.Aspire.Hosting.Ollama.Web.csproj b/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/CommunityToolkit.Aspire.Hosting.Ollama.Web.csproj index dacbeca7..9046358e 100644 --- a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/CommunityToolkit.Aspire.Hosting.Ollama.Web.csproj +++ b/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/CommunityToolkit.Aspire.Hosting.Ollama.Web.csproj @@ -7,7 +7,7 @@ - + diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/App.razor b/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/App.razor index f1ad66f3..8b093545 100644 --- a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/App.razor +++ b/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/App.razor @@ -7,7 +7,7 @@ - + diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Layout/NavMenu.razor b/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Layout/NavMenu.razor index 92d24432..6c4320c7 100644 --- a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Layout/NavMenu.razor +++ b/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Layout/NavMenu.razor @@ -1,6 +1,6 @@  diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/_Imports.razor b/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/_Imports.razor index c4f8e0ad..c658dc97 100644 --- a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/_Imports.razor +++ b/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/_Imports.razor @@ -7,5 +7,5 @@ @using Microsoft.AspNetCore.Components.Web.Virtualization @using Microsoft.AspNetCore.OutputCaching @using Microsoft.JSInterop -@using CommunityToolkit.Aspire.Hosting.Ollama.Web -@using CommunityToolkit.Aspire.Hosting.Ollama.Web.Components +@using Aspire.CommunityToolkit.Hosting.Ollama.Web +@using Aspire.CommunityToolkit.Hosting.Ollama.Web.Components diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Program.cs b/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Program.cs index 4ba8f745..7bb95485 100644 --- a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Program.cs +++ b/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Program.cs @@ -1,5 +1,5 @@ -using CommunityToolkit.Aspire.Hosting.Ollama.Web; -using CommunityToolkit.Aspire.Hosting.Ollama.Web.Components; +using Aspire.CommunityToolkit.Hosting.Ollama.Web; +using Aspire.CommunityToolkit.Hosting.Ollama.Web.Components; using OllamaSharp; var builder = WebApplication.CreateBuilder(args); diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/WeatherApiClient.cs b/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/WeatherApiClient.cs index 66b81e1d..dc029994 100644 --- a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/WeatherApiClient.cs +++ b/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/WeatherApiClient.cs @@ -1,4 +1,4 @@ -namespace CommunityToolkit.Aspire.Hosting.Ollama.Web; +namespace Aspire.CommunityToolkit.Hosting.Ollama.Web; public class WeatherApiClient(HttpClient httpClient) { diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.ApiApp/CommunityToolkit.Aspire.StaticWebApps.ApiApp.csproj b/examples/swa/CommunityToolkit.Aspire.StaticWebApps.ApiApp/CommunityToolkit.Aspire.StaticWebApps.ApiApp.csproj index 771e2673..46439269 100644 --- a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.ApiApp/CommunityToolkit.Aspire.StaticWebApps.ApiApp.csproj +++ b/examples/swa/CommunityToolkit.Aspire.StaticWebApps.ApiApp/CommunityToolkit.Aspire.StaticWebApps.ApiApp.csproj @@ -1,7 +1,7 @@ - + diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.AppHost/CommunityToolkit.Aspire.StaticWebApps.AppHost.csproj b/examples/swa/CommunityToolkit.Aspire.StaticWebApps.AppHost/CommunityToolkit.Aspire.StaticWebApps.AppHost.csproj index 4e997863..52b7bbbe 100644 --- a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.AppHost/CommunityToolkit.Aspire.StaticWebApps.AppHost.csproj +++ b/examples/swa/CommunityToolkit.Aspire.StaticWebApps.AppHost/CommunityToolkit.Aspire.StaticWebApps.AppHost.csproj @@ -12,8 +12,8 @@ - - + + diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.AppHost/Program.cs b/examples/swa/CommunityToolkit.Aspire.StaticWebApps.AppHost/Program.cs index ae594087..e4aca958 100644 --- a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.AppHost/Program.cs +++ b/examples/swa/CommunityToolkit.Aspire.StaticWebApps.AppHost/Program.cs @@ -3,7 +3,7 @@ var api = builder.AddProject("api"); var web = builder - .AddNpmApp("web", Path.Combine("..", "CommunityToolkit.Aspire.StaticWebApps.WebApp"), "dev") + .AddNpmApp("web", Path.Combine("..", "Aspire.CommunityToolkit.StaticWebApps.WebApp"), "dev") .WithHttpEndpoint(env: "PORT") .WithExternalHttpEndpoints(); diff --git a/src/CommunityToolkit.Aspire.Hosting.Java/JavaAppHostingExtension.cs b/src/CommunityToolkit.Aspire.Hosting.Java/JavaAppHostingExtension.cs index 3e8c0555..29e61e58 100644 --- a/src/CommunityToolkit.Aspire.Hosting.Java/JavaAppHostingExtension.cs +++ b/src/CommunityToolkit.Aspire.Hosting.Java/JavaAppHostingExtension.cs @@ -1,6 +1,6 @@ using System.Globalization; -using CommunityToolkit.Aspire.Hosting.Java.Utils; +using Aspire.CommunityToolkit.Hosting.Java.Utils; using Aspire.Hosting.ApplicationModel; namespace Aspire.Hosting; diff --git a/src/CommunityToolkit.Aspire.Hosting.Java/README.md b/src/CommunityToolkit.Aspire.Hosting.Java/README.md index 3c4e6a4e..82e209a4 100644 --- a/src/CommunityToolkit.Aspire.Hosting.Java/README.md +++ b/src/CommunityToolkit.Aspire.Hosting.Java/README.md @@ -1,20 +1,20 @@ -# CommunityToolkit.Aspire.Hosting.Java +# Aspire.CommunityToolkit.Hosting.Java This enables either containerised or executable Java app to be integrated with .NET Aspire. ## Prerequisites -- [JDK 17+](https://learn.microsoft.com/java/openjdk/download) -- [Springboot CLI](https://docs.spring.io/spring-boot/installing.html#getting-started.installing.cli) -- [Apache Maven](https://maven.apache.org) -- [Docker](https://docs.docker.com/get-docker/) +- [JDK 17+](https://learn.microsoft.com/java/openjdk/download) +- [Springboot CLI](https://docs.spring.io/spring-boot/installing.html#getting-started.installing.cli) +- [Apache Maven](https://maven.apache.org) +- [Docker](https://docs.docker.com/get-docker/) ## Quickstart 1. Run .NET Aspire dashboard: ```bash - dotnet watch run --project ./examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost + dotnet watch run --project ./examples/java/Aspire.CommunityToolkit.Hosting.Java.AppHost ``` ## More detailed steps (Optional) @@ -37,7 +37,7 @@ This enables either containerised or executable Java app to be integrated with . 1. Build the Spring app with Maven: ```bash - pushd ./examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven + pushd ./examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven ./mvnw clean package @@ -47,7 +47,7 @@ This enables either containerised or executable Java app to be integrated with . 1. Build a container image for the Spring app: ```bash - pushd ./examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven + pushd ./examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven docker build . -t aspire-spring-maven-sample:latest @@ -98,3 +98,4 @@ This enables either containerised or executable Java app to be integrated with . ``` Follow the instruction for the rest of the deployment process. + diff --git a/src/CommunityToolkit.Aspire.Hosting.Java/Utils/PathNormalizer.cs b/src/CommunityToolkit.Aspire.Hosting.Java/Utils/PathNormalizer.cs index 225c4eb1..15140c30 100644 --- a/src/CommunityToolkit.Aspire.Hosting.Java/Utils/PathNormalizer.cs +++ b/src/CommunityToolkit.Aspire.Hosting.Java/Utils/PathNormalizer.cs @@ -1,4 +1,4 @@ -namespace CommunityToolkit.Aspire.Hosting.Java.Utils; +namespace Aspire.CommunityToolkit.Hosting.Java.Utils; /// /// This represents the utility entity for normalizing paths. diff --git a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NodeJSHostingExtensions.cs b/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NodeJSHostingExtensions.cs index c6efbd44..9ee02c52 100644 --- a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NodeJSHostingExtensions.cs +++ b/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NodeJSHostingExtensions.cs @@ -1,7 +1,7 @@ using Aspire.Hosting.ApplicationModel; using Aspire.Hosting.Lifecycle; using Aspire.Hosting.Utils; -using CommunityToolkit.Aspire.Hosting.NodeJS.Extensions; +using Aspire.CommunityToolkit.Hosting.NodeJS.Extensions; using Microsoft.Extensions.Hosting; namespace Aspire.Hosting; diff --git a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NodePackageInstaller.cs b/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NodePackageInstaller.cs index 19996468..bfd1a382 100644 --- a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NodePackageInstaller.cs +++ b/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NodePackageInstaller.cs @@ -3,7 +3,7 @@ using Microsoft.Extensions.Logging; using System.Diagnostics; -namespace CommunityToolkit.Aspire.Hosting.NodeJS.Extensions; +namespace Aspire.CommunityToolkit.Hosting.NodeJS.Extensions; /// /// Represents a Node package installer. diff --git a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NpmPackageInstallerLifecycleHook.cs b/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NpmPackageInstallerLifecycleHook.cs index bd910297..dde47472 100644 --- a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NpmPackageInstallerLifecycleHook.cs +++ b/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NpmPackageInstallerLifecycleHook.cs @@ -2,7 +2,7 @@ using Aspire.Hosting.ApplicationModel; using Aspire.Hosting.Lifecycle; -namespace CommunityToolkit.Aspire.Hosting.NodeJS.Extensions; +namespace Aspire.CommunityToolkit.Hosting.NodeJS.Extensions; /// /// Represents a lifecycle hook for installing packages using npm as the package manager. diff --git a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/PnpmPackageInstallerLifecycleHook.cs b/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/PnpmPackageInstallerLifecycleHook.cs index 87386b73..05d13956 100644 --- a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/PnpmPackageInstallerLifecycleHook.cs +++ b/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/PnpmPackageInstallerLifecycleHook.cs @@ -2,7 +2,7 @@ using Aspire.Hosting.ApplicationModel; using Aspire.Hosting.Lifecycle; -namespace CommunityToolkit.Aspire.Hosting.NodeJS.Extensions; +namespace Aspire.CommunityToolkit.Hosting.NodeJS.Extensions; /// /// An that installs Node.js packages using the pnpm package manager before the Node.js resource starts. diff --git a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/YarnPackageInstallerLifecycleHook.cs b/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/YarnPackageInstallerLifecycleHook.cs index d40aa9ad..5573fdfe 100644 --- a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/YarnPackageInstallerLifecycleHook.cs +++ b/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/YarnPackageInstallerLifecycleHook.cs @@ -2,7 +2,7 @@ using Aspire.Hosting.ApplicationModel; using Aspire.Hosting.Lifecycle; -namespace CommunityToolkit.Aspire.Hosting.NodeJS.Extensions; +namespace Aspire.CommunityToolkit.Hosting.NodeJS.Extensions; /// /// An that installs Node.js packages using the yarn package manager before the Node.js resource starts. diff --git a/src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaContainerImageTags.cs b/src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaContainerImageTags.cs index fbc5c76f..5442b40f 100644 --- a/src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaContainerImageTags.cs +++ b/src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaContainerImageTags.cs @@ -1,4 +1,4 @@ -namespace CommunityToolkit.Aspire.Hosting.Ollama; +namespace Aspire.CommunityToolkit.Hosting.Ollama; internal static class OllamaContainerImageTags { diff --git a/src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResourceBuilderExtensions.cs b/src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResourceBuilderExtensions.cs index bd73d1d9..371a1635 100644 --- a/src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResourceBuilderExtensions.cs +++ b/src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResourceBuilderExtensions.cs @@ -1,7 +1,7 @@ using Aspire.Hosting.ApplicationModel; using Aspire.Hosting.Lifecycle; using Aspire.Hosting.Utils; -using CommunityToolkit.Aspire.Hosting.Ollama; +using Aspire.CommunityToolkit.Hosting.Ollama; namespace Aspire.Hosting; @@ -10,41 +10,41 @@ namespace Aspire.Hosting; /// public static class OllamaResourceBuilderExtensions { - /// - /// Adds the Ollama container to the application model. - /// - /// The . - /// The name of the resource. This name will be used as the connection string name when referenced in a dependency. - /// An optional fixed port to bind to the Ollama container. This will be provided randomly by Aspire if not set. - /// The name of the LLM to download on initial startup. llama3 by default. This can be set to null to not download any models. - /// A reference to the . - public static IResourceBuilder AddOllama(this IDistributedApplicationBuilder builder, - string name = "Ollama", int? port = null, string modelName = "llama3") - { - ArgumentNullException.ThrowIfNull(builder, nameof(builder)); - ArgumentNullException.ThrowIfNull(name, nameof(name)); + /// + /// Adds the Ollama container to the application model. + /// + /// The . + /// The name of the resource. This name will be used as the connection string name when referenced in a dependency. + /// An optional fixed port to bind to the Ollama container. This will be provided randomly by Aspire if not set. + /// The name of the LLM to download on initial startup. llama3 by default. This can be set to null to not download any models. + /// A reference to the . + public static IResourceBuilder AddOllama(this IDistributedApplicationBuilder builder, + string name = "Ollama", int? port = null, string modelName = "llama3") + { + ArgumentNullException.ThrowIfNull(builder, nameof(builder)); + ArgumentNullException.ThrowIfNull(name, nameof(name)); - builder.Services.TryAddLifecycleHook(); - var resource = new OllamaResource(name, modelName); - return builder.AddResource(resource) - .WithAnnotation(new ContainerImageAnnotation { Image = OllamaContainerImageTags.Image, Tag = OllamaContainerImageTags.Tag, Registry = OllamaContainerImageTags.Registry }) - .WithHttpEndpoint(port: port, targetPort: 11434, name: OllamaResource.OllamaEndpointName) - .ExcludeFromManifest(); - } + builder.Services.TryAddLifecycleHook(); + var resource = new OllamaResource(name, modelName); + return builder.AddResource(resource) + .WithAnnotation(new ContainerImageAnnotation { Image = OllamaContainerImageTags.Image, Tag = OllamaContainerImageTags.Tag, Registry = OllamaContainerImageTags.Registry }) + .WithHttpEndpoint(port: port, targetPort: 11434, name: OllamaResource.OllamaEndpointName) + .ExcludeFromManifest(); + } - /// - /// Adds a data volume to the Ollama container. - /// - /// The . - /// The name of the volume. Defaults to an auto-generated name based on the application and resource names. - /// A flag that indicates if this is a read-only volume. - /// A reference to the . - public static IResourceBuilder WithDataVolume(this IResourceBuilder builder, string? name = null, bool isReadOnly = false) - { - ArgumentNullException.ThrowIfNull(builder, nameof(builder)); + /// + /// Adds a data volume to the Ollama container. + /// + /// The . + /// The name of the volume. Defaults to an auto-generated name based on the application and resource names. + /// A flag that indicates if this is a read-only volume. + /// A reference to the . + public static IResourceBuilder WithDataVolume(this IResourceBuilder builder, string? name = null, bool isReadOnly = false) + { + ArgumentNullException.ThrowIfNull(builder, nameof(builder)); #pragma warning disable CTASPIRE001 - return builder.WithVolume(name ?? VolumeNameGenerator.CreateVolumeName(builder, "ollama"), "/root/.ollama", isReadOnly); + return builder.WithVolume(name ?? VolumeNameGenerator.CreateVolumeName(builder, "ollama"), "/root/.ollama", isReadOnly); #pragma warning restore CTASPIRE001 - } + } } diff --git a/src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResourceLifecycleHook.cs b/src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResourceLifecycleHook.cs index 1d5bd76f..2201e70d 100644 --- a/src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResourceLifecycleHook.cs +++ b/src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResourceLifecycleHook.cs @@ -6,7 +6,7 @@ using OllamaSharp.Models; using System.Globalization; -namespace CommunityToolkit.Aspire.Hosting.Ollama; +namespace Aspire.CommunityToolkit.Hosting.Ollama; internal class OllamaResourceLifecycleHook( ResourceLoggerService loggerService, ResourceNotificationService notificationService, diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 3f03f56b..50c1fafd 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -7,7 +7,7 @@ Microsoft Microsoft en - CommunityToolkit.Aspire ($(NetVersion)) + Aspire.CommunityToolkit ($(NetVersion)) © Microsoft Corporation. All rights reserved. MIT https://github.com/CommunityToolkit/Aspire diff --git a/tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests.csproj b/tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests.csproj index a692760d..a6602d63 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests.csproj +++ b/tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests.csproj @@ -6,9 +6,9 @@ - - - + + + diff --git a/tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/ResourceCreationTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/ResourceCreationTests.cs index 1706e3b5..7746ec77 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/ResourceCreationTests.cs +++ b/tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/ResourceCreationTests.cs @@ -1,9 +1,9 @@ using Aspire.Hosting; using Aspire.Hosting.ApplicationModel; -using CommunityToolkit.Aspire.Testing; +using Aspire.CommunityToolkit.Testing; using Microsoft.Extensions.DependencyInjection; -namespace CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests; +namespace Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests; public class ResourceCreationTests { diff --git a/tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/SwaHostingComponentTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/SwaHostingComponentTests.cs index 91353260..72e398d3 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/SwaHostingComponentTests.cs +++ b/tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/SwaHostingComponentTests.cs @@ -1,9 +1,9 @@ -using CommunityToolkit.Aspire.Testing; +using Aspire.CommunityToolkit.Testing; using FluentAssertions; using System.Net; using System.Net.Http.Json; -namespace CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests; +namespace Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests; #pragma warning disable CTASPIRE001 public class SwaHostingComponentTests(AspireIntegrationTestFixture fixture) : IClassFixture> diff --git a/tests/CommunityToolkit.Aspire.Hosting.Java.Tests/CommunityToolkit.Aspire.Hosting.Java.Tests.csproj b/tests/CommunityToolkit.Aspire.Hosting.Java.Tests/CommunityToolkit.Aspire.Hosting.Java.Tests.csproj index 97c85c32..f66c037a 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.Java.Tests/CommunityToolkit.Aspire.Hosting.Java.Tests.csproj +++ b/tests/CommunityToolkit.Aspire.Hosting.Java.Tests/CommunityToolkit.Aspire.Hosting.Java.Tests.csproj @@ -6,8 +6,8 @@ - - + + diff --git a/tests/CommunityToolkit.Aspire.Hosting.Java.Tests/JavaHostingComponentTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Java.Tests/JavaHostingComponentTests.cs index cc59f069..92cfde17 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.Java.Tests/JavaHostingComponentTests.cs +++ b/tests/CommunityToolkit.Aspire.Hosting.Java.Tests/JavaHostingComponentTests.cs @@ -1,7 +1,7 @@ -using CommunityToolkit.Aspire.Testing; +using Aspire.CommunityToolkit.Testing; using FluentAssertions; -namespace CommunityToolkit.Aspire.Hosting.Java.Tests; +namespace Aspire.CommunityToolkit.Hosting.Java.Tests; #pragma warning disable CTASPIRE001 public class JavaHostingComponentTests(AspireIntegrationTestFixture fixture) : IClassFixture> diff --git a/tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/AppHostTests.cs b/tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/AppHostTests.cs index a4275455..16d4299b 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/AppHostTests.cs +++ b/tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/AppHostTests.cs @@ -1,7 +1,7 @@ -using CommunityToolkit.Aspire.Testing; +using Aspire.CommunityToolkit.Testing; using FluentAssertions; -namespace CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests; +namespace Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests; #pragma warning disable CTASPIRE001 public class AppHostTests(AspireIntegrationTestFixture fixture) : IClassFixture> diff --git a/tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests.csproj b/tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests.csproj index 8f8020c5..1dfe268e 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests.csproj +++ b/tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests.csproj @@ -9,8 +9,8 @@ - - + + diff --git a/tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/ResourceCreationTests.cs b/tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/ResourceCreationTests.cs index aaddbf1a..d18fce37 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/ResourceCreationTests.cs +++ b/tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/ResourceCreationTests.cs @@ -1,7 +1,7 @@ using Microsoft.AspNetCore.Http; using System.Diagnostics; -namespace CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests; +namespace Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests; public class ResourceCreationTests { diff --git a/tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/AppHostTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/AppHostTests.cs index 93a9c9e8..86bc5771 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/AppHostTests.cs +++ b/tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/AppHostTests.cs @@ -1,7 +1,7 @@ -using CommunityToolkit.Aspire.Testing; +using Aspire.CommunityToolkit.Testing; using FluentAssertions; -namespace CommunityToolkit.Aspire.Hosting.Ollama.Tests; +namespace Aspire.CommunityToolkit.Hosting.Ollama.Tests; public class AppHostTests(AspireIntegrationTestFixture fixture) : IClassFixture> { diff --git a/tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests.csproj b/tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests.csproj index f725b94d..3850f873 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests.csproj +++ b/tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests.csproj @@ -1,9 +1,9 @@ - - - + + + diff --git a/tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/ResourceCreationTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/ResourceCreationTests.cs index 6cafc5d4..c1b7ea94 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/ResourceCreationTests.cs +++ b/tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/ResourceCreationTests.cs @@ -1,6 +1,6 @@ using Aspire.Hosting; -namespace CommunityToolkit.Aspire.Hosting.Ollama.Tests; +namespace Aspire.CommunityToolkit.Hosting.Ollama.Tests; public class ResourceCreationTests { diff --git a/tests/CommunityToolkit.Aspire.Testing/AspireIntegrationTest.cs b/tests/CommunityToolkit.Aspire.Testing/AspireIntegrationTest.cs index a654cf68..77aa2126 100644 --- a/tests/CommunityToolkit.Aspire.Testing/AspireIntegrationTest.cs +++ b/tests/CommunityToolkit.Aspire.Testing/AspireIntegrationTest.cs @@ -2,7 +2,7 @@ using Aspire.Hosting.ApplicationModel; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -namespace CommunityToolkit.Aspire.Testing; +namespace Aspire.CommunityToolkit.Testing; public class AspireIntegrationTestFixture() : DistributedApplicationFactory(typeof(TEntryPoint), []), IAsyncLifetime where TEntryPoint : class { diff --git a/tests/CommunityToolkit.Aspire.Testing/LoggerNotificationExtensions.cs b/tests/CommunityToolkit.Aspire.Testing/LoggerNotificationExtensions.cs index bd9371a7..0054cef6 100644 --- a/tests/CommunityToolkit.Aspire.Testing/LoggerNotificationExtensions.cs +++ b/tests/CommunityToolkit.Aspire.Testing/LoggerNotificationExtensions.cs @@ -6,7 +6,7 @@ using Microsoft.Extensions.Logging; using System.Diagnostics.CodeAnalysis; -namespace CommunityToolkit.Aspire.Testing; +namespace Aspire.CommunityToolkit.Testing; public static class LoggerNotificationExtensions { From 1a946295d34118f0f98e1ff4fc2ae1ed4277325d Mon Sep 17 00:00:00 2001 From: Aaron Powell Date: Tue, 24 Sep 2024 01:41:33 +0000 Subject: [PATCH 02/14] Moving folders and renaming files --- ...oolkit.Aspire.sln => Aspire.CommunityToolkit.sln | 0 ...ire.CommunityToolkit.Hosting.Java.ApiApp.csproj} | 0 .../Aspire.CommunityToolkit.Java.ApiApp.http} | 0 .../Program.cs | 0 .../Properties/launchSettings.json | 0 .../appsettings.json | 0 ...re.CommunityToolkit.Hosting.Java.AppHost.csproj} | 0 .../Program.cs | 0 .../Properties/launchSettings.json | 0 .../appsettings.json | 0 ...nityToolkit.Hosting.Java.ServiceDefaults.csproj} | 0 .../Extensions.cs | 0 .../.gitignore | 0 .../.mvn/wrapper/maven-wrapper.properties | 0 .../Dockerfile | 0 .../mvnw | 0 .../mvnw.cmd | 0 .../pom.xml | 0 .../spring_maven/SpringMavenApplication.java | 0 .../spring_maven/controllers/HomeController.java | 0 .../spring_maven/controllers/WeatherController.java | 0 .../spring_maven/models/WeatherForecast.java | 0 .../src/main/resources/application.properties | 0 ...ire.CommunityToolkit.Hosting.Java.WebApp.csproj} | 0 .../Clients/IApiClient.cs | 0 .../Clients/SpringApiClient.cs | 0 .../Clients/WebApiClient.cs | 0 .../Components/App.razor | 0 .../Components/Layout/MainLayout.razor | 0 .../Components/Layout/MainLayout.razor.css | 0 .../Components/Layout/NavMenu.razor | 0 .../Components/Layout/NavMenu.razor.css | 0 .../Components/Pages/Counter.razor | 0 .../Components/Pages/Error.razor | 0 .../Components/Pages/Home.razor | 0 .../Components/Pages/Weather.razor | 0 .../Components/Routes.razor | 0 .../Components/UI/WeatherComponent.razor | 0 .../Components/_Imports.razor | 0 .../Models/WeatherForecast.cs | 0 .../Program.cs | 0 .../Properties/launchSettings.json | 0 .../Services/ApiClientService.cs | 0 .../appsettings.json | 0 .../wwwroot/app.css | 0 .../wwwroot/bootstrap/bootstrap.min.css | 0 .../wwwroot/bootstrap/bootstrap.min.css.map | 0 .../wwwroot/favicon.png | Bin ...oolkit.Hosting.NodeJS.Extensions.AppHost.csproj} | 0 .../Program.cs | 0 .../Properties/launchSettings.json | 0 .../appsettings.json | 0 ....CommunityToolkit.Hosting.Ollama.AppHost.csproj} | 0 .../Program.cs | 0 .../Properties/launchSettings.json | 0 .../appsettings.json | 0 ...tyToolkit.Hosting.Ollama.ServiceDefaults.csproj} | 0 .../Extensions.cs | 0 ...pire.CommunityToolkit.Hosting.Ollama.Web.csproj} | 0 .../Components/App.razor | 0 .../Components/Layout/MainLayout.razor | 0 .../Components/Layout/MainLayout.razor.css | 0 .../Components/Layout/NavMenu.razor | 0 .../Components/Layout/NavMenu.razor.css | 0 .../Components/Pages/Error.razor | 0 .../Components/Pages/Home.razor | 0 .../Components/Routes.razor | 0 .../Components/_Imports.razor | 0 .../Program.cs | 0 .../Properties/launchSettings.json | 0 .../WeatherApiClient.cs | 0 .../appsettings.json | 0 .../wwwroot/app.css | 0 .../wwwroot/bootstrap/bootstrap.min.css | 0 .../wwwroot/bootstrap/bootstrap.min.css.map | 0 .../wwwroot/favicon.png | Bin ...re.CommunityToolkit.StaticWebApps.ApiApp.csproj} | 0 .../Program.cs | 0 .../Properties/launchSettings.json | 0 .../appsettings.json | 0 ...e.CommunityToolkit.StaticWebApps.AppHost.csproj} | 0 .../Program.cs | 0 .../Properties/launchSettings.json | 0 .../appsettings.json | 0 ...ityToolkit.StaticWebApps.ServiceDefaults.csproj} | 0 .../Extensions.cs | 0 .../.gitignore | 0 .../README.md | 0 .../eslint.config.js | 0 .../index.html | 0 .../package-lock.json | 0 .../package.json | 0 .../src/App.css | 0 .../src/App.tsx | 0 .../src/bootstrap.css | 0 .../src/main.tsx | 0 .../src/vite-env.d.ts | 0 .../tsconfig.app.json | 0 .../tsconfig.json | 0 .../tsconfig.node.json | 0 .../vite.config.ts | 0 ...unityToolkit.Hosting.Azure.StaticWebApps.csproj} | 0 .../SwaApiEndpointAnnotation.cs | 0 .../SwaAppEndpointAnnotation.cs | 0 .../SwaAppHostingExtension.cs | 0 .../SwaResource.cs | 0 .../SwaResourceOptions.cs | 0 .../Aspire.CommunityToolkit.Hosting.Java.csproj} | 0 .../JavaAppContainerResource.cs | 0 .../JavaAppContainerResourceOptions.cs | 0 .../JavaAppExecutableResource.cs | 0 .../JavaAppExecutableResourceOptions.cs | 0 .../JavaAppHostingExtension.cs | 0 .../README.md | 0 .../Utils/PathNormalizer.cs | 0 ...mmunityToolkit.Hosting.NodeJS.Extensions.csproj} | 0 .../NodeJSHostingExtensions.cs | 0 .../NodePackageInstaller.cs | 0 .../NpmPackageInstallerLifecycleHook.cs | 0 .../PathNormalizer.cs | 0 .../PnpmPackageInstallerLifecycleHook.cs | 0 .../YarnPackageInstallerLifecycleHook.cs | 0 .../Aspire.CommunityToolkit.Hosting.Ollama.csproj} | 0 .../OllamaContainerImageTags.cs | 0 .../OllamaResource.cs | 0 .../OllamaResourceBuilderExtensions.cs | 0 .../OllamaResourceLifecycleHook.cs | 0 ...oolkit.Hosting.Azure.StaticWebApps.Tests.csproj} | 0 .../ResourceCreationTests.cs | 0 .../SwaHostingComponentTests.cs | 0 ...pire.CommunityToolkit.Hosting.Java.Tests.csproj} | 0 .../JavaHostingComponentTests.cs | 0 .../AppHostTests.cs | 0 ...yToolkit.Hosting.NodeJS.Extensions.Tests.csproj} | 0 .../ResourceCreationTests.cs | 0 .../AppHostTests.cs | 0 ...re.CommunityToolkit.Hosting.Ollama.Tests.csproj} | 0 .../ResourceCreationTests.cs | 0 .../Aspire.CommunityToolkit.Testing.csproj} | 0 .../AspireIntegrationTest.cs | 0 .../LoggerNotificationExtensions.cs | 0 141 files changed, 0 insertions(+), 0 deletions(-) rename CommunityToolkit.Aspire.sln => Aspire.CommunityToolkit.sln (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.ApiApp/CommunityToolkit.Aspire.Hosting.Java.ApiApp.csproj => Aspire.CommunityToolkit.Hosting.Java.ApiApp/Aspire.CommunityToolkit.Hosting.Java.ApiApp.csproj} (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.ApiApp/CommunityToolkit.Aspire.Java.ApiApp.http => Aspire.CommunityToolkit.Hosting.Java.ApiApp/Aspire.CommunityToolkit.Java.ApiApp.http} (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.ApiApp => Aspire.CommunityToolkit.Hosting.Java.ApiApp}/Program.cs (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.ApiApp => Aspire.CommunityToolkit.Hosting.Java.ApiApp}/Properties/launchSettings.json (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.ApiApp => Aspire.CommunityToolkit.Hosting.Java.ApiApp}/appsettings.json (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.AppHost/CommunityToolkit.Aspire.Hosting.Java.AppHost.csproj => Aspire.CommunityToolkit.Hosting.Java.AppHost/Aspire.CommunityToolkit.Hosting.Java.AppHost.csproj} (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.AppHost => Aspire.CommunityToolkit.Hosting.Java.AppHost}/Program.cs (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.AppHost => Aspire.CommunityToolkit.Hosting.Java.AppHost}/Properties/launchSettings.json (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.AppHost => Aspire.CommunityToolkit.Hosting.Java.AppHost}/appsettings.json (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.ServiceDefaults/CommunityToolkit.Aspire.Hosting.Java.ServiceDefaults.csproj => Aspire.CommunityToolkit.Hosting.Java.ServiceDefaults/Aspire.CommunityToolkit.Hosting.Java.ServiceDefaults.csproj} (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.ServiceDefaults => Aspire.CommunityToolkit.Hosting.Java.ServiceDefaults}/Extensions.cs (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.Spring.Maven => Aspire.CommunityToolkit.Hosting.Java.Spring.Maven}/.gitignore (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.Spring.Maven => Aspire.CommunityToolkit.Hosting.Java.Spring.Maven}/.mvn/wrapper/maven-wrapper.properties (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.Spring.Maven => Aspire.CommunityToolkit.Hosting.Java.Spring.Maven}/Dockerfile (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.Spring.Maven => Aspire.CommunityToolkit.Hosting.Java.Spring.Maven}/mvnw (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.Spring.Maven => Aspire.CommunityToolkit.Hosting.Java.Spring.Maven}/mvnw.cmd (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.Spring.Maven => Aspire.CommunityToolkit.Hosting.Java.Spring.Maven}/pom.xml (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.Spring.Maven => Aspire.CommunityToolkit.Hosting.Java.Spring.Maven}/src/main/java/org/aliencube/aspire/contribs/spring_maven/SpringMavenApplication.java (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.Spring.Maven => Aspire.CommunityToolkit.Hosting.Java.Spring.Maven}/src/main/java/org/aliencube/aspire/contribs/spring_maven/controllers/HomeController.java (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.Spring.Maven => Aspire.CommunityToolkit.Hosting.Java.Spring.Maven}/src/main/java/org/aliencube/aspire/contribs/spring_maven/controllers/WeatherController.java (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.Spring.Maven => Aspire.CommunityToolkit.Hosting.Java.Spring.Maven}/src/main/java/org/aliencube/aspire/contribs/spring_maven/models/WeatherForecast.java (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.Spring.Maven => Aspire.CommunityToolkit.Hosting.Java.Spring.Maven}/src/main/resources/application.properties (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp/CommunityToolkit.Aspire.Hosting.Java.WebApp.csproj => Aspire.CommunityToolkit.Hosting.Java.WebApp/Aspire.CommunityToolkit.Hosting.Java.WebApp.csproj} (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Clients/IApiClient.cs (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Clients/SpringApiClient.cs (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Clients/WebApiClient.cs (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Components/App.razor (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Components/Layout/MainLayout.razor (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Components/Layout/MainLayout.razor.css (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Components/Layout/NavMenu.razor (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Components/Layout/NavMenu.razor.css (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Components/Pages/Counter.razor (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Components/Pages/Error.razor (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Components/Pages/Home.razor (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Components/Pages/Weather.razor (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Components/Routes.razor (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Components/UI/WeatherComponent.razor (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Components/_Imports.razor (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Models/WeatherForecast.cs (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Program.cs (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Properties/launchSettings.json (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/Services/ApiClientService.cs (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/appsettings.json (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/wwwroot/app.css (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/wwwroot/bootstrap/bootstrap.min.css (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/wwwroot/bootstrap/bootstrap.min.css.map (100%) rename examples/java/{CommunityToolkit.Aspire.Hosting.Java.WebApp => Aspire.CommunityToolkit.Hosting.Java.WebApp}/wwwroot/favicon.png (100%) rename examples/nodejs-ext/{CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost.csproj => Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost.csproj} (100%) rename examples/nodejs-ext/{CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost => Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost}/Program.cs (100%) rename examples/nodejs-ext/{CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost => Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost}/Properties/launchSettings.json (100%) rename examples/nodejs-ext/{CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost => Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost}/appsettings.json (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.AppHost/CommunityToolkit.Aspire.Hosting.Ollama.AppHost.csproj => Aspire.CommunityToolkit.Hosting.Ollama.AppHost/Aspire.CommunityToolkit.Hosting.Ollama.AppHost.csproj} (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.AppHost => Aspire.CommunityToolkit.Hosting.Ollama.AppHost}/Program.cs (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.AppHost => Aspire.CommunityToolkit.Hosting.Ollama.AppHost}/Properties/launchSettings.json (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.AppHost => Aspire.CommunityToolkit.Hosting.Ollama.AppHost}/appsettings.json (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.ServiceDefaults/CommunityToolkit.Aspire.Hosting.Ollama.ServiceDefaults.csproj => Aspire.CommunityToolkit.Hosting.Ollama.ServiceDefaults/Aspire.CommunityToolkit.Hosting.Ollama.ServiceDefaults.csproj} (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.ServiceDefaults => Aspire.CommunityToolkit.Hosting.Ollama.ServiceDefaults}/Extensions.cs (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web/CommunityToolkit.Aspire.Hosting.Ollama.Web.csproj => Aspire.CommunityToolkit.Hosting.Ollama.Web/Aspire.CommunityToolkit.Hosting.Ollama.Web.csproj} (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/Components/App.razor (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/Components/Layout/MainLayout.razor (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/Components/Layout/MainLayout.razor.css (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/Components/Layout/NavMenu.razor (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/Components/Layout/NavMenu.razor.css (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/Components/Pages/Error.razor (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/Components/Pages/Home.razor (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/Components/Routes.razor (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/Components/_Imports.razor (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/Program.cs (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/Properties/launchSettings.json (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/WeatherApiClient.cs (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/appsettings.json (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/wwwroot/app.css (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/wwwroot/bootstrap/bootstrap.min.css (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/wwwroot/bootstrap/bootstrap.min.css.map (100%) rename examples/ollama/{CommunityToolkit.Aspire.Hosting.Ollama.Web => Aspire.CommunityToolkit.Hosting.Ollama.Web}/wwwroot/favicon.png (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.ApiApp/CommunityToolkit.Aspire.StaticWebApps.ApiApp.csproj => Aspire.CommunityToolkit.StaticWebApps.ApiApp/Aspire.CommunityToolkit.StaticWebApps.ApiApp.csproj} (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.ApiApp => Aspire.CommunityToolkit.StaticWebApps.ApiApp}/Program.cs (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.ApiApp => Aspire.CommunityToolkit.StaticWebApps.ApiApp}/Properties/launchSettings.json (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.ApiApp => Aspire.CommunityToolkit.StaticWebApps.ApiApp}/appsettings.json (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.AppHost/CommunityToolkit.Aspire.StaticWebApps.AppHost.csproj => Aspire.CommunityToolkit.StaticWebApps.AppHost/Aspire.CommunityToolkit.StaticWebApps.AppHost.csproj} (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.AppHost => Aspire.CommunityToolkit.StaticWebApps.AppHost}/Program.cs (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.AppHost => Aspire.CommunityToolkit.StaticWebApps.AppHost}/Properties/launchSettings.json (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.AppHost => Aspire.CommunityToolkit.StaticWebApps.AppHost}/appsettings.json (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.ServiceDefaults/CommunityToolkit.Aspire.StaticWebApps.ServiceDefaults.csproj => Aspire.CommunityToolkit.StaticWebApps.ServiceDefaults/Aspire.CommunityToolkit.StaticWebApps.ServiceDefaults.csproj} (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.ServiceDefaults => Aspire.CommunityToolkit.StaticWebApps.ServiceDefaults}/Extensions.cs (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.WebApp => Aspire.CommunityToolkit.StaticWebApps.WebApp}/.gitignore (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.WebApp => Aspire.CommunityToolkit.StaticWebApps.WebApp}/README.md (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.WebApp => Aspire.CommunityToolkit.StaticWebApps.WebApp}/eslint.config.js (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.WebApp => Aspire.CommunityToolkit.StaticWebApps.WebApp}/index.html (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.WebApp => Aspire.CommunityToolkit.StaticWebApps.WebApp}/package-lock.json (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.WebApp => Aspire.CommunityToolkit.StaticWebApps.WebApp}/package.json (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.WebApp => Aspire.CommunityToolkit.StaticWebApps.WebApp}/src/App.css (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.WebApp => Aspire.CommunityToolkit.StaticWebApps.WebApp}/src/App.tsx (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.WebApp => Aspire.CommunityToolkit.StaticWebApps.WebApp}/src/bootstrap.css (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.WebApp => Aspire.CommunityToolkit.StaticWebApps.WebApp}/src/main.tsx (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.WebApp => Aspire.CommunityToolkit.StaticWebApps.WebApp}/src/vite-env.d.ts (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.WebApp => Aspire.CommunityToolkit.StaticWebApps.WebApp}/tsconfig.app.json (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.WebApp => Aspire.CommunityToolkit.StaticWebApps.WebApp}/tsconfig.json (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.WebApp => Aspire.CommunityToolkit.StaticWebApps.WebApp}/tsconfig.node.json (100%) rename examples/swa/{CommunityToolkit.Aspire.StaticWebApps.WebApp => Aspire.CommunityToolkit.StaticWebApps.WebApp}/vite.config.ts (100%) rename src/{CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.csproj => Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.csproj} (100%) rename src/{CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps => Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps}/SwaApiEndpointAnnotation.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps => Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps}/SwaAppEndpointAnnotation.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps => Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps}/SwaAppHostingExtension.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps => Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps}/SwaResource.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps => Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps}/SwaResourceOptions.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.Java/CommunityToolkit.Aspire.Hosting.Java.csproj => Aspire.CommunityToolkit.Hosting.Java/Aspire.CommunityToolkit.Hosting.Java.csproj} (100%) rename src/{CommunityToolkit.Aspire.Hosting.Java => Aspire.CommunityToolkit.Hosting.Java}/JavaAppContainerResource.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.Java => Aspire.CommunityToolkit.Hosting.Java}/JavaAppContainerResourceOptions.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.Java => Aspire.CommunityToolkit.Hosting.Java}/JavaAppExecutableResource.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.Java => Aspire.CommunityToolkit.Hosting.Java}/JavaAppExecutableResourceOptions.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.Java => Aspire.CommunityToolkit.Hosting.Java}/JavaAppHostingExtension.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.Java => Aspire.CommunityToolkit.Hosting.Java}/README.md (100%) rename src/{CommunityToolkit.Aspire.Hosting.Java => Aspire.CommunityToolkit.Hosting.Java}/Utils/PathNormalizer.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.csproj => Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.csproj} (100%) rename src/{CommunityToolkit.Aspire.Hosting.NodeJS.Extensions => Aspire.CommunityToolkit.Hosting.NodeJS.Extensions}/NodeJSHostingExtensions.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.NodeJS.Extensions => Aspire.CommunityToolkit.Hosting.NodeJS.Extensions}/NodePackageInstaller.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.NodeJS.Extensions => Aspire.CommunityToolkit.Hosting.NodeJS.Extensions}/NpmPackageInstallerLifecycleHook.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.NodeJS.Extensions => Aspire.CommunityToolkit.Hosting.NodeJS.Extensions}/PathNormalizer.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.NodeJS.Extensions => Aspire.CommunityToolkit.Hosting.NodeJS.Extensions}/PnpmPackageInstallerLifecycleHook.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.NodeJS.Extensions => Aspire.CommunityToolkit.Hosting.NodeJS.Extensions}/YarnPackageInstallerLifecycleHook.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.Ollama/CommunityToolkit.Aspire.Hosting.Ollama.csproj => Aspire.CommunityToolkit.Hosting.Ollama/Aspire.CommunityToolkit.Hosting.Ollama.csproj} (100%) rename src/{CommunityToolkit.Aspire.Hosting.Ollama => Aspire.CommunityToolkit.Hosting.Ollama}/OllamaContainerImageTags.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.Ollama => Aspire.CommunityToolkit.Hosting.Ollama}/OllamaResource.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.Ollama => Aspire.CommunityToolkit.Hosting.Ollama}/OllamaResourceBuilderExtensions.cs (100%) rename src/{CommunityToolkit.Aspire.Hosting.Ollama => Aspire.CommunityToolkit.Hosting.Ollama}/OllamaResourceLifecycleHook.cs (100%) rename tests/{CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests.csproj => Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests.csproj} (100%) rename tests/{CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests => Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests}/ResourceCreationTests.cs (100%) rename tests/{CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests => Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests}/SwaHostingComponentTests.cs (100%) rename tests/{CommunityToolkit.Aspire.Hosting.Java.Tests/CommunityToolkit.Aspire.Hosting.Java.Tests.csproj => Aspire.CommunityToolkit.Hosting.Java.Tests/Aspire.CommunityToolkit.Hosting.Java.Tests.csproj} (100%) rename tests/{CommunityToolkit.Aspire.Hosting.Java.Tests => Aspire.CommunityToolkit.Hosting.Java.Tests}/JavaHostingComponentTests.cs (100%) rename tests/{CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests => Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests}/AppHostTests.cs (100%) rename tests/{CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests.csproj => Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests.csproj} (100%) rename tests/{CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests => Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests}/ResourceCreationTests.cs (100%) rename tests/{CommunityToolkit.Aspire.Hosting.Ollama.Tests => Aspire.CommunityToolkit.Hosting.Ollama.Tests}/AppHostTests.cs (100%) rename tests/{CommunityToolkit.Aspire.Hosting.Ollama.Tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests.csproj => Aspire.CommunityToolkit.Hosting.Ollama.Tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests.csproj} (100%) rename tests/{CommunityToolkit.Aspire.Hosting.Ollama.Tests => Aspire.CommunityToolkit.Hosting.Ollama.Tests}/ResourceCreationTests.cs (100%) rename tests/{CommunityToolkit.Aspire.Testing/CommunityToolkit.Aspire.Testing.csproj => Aspire.CommunityToolkit.Testing/Aspire.CommunityToolkit.Testing.csproj} (100%) rename tests/{CommunityToolkit.Aspire.Testing => Aspire.CommunityToolkit.Testing}/AspireIntegrationTest.cs (100%) rename tests/{CommunityToolkit.Aspire.Testing => Aspire.CommunityToolkit.Testing}/LoggerNotificationExtensions.cs (100%) diff --git a/CommunityToolkit.Aspire.sln b/Aspire.CommunityToolkit.sln similarity index 100% rename from CommunityToolkit.Aspire.sln rename to Aspire.CommunityToolkit.sln diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/CommunityToolkit.Aspire.Hosting.Java.ApiApp.csproj b/examples/java/Aspire.CommunityToolkit.Hosting.Java.ApiApp/Aspire.CommunityToolkit.Hosting.Java.ApiApp.csproj similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/CommunityToolkit.Aspire.Hosting.Java.ApiApp.csproj rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.ApiApp/Aspire.CommunityToolkit.Hosting.Java.ApiApp.csproj diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/CommunityToolkit.Aspire.Java.ApiApp.http b/examples/java/Aspire.CommunityToolkit.Hosting.Java.ApiApp/Aspire.CommunityToolkit.Java.ApiApp.http similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/CommunityToolkit.Aspire.Java.ApiApp.http rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.ApiApp/Aspire.CommunityToolkit.Java.ApiApp.http diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/Program.cs b/examples/java/Aspire.CommunityToolkit.Hosting.Java.ApiApp/Program.cs similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/Program.cs rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.ApiApp/Program.cs diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/Properties/launchSettings.json b/examples/java/Aspire.CommunityToolkit.Hosting.Java.ApiApp/Properties/launchSettings.json similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/Properties/launchSettings.json rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.ApiApp/Properties/launchSettings.json diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/appsettings.json b/examples/java/Aspire.CommunityToolkit.Hosting.Java.ApiApp/appsettings.json similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.ApiApp/appsettings.json rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.ApiApp/appsettings.json diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/CommunityToolkit.Aspire.Hosting.Java.AppHost.csproj b/examples/java/Aspire.CommunityToolkit.Hosting.Java.AppHost/Aspire.CommunityToolkit.Hosting.Java.AppHost.csproj similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/CommunityToolkit.Aspire.Hosting.Java.AppHost.csproj rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.AppHost/Aspire.CommunityToolkit.Hosting.Java.AppHost.csproj diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/Program.cs b/examples/java/Aspire.CommunityToolkit.Hosting.Java.AppHost/Program.cs similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/Program.cs rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.AppHost/Program.cs diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/Properties/launchSettings.json b/examples/java/Aspire.CommunityToolkit.Hosting.Java.AppHost/Properties/launchSettings.json similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/Properties/launchSettings.json rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.AppHost/Properties/launchSettings.json diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/appsettings.json b/examples/java/Aspire.CommunityToolkit.Hosting.Java.AppHost/appsettings.json similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/appsettings.json rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.AppHost/appsettings.json diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.ServiceDefaults/CommunityToolkit.Aspire.Hosting.Java.ServiceDefaults.csproj b/examples/java/Aspire.CommunityToolkit.Hosting.Java.ServiceDefaults/Aspire.CommunityToolkit.Hosting.Java.ServiceDefaults.csproj similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.ServiceDefaults/CommunityToolkit.Aspire.Hosting.Java.ServiceDefaults.csproj rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.ServiceDefaults/Aspire.CommunityToolkit.Hosting.Java.ServiceDefaults.csproj diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.ServiceDefaults/Extensions.cs b/examples/java/Aspire.CommunityToolkit.Hosting.Java.ServiceDefaults/Extensions.cs similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.ServiceDefaults/Extensions.cs rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.ServiceDefaults/Extensions.cs diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/.gitignore b/examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/.gitignore similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/.gitignore rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/.gitignore diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/.mvn/wrapper/maven-wrapper.properties b/examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/.mvn/wrapper/maven-wrapper.properties rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/.mvn/wrapper/maven-wrapper.properties diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/Dockerfile b/examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/Dockerfile similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/Dockerfile rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/Dockerfile diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/mvnw b/examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/mvnw similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/mvnw rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/mvnw diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/mvnw.cmd b/examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/mvnw.cmd similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/mvnw.cmd rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/mvnw.cmd diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/pom.xml b/examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/pom.xml similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/pom.xml rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/pom.xml diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/src/main/java/org/aliencube/aspire/contribs/spring_maven/SpringMavenApplication.java b/examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/src/main/java/org/aliencube/aspire/contribs/spring_maven/SpringMavenApplication.java similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/src/main/java/org/aliencube/aspire/contribs/spring_maven/SpringMavenApplication.java rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/src/main/java/org/aliencube/aspire/contribs/spring_maven/SpringMavenApplication.java diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/src/main/java/org/aliencube/aspire/contribs/spring_maven/controllers/HomeController.java b/examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/src/main/java/org/aliencube/aspire/contribs/spring_maven/controllers/HomeController.java similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/src/main/java/org/aliencube/aspire/contribs/spring_maven/controllers/HomeController.java rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/src/main/java/org/aliencube/aspire/contribs/spring_maven/controllers/HomeController.java diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/src/main/java/org/aliencube/aspire/contribs/spring_maven/controllers/WeatherController.java b/examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/src/main/java/org/aliencube/aspire/contribs/spring_maven/controllers/WeatherController.java similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/src/main/java/org/aliencube/aspire/contribs/spring_maven/controllers/WeatherController.java rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/src/main/java/org/aliencube/aspire/contribs/spring_maven/controllers/WeatherController.java diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/src/main/java/org/aliencube/aspire/contribs/spring_maven/models/WeatherForecast.java b/examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/src/main/java/org/aliencube/aspire/contribs/spring_maven/models/WeatherForecast.java similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/src/main/java/org/aliencube/aspire/contribs/spring_maven/models/WeatherForecast.java rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/src/main/java/org/aliencube/aspire/contribs/spring_maven/models/WeatherForecast.java diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/src/main/resources/application.properties b/examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/src/main/resources/application.properties similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.Spring.Maven/src/main/resources/application.properties rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.Spring.Maven/src/main/resources/application.properties diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/CommunityToolkit.Aspire.Hosting.Java.WebApp.csproj b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Aspire.CommunityToolkit.Hosting.Java.WebApp.csproj similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/CommunityToolkit.Aspire.Hosting.Java.WebApp.csproj rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Aspire.CommunityToolkit.Hosting.Java.WebApp.csproj diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/IApiClient.cs b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Clients/IApiClient.cs similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/IApiClient.cs rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Clients/IApiClient.cs diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/SpringApiClient.cs b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Clients/SpringApiClient.cs similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/SpringApiClient.cs rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Clients/SpringApiClient.cs diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/WebApiClient.cs b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Clients/WebApiClient.cs similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Clients/WebApiClient.cs rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Clients/WebApiClient.cs diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/App.razor b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/App.razor similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/App.razor rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/App.razor diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Layout/MainLayout.razor b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Layout/MainLayout.razor similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Layout/MainLayout.razor rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Layout/MainLayout.razor diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Layout/MainLayout.razor.css b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Layout/MainLayout.razor.css similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Layout/MainLayout.razor.css rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Layout/MainLayout.razor.css diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Layout/NavMenu.razor b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Layout/NavMenu.razor similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Layout/NavMenu.razor rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Layout/NavMenu.razor diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Layout/NavMenu.razor.css b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Layout/NavMenu.razor.css similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Layout/NavMenu.razor.css rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Layout/NavMenu.razor.css diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Pages/Counter.razor b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Pages/Counter.razor similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Pages/Counter.razor rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Pages/Counter.razor diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Pages/Error.razor b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Pages/Error.razor similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Pages/Error.razor rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Pages/Error.razor diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Pages/Home.razor b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Pages/Home.razor similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Pages/Home.razor rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Pages/Home.razor diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Pages/Weather.razor b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Pages/Weather.razor similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Pages/Weather.razor rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Pages/Weather.razor diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Routes.razor b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Routes.razor similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/Routes.razor rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/Routes.razor diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/UI/WeatherComponent.razor b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/UI/WeatherComponent.razor similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/UI/WeatherComponent.razor rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/UI/WeatherComponent.razor diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/_Imports.razor b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/_Imports.razor similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Components/_Imports.razor rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Components/_Imports.razor diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Models/WeatherForecast.cs b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Models/WeatherForecast.cs similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Models/WeatherForecast.cs rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Models/WeatherForecast.cs diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Program.cs b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Program.cs similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Program.cs rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Program.cs diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Properties/launchSettings.json b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Properties/launchSettings.json similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Properties/launchSettings.json rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Properties/launchSettings.json diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Services/ApiClientService.cs b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Services/ApiClientService.cs similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/Services/ApiClientService.cs rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/Services/ApiClientService.cs diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/appsettings.json b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/appsettings.json similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/appsettings.json rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/appsettings.json diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/wwwroot/app.css b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/wwwroot/app.css similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/wwwroot/app.css rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/wwwroot/app.css diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/wwwroot/bootstrap/bootstrap.min.css b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/wwwroot/bootstrap/bootstrap.min.css similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/wwwroot/bootstrap/bootstrap.min.css rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/wwwroot/bootstrap/bootstrap.min.css diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/wwwroot/bootstrap/bootstrap.min.css.map b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/wwwroot/bootstrap/bootstrap.min.css.map similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/wwwroot/bootstrap/bootstrap.min.css.map rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/wwwroot/bootstrap/bootstrap.min.css.map diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/wwwroot/favicon.png b/examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/wwwroot/favicon.png similarity index 100% rename from examples/java/CommunityToolkit.Aspire.Hosting.Java.WebApp/wwwroot/favicon.png rename to examples/java/Aspire.CommunityToolkit.Hosting.Java.WebApp/wwwroot/favicon.png diff --git a/examples/nodejs-ext/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost.csproj b/examples/nodejs-ext/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost.csproj similarity index 100% rename from examples/nodejs-ext/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost.csproj rename to examples/nodejs-ext/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost.csproj diff --git a/examples/nodejs-ext/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost/Program.cs b/examples/nodejs-ext/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost/Program.cs similarity index 100% rename from examples/nodejs-ext/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost/Program.cs rename to examples/nodejs-ext/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost/Program.cs diff --git a/examples/nodejs-ext/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost/Properties/launchSettings.json b/examples/nodejs-ext/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost/Properties/launchSettings.json similarity index 100% rename from examples/nodejs-ext/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost/Properties/launchSettings.json rename to examples/nodejs-ext/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost/Properties/launchSettings.json diff --git a/examples/nodejs-ext/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost/appsettings.json b/examples/nodejs-ext/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost/appsettings.json similarity index 100% rename from examples/nodejs-ext/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.AppHost/appsettings.json rename to examples/nodejs-ext/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.AppHost/appsettings.json diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.AppHost/CommunityToolkit.Aspire.Hosting.Ollama.AppHost.csproj b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.AppHost/Aspire.CommunityToolkit.Hosting.Ollama.AppHost.csproj similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.AppHost/CommunityToolkit.Aspire.Hosting.Ollama.AppHost.csproj rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.AppHost/Aspire.CommunityToolkit.Hosting.Ollama.AppHost.csproj diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.AppHost/Program.cs b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.AppHost/Program.cs similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.AppHost/Program.cs rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.AppHost/Program.cs diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.AppHost/Properties/launchSettings.json b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.AppHost/Properties/launchSettings.json similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.AppHost/Properties/launchSettings.json rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.AppHost/Properties/launchSettings.json diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.AppHost/appsettings.json b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.AppHost/appsettings.json similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.AppHost/appsettings.json rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.AppHost/appsettings.json diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.ServiceDefaults/CommunityToolkit.Aspire.Hosting.Ollama.ServiceDefaults.csproj b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.ServiceDefaults/Aspire.CommunityToolkit.Hosting.Ollama.ServiceDefaults.csproj similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.ServiceDefaults/CommunityToolkit.Aspire.Hosting.Ollama.ServiceDefaults.csproj rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.ServiceDefaults/Aspire.CommunityToolkit.Hosting.Ollama.ServiceDefaults.csproj diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.ServiceDefaults/Extensions.cs b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.ServiceDefaults/Extensions.cs similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.ServiceDefaults/Extensions.cs rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.ServiceDefaults/Extensions.cs diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/CommunityToolkit.Aspire.Hosting.Ollama.Web.csproj b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Aspire.CommunityToolkit.Hosting.Ollama.Web.csproj similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/CommunityToolkit.Aspire.Hosting.Ollama.Web.csproj rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Aspire.CommunityToolkit.Hosting.Ollama.Web.csproj diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/App.razor b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/App.razor similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/App.razor rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/App.razor diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Layout/MainLayout.razor b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/Layout/MainLayout.razor similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Layout/MainLayout.razor rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/Layout/MainLayout.razor diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Layout/MainLayout.razor.css b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/Layout/MainLayout.razor.css similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Layout/MainLayout.razor.css rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/Layout/MainLayout.razor.css diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Layout/NavMenu.razor b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/Layout/NavMenu.razor similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Layout/NavMenu.razor rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/Layout/NavMenu.razor diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Layout/NavMenu.razor.css b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/Layout/NavMenu.razor.css similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Layout/NavMenu.razor.css rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/Layout/NavMenu.razor.css diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Pages/Error.razor b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/Pages/Error.razor similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Pages/Error.razor rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/Pages/Error.razor diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Pages/Home.razor b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/Pages/Home.razor similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Pages/Home.razor rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/Pages/Home.razor diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Routes.razor b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/Routes.razor similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/Routes.razor rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/Routes.razor diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/_Imports.razor b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/_Imports.razor similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Components/_Imports.razor rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Components/_Imports.razor diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Program.cs b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Program.cs similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Program.cs rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Program.cs diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Properties/launchSettings.json b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Properties/launchSettings.json similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/Properties/launchSettings.json rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/Properties/launchSettings.json diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/WeatherApiClient.cs b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/WeatherApiClient.cs similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/WeatherApiClient.cs rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/WeatherApiClient.cs diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/appsettings.json b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/appsettings.json similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/appsettings.json rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/appsettings.json diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/wwwroot/app.css b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/wwwroot/app.css similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/wwwroot/app.css rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/wwwroot/app.css diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/wwwroot/bootstrap/bootstrap.min.css b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/wwwroot/bootstrap/bootstrap.min.css similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/wwwroot/bootstrap/bootstrap.min.css rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/wwwroot/bootstrap/bootstrap.min.css diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/wwwroot/bootstrap/bootstrap.min.css.map b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/wwwroot/bootstrap/bootstrap.min.css.map similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/wwwroot/bootstrap/bootstrap.min.css.map rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/wwwroot/bootstrap/bootstrap.min.css.map diff --git a/examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/wwwroot/favicon.png b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/wwwroot/favicon.png similarity index 100% rename from examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.Web/wwwroot/favicon.png rename to examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.Web/wwwroot/favicon.png diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.ApiApp/CommunityToolkit.Aspire.StaticWebApps.ApiApp.csproj b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.ApiApp/Aspire.CommunityToolkit.StaticWebApps.ApiApp.csproj similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.ApiApp/CommunityToolkit.Aspire.StaticWebApps.ApiApp.csproj rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.ApiApp/Aspire.CommunityToolkit.StaticWebApps.ApiApp.csproj diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.ApiApp/Program.cs b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.ApiApp/Program.cs similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.ApiApp/Program.cs rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.ApiApp/Program.cs diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.ApiApp/Properties/launchSettings.json b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.ApiApp/Properties/launchSettings.json similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.ApiApp/Properties/launchSettings.json rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.ApiApp/Properties/launchSettings.json diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.ApiApp/appsettings.json b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.ApiApp/appsettings.json similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.ApiApp/appsettings.json rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.ApiApp/appsettings.json diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.AppHost/CommunityToolkit.Aspire.StaticWebApps.AppHost.csproj b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.AppHost/Aspire.CommunityToolkit.StaticWebApps.AppHost.csproj similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.AppHost/CommunityToolkit.Aspire.StaticWebApps.AppHost.csproj rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.AppHost/Aspire.CommunityToolkit.StaticWebApps.AppHost.csproj diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.AppHost/Program.cs b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.AppHost/Program.cs similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.AppHost/Program.cs rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.AppHost/Program.cs diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.AppHost/Properties/launchSettings.json b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.AppHost/Properties/launchSettings.json similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.AppHost/Properties/launchSettings.json rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.AppHost/Properties/launchSettings.json diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.AppHost/appsettings.json b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.AppHost/appsettings.json similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.AppHost/appsettings.json rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.AppHost/appsettings.json diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.ServiceDefaults/CommunityToolkit.Aspire.StaticWebApps.ServiceDefaults.csproj b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.ServiceDefaults/Aspire.CommunityToolkit.StaticWebApps.ServiceDefaults.csproj similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.ServiceDefaults/CommunityToolkit.Aspire.StaticWebApps.ServiceDefaults.csproj rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.ServiceDefaults/Aspire.CommunityToolkit.StaticWebApps.ServiceDefaults.csproj diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.ServiceDefaults/Extensions.cs b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.ServiceDefaults/Extensions.cs similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.ServiceDefaults/Extensions.cs rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.ServiceDefaults/Extensions.cs diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/.gitignore b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/.gitignore similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/.gitignore rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/.gitignore diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/README.md b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/README.md similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/README.md rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/README.md diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/eslint.config.js b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/eslint.config.js similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/eslint.config.js rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/eslint.config.js diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/index.html b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/index.html similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/index.html rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/index.html diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/package-lock.json b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/package-lock.json similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/package-lock.json rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/package-lock.json diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/package.json b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/package.json similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/package.json rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/package.json diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/src/App.css b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/src/App.css similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/src/App.css rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/src/App.css diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/src/App.tsx b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/src/App.tsx similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/src/App.tsx rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/src/App.tsx diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/src/bootstrap.css b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/src/bootstrap.css similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/src/bootstrap.css rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/src/bootstrap.css diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/src/main.tsx b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/src/main.tsx similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/src/main.tsx rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/src/main.tsx diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/src/vite-env.d.ts b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/src/vite-env.d.ts similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/src/vite-env.d.ts rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/src/vite-env.d.ts diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/tsconfig.app.json b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/tsconfig.app.json similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/tsconfig.app.json rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/tsconfig.app.json diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/tsconfig.json b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/tsconfig.json similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/tsconfig.json rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/tsconfig.json diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/tsconfig.node.json b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/tsconfig.node.json similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/tsconfig.node.json rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/tsconfig.node.json diff --git a/examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/vite.config.ts b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/vite.config.ts similarity index 100% rename from examples/swa/CommunityToolkit.Aspire.StaticWebApps.WebApp/vite.config.ts rename to examples/swa/Aspire.CommunityToolkit.StaticWebApps.WebApp/vite.config.ts diff --git a/src/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.csproj b/src/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.csproj similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.csproj rename to src/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.csproj diff --git a/src/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps/SwaApiEndpointAnnotation.cs b/src/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps/SwaApiEndpointAnnotation.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps/SwaApiEndpointAnnotation.cs rename to src/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps/SwaApiEndpointAnnotation.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps/SwaAppEndpointAnnotation.cs b/src/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps/SwaAppEndpointAnnotation.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps/SwaAppEndpointAnnotation.cs rename to src/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps/SwaAppEndpointAnnotation.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps/SwaAppHostingExtension.cs b/src/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps/SwaAppHostingExtension.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps/SwaAppHostingExtension.cs rename to src/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps/SwaAppHostingExtension.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps/SwaResource.cs b/src/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps/SwaResource.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps/SwaResource.cs rename to src/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps/SwaResource.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps/SwaResourceOptions.cs b/src/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps/SwaResourceOptions.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps/SwaResourceOptions.cs rename to src/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps/SwaResourceOptions.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.Java/CommunityToolkit.Aspire.Hosting.Java.csproj b/src/Aspire.CommunityToolkit.Hosting.Java/Aspire.CommunityToolkit.Hosting.Java.csproj similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Java/CommunityToolkit.Aspire.Hosting.Java.csproj rename to src/Aspire.CommunityToolkit.Hosting.Java/Aspire.CommunityToolkit.Hosting.Java.csproj diff --git a/src/CommunityToolkit.Aspire.Hosting.Java/JavaAppContainerResource.cs b/src/Aspire.CommunityToolkit.Hosting.Java/JavaAppContainerResource.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Java/JavaAppContainerResource.cs rename to src/Aspire.CommunityToolkit.Hosting.Java/JavaAppContainerResource.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.Java/JavaAppContainerResourceOptions.cs b/src/Aspire.CommunityToolkit.Hosting.Java/JavaAppContainerResourceOptions.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Java/JavaAppContainerResourceOptions.cs rename to src/Aspire.CommunityToolkit.Hosting.Java/JavaAppContainerResourceOptions.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.Java/JavaAppExecutableResource.cs b/src/Aspire.CommunityToolkit.Hosting.Java/JavaAppExecutableResource.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Java/JavaAppExecutableResource.cs rename to src/Aspire.CommunityToolkit.Hosting.Java/JavaAppExecutableResource.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.Java/JavaAppExecutableResourceOptions.cs b/src/Aspire.CommunityToolkit.Hosting.Java/JavaAppExecutableResourceOptions.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Java/JavaAppExecutableResourceOptions.cs rename to src/Aspire.CommunityToolkit.Hosting.Java/JavaAppExecutableResourceOptions.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.Java/JavaAppHostingExtension.cs b/src/Aspire.CommunityToolkit.Hosting.Java/JavaAppHostingExtension.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Java/JavaAppHostingExtension.cs rename to src/Aspire.CommunityToolkit.Hosting.Java/JavaAppHostingExtension.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.Java/README.md b/src/Aspire.CommunityToolkit.Hosting.Java/README.md similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Java/README.md rename to src/Aspire.CommunityToolkit.Hosting.Java/README.md diff --git a/src/CommunityToolkit.Aspire.Hosting.Java/Utils/PathNormalizer.cs b/src/Aspire.CommunityToolkit.Hosting.Java/Utils/PathNormalizer.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Java/Utils/PathNormalizer.cs rename to src/Aspire.CommunityToolkit.Hosting.Java/Utils/PathNormalizer.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.csproj b/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.csproj similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.csproj rename to src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.csproj diff --git a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NodeJSHostingExtensions.cs b/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NodeJSHostingExtensions.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NodeJSHostingExtensions.cs rename to src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NodeJSHostingExtensions.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NodePackageInstaller.cs b/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NodePackageInstaller.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NodePackageInstaller.cs rename to src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NodePackageInstaller.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NpmPackageInstallerLifecycleHook.cs b/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NpmPackageInstallerLifecycleHook.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/NpmPackageInstallerLifecycleHook.cs rename to src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NpmPackageInstallerLifecycleHook.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/PathNormalizer.cs b/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/PathNormalizer.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/PathNormalizer.cs rename to src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/PathNormalizer.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/PnpmPackageInstallerLifecycleHook.cs b/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/PnpmPackageInstallerLifecycleHook.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/PnpmPackageInstallerLifecycleHook.cs rename to src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/PnpmPackageInstallerLifecycleHook.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/YarnPackageInstallerLifecycleHook.cs b/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/YarnPackageInstallerLifecycleHook.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions/YarnPackageInstallerLifecycleHook.cs rename to src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/YarnPackageInstallerLifecycleHook.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.Ollama/CommunityToolkit.Aspire.Hosting.Ollama.csproj b/src/Aspire.CommunityToolkit.Hosting.Ollama/Aspire.CommunityToolkit.Hosting.Ollama.csproj similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Ollama/CommunityToolkit.Aspire.Hosting.Ollama.csproj rename to src/Aspire.CommunityToolkit.Hosting.Ollama/Aspire.CommunityToolkit.Hosting.Ollama.csproj diff --git a/src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaContainerImageTags.cs b/src/Aspire.CommunityToolkit.Hosting.Ollama/OllamaContainerImageTags.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaContainerImageTags.cs rename to src/Aspire.CommunityToolkit.Hosting.Ollama/OllamaContainerImageTags.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResource.cs b/src/Aspire.CommunityToolkit.Hosting.Ollama/OllamaResource.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResource.cs rename to src/Aspire.CommunityToolkit.Hosting.Ollama/OllamaResource.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResourceBuilderExtensions.cs b/src/Aspire.CommunityToolkit.Hosting.Ollama/OllamaResourceBuilderExtensions.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResourceBuilderExtensions.cs rename to src/Aspire.CommunityToolkit.Hosting.Ollama/OllamaResourceBuilderExtensions.cs diff --git a/src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResourceLifecycleHook.cs b/src/Aspire.CommunityToolkit.Hosting.Ollama/OllamaResourceLifecycleHook.cs similarity index 100% rename from src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResourceLifecycleHook.cs rename to src/Aspire.CommunityToolkit.Hosting.Ollama/OllamaResourceLifecycleHook.cs diff --git a/tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests.csproj b/tests/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests.csproj similarity index 100% rename from tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests.csproj rename to tests/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests.csproj diff --git a/tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/ResourceCreationTests.cs b/tests/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests/ResourceCreationTests.cs similarity index 100% rename from tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/ResourceCreationTests.cs rename to tests/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests/ResourceCreationTests.cs diff --git a/tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/SwaHostingComponentTests.cs b/tests/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests/SwaHostingComponentTests.cs similarity index 100% rename from tests/CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps.Tests/SwaHostingComponentTests.cs rename to tests/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests/SwaHostingComponentTests.cs diff --git a/tests/CommunityToolkit.Aspire.Hosting.Java.Tests/CommunityToolkit.Aspire.Hosting.Java.Tests.csproj b/tests/Aspire.CommunityToolkit.Hosting.Java.Tests/Aspire.CommunityToolkit.Hosting.Java.Tests.csproj similarity index 100% rename from tests/CommunityToolkit.Aspire.Hosting.Java.Tests/CommunityToolkit.Aspire.Hosting.Java.Tests.csproj rename to tests/Aspire.CommunityToolkit.Hosting.Java.Tests/Aspire.CommunityToolkit.Hosting.Java.Tests.csproj diff --git a/tests/CommunityToolkit.Aspire.Hosting.Java.Tests/JavaHostingComponentTests.cs b/tests/Aspire.CommunityToolkit.Hosting.Java.Tests/JavaHostingComponentTests.cs similarity index 100% rename from tests/CommunityToolkit.Aspire.Hosting.Java.Tests/JavaHostingComponentTests.cs rename to tests/Aspire.CommunityToolkit.Hosting.Java.Tests/JavaHostingComponentTests.cs diff --git a/tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/AppHostTests.cs b/tests/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests/AppHostTests.cs similarity index 100% rename from tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/AppHostTests.cs rename to tests/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests/AppHostTests.cs diff --git a/tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests.csproj b/tests/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests.csproj similarity index 100% rename from tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests.csproj rename to tests/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests.csproj diff --git a/tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/ResourceCreationTests.cs b/tests/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests/ResourceCreationTests.cs similarity index 100% rename from tests/CommunityToolkit.Aspire.Hosting.NodeJS.Extensions.Tests/ResourceCreationTests.cs rename to tests/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests/ResourceCreationTests.cs diff --git a/tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/AppHostTests.cs b/tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests/AppHostTests.cs similarity index 100% rename from tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/AppHostTests.cs rename to tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests/AppHostTests.cs diff --git a/tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests.csproj b/tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests.csproj similarity index 100% rename from tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests.csproj rename to tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests.csproj diff --git a/tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/ResourceCreationTests.cs b/tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests/ResourceCreationTests.cs similarity index 100% rename from tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/ResourceCreationTests.cs rename to tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests/ResourceCreationTests.cs diff --git a/tests/CommunityToolkit.Aspire.Testing/CommunityToolkit.Aspire.Testing.csproj b/tests/Aspire.CommunityToolkit.Testing/Aspire.CommunityToolkit.Testing.csproj similarity index 100% rename from tests/CommunityToolkit.Aspire.Testing/CommunityToolkit.Aspire.Testing.csproj rename to tests/Aspire.CommunityToolkit.Testing/Aspire.CommunityToolkit.Testing.csproj diff --git a/tests/CommunityToolkit.Aspire.Testing/AspireIntegrationTest.cs b/tests/Aspire.CommunityToolkit.Testing/AspireIntegrationTest.cs similarity index 100% rename from tests/CommunityToolkit.Aspire.Testing/AspireIntegrationTest.cs rename to tests/Aspire.CommunityToolkit.Testing/AspireIntegrationTest.cs diff --git a/tests/CommunityToolkit.Aspire.Testing/LoggerNotificationExtensions.cs b/tests/Aspire.CommunityToolkit.Testing/LoggerNotificationExtensions.cs similarity index 100% rename from tests/CommunityToolkit.Aspire.Testing/LoggerNotificationExtensions.cs rename to tests/Aspire.CommunityToolkit.Testing/LoggerNotificationExtensions.cs From 4d2889d5bc0e28eafdc92077a20a4b08a54256ed Mon Sep 17 00:00:00 2001 From: Aaron Powell Date: Tue, 24 Sep 2024 01:42:29 +0000 Subject: [PATCH 03/14] Updating test projects --- docs/contributing.md | 3 +-- docs/integrations/hosting-azure-static-web-apps.md | 3 +-- docs/integrations/hosting-java.md | 5 ++--- .../Aspire.CommunityToolkit.Hosting.Java.AppHost/Program.cs | 4 ++-- .../Program.cs | 2 +- .../Aspire.CommunityToolkit.StaticWebApps.AppHost/Program.cs | 2 +- .../SwaHostingComponentTests.cs | 2 +- .../JavaHostingComponentTests.cs | 2 +- .../AppHostTests.cs | 2 +- .../AppHostTests.cs | 2 +- 10 files changed, 12 insertions(+), 15 deletions(-) diff --git a/docs/contributing.md b/docs/contributing.md index f654d359..b3709229 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -41,7 +41,7 @@ Integration tests should use the sample application that is provided for the int Here is an example of an integration test: ```csharp -public class SwaHostingComponentTests(AspireIntegrationTestFixture fixture) : IClassFixture> { +public class SwaHostingComponentTests(AspireIntegrationTestFixture fixture) : IClassFixture> { // Write tests here } ``` @@ -63,4 +63,3 @@ All new integrations should have documentation that explains how to use the inte - Overview: A brief overview of the integration. - Configuration: A list of all the configuration parameters that are available for the integration. - Usage: A guide on how to use the integration in an AppHost project. - diff --git a/docs/integrations/hosting-azure-static-web-apps.md b/docs/integrations/hosting-azure-static-web-apps.md index 20fd4ecb..a702be8c 100644 --- a/docs/integrations/hosting-azure-static-web-apps.md +++ b/docs/integrations/hosting-azure-static-web-apps.md @@ -26,7 +26,7 @@ using Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps; var builder = DistributedApplication.CreateBuilder(args); // Define the API resource -var api = builder.AddProject("api"); +var api = builder.AddProject("api"); // Define the frontend resource var web = builder @@ -47,4 +47,3 @@ builder.Build().Run(); - `Port` - The port to run the emulator on. Defaults to `4280`. - `DevServerTimeout` - The timeout (in seconds) for the frontend dev server. Defaults to `60`. - diff --git a/docs/integrations/hosting-java.md b/docs/integrations/hosting-java.md index 1dc1b23f..df85b07d 100644 --- a/docs/integrations/hosting-java.md +++ b/docs/integrations/hosting-java.md @@ -52,7 +52,7 @@ var containerapp = builder.AddSpringApp("containerapp", }); // Add reference to the web app -var webapp = builder.AddProject("webapp") +var webapp = builder.AddProject("webapp") .WithExternalHttpEndpoints() .WithReference(containerapp); @@ -95,7 +95,7 @@ var executableapp = builder.AddSpringApp("executableapp", ]); // Add reference to the web app -var webapp = builder.AddProject("webapp") +var webapp = builder.AddProject("webapp") .WithExternalHttpEndpoints() .WithReference(executableapp); @@ -143,4 +143,3 @@ EXPOSE ${SERVER_PORT} ... ``` - diff --git a/examples/java/Aspire.CommunityToolkit.Hosting.Java.AppHost/Program.cs b/examples/java/Aspire.CommunityToolkit.Hosting.Java.AppHost/Program.cs index 0ebf3abc..ac860509 100644 --- a/examples/java/Aspire.CommunityToolkit.Hosting.Java.AppHost/Program.cs +++ b/examples/java/Aspire.CommunityToolkit.Hosting.Java.AppHost/Program.cs @@ -1,6 +1,6 @@ var builder = DistributedApplication.CreateBuilder(args); -var apiapp = builder.AddProject("apiapp"); +var apiapp = builder.AddProject("apiapp"); var containerapp = builder.AddSpringApp("containerapp", new JavaAppContainerResourceOptions() @@ -23,7 +23,7 @@ new DockerBuildArg("SERVER_PORT", "8085"), ]); -var webapp = builder.AddProject("webapp") +var webapp = builder.AddProject("webapp") .WithExternalHttpEndpoints() .WithReference(containerapp) .WithReference(executableapp) diff --git a/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.AppHost/Program.cs b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.AppHost/Program.cs index 132d2115..e9fcc4e4 100644 --- a/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.AppHost/Program.cs +++ b/examples/ollama/Aspire.CommunityToolkit.Hosting.Ollama.AppHost/Program.cs @@ -2,7 +2,7 @@ var ollama = builder.AddOllama("ollama", modelName: "phi3"); -builder.AddProject("webfrontend") +builder.AddProject("webfrontend") .WithExternalHttpEndpoints() .WithReference(ollama) .WithEnvironment("ollama:model", "phi3"); diff --git a/examples/swa/Aspire.CommunityToolkit.StaticWebApps.AppHost/Program.cs b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.AppHost/Program.cs index e4aca958..daa0504a 100644 --- a/examples/swa/Aspire.CommunityToolkit.StaticWebApps.AppHost/Program.cs +++ b/examples/swa/Aspire.CommunityToolkit.StaticWebApps.AppHost/Program.cs @@ -1,6 +1,6 @@ var builder = DistributedApplication.CreateBuilder(args); -var api = builder.AddProject("api"); +var api = builder.AddProject("api"); var web = builder .AddNpmApp("web", Path.Combine("..", "Aspire.CommunityToolkit.StaticWebApps.WebApp"), "dev") diff --git a/tests/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests/SwaHostingComponentTests.cs b/tests/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests/SwaHostingComponentTests.cs index 72e398d3..8ff67baf 100644 --- a/tests/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests/SwaHostingComponentTests.cs +++ b/tests/Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests/SwaHostingComponentTests.cs @@ -6,7 +6,7 @@ namespace Aspire.CommunityToolkit.Hosting.Azure.StaticWebApps.Tests; #pragma warning disable CTASPIRE001 -public class SwaHostingComponentTests(AspireIntegrationTestFixture fixture) : IClassFixture> +public class SwaHostingComponentTests(AspireIntegrationTestFixture fixture) : IClassFixture> { [Fact] public async Task CanAccessFrontendSuccessfully() diff --git a/tests/Aspire.CommunityToolkit.Hosting.Java.Tests/JavaHostingComponentTests.cs b/tests/Aspire.CommunityToolkit.Hosting.Java.Tests/JavaHostingComponentTests.cs index 92cfde17..b539f1f8 100644 --- a/tests/Aspire.CommunityToolkit.Hosting.Java.Tests/JavaHostingComponentTests.cs +++ b/tests/Aspire.CommunityToolkit.Hosting.Java.Tests/JavaHostingComponentTests.cs @@ -4,7 +4,7 @@ namespace Aspire.CommunityToolkit.Hosting.Java.Tests; #pragma warning disable CTASPIRE001 -public class JavaHostingComponentTests(AspireIntegrationTestFixture fixture) : IClassFixture> +public class JavaHostingComponentTests(AspireIntegrationTestFixture fixture) : IClassFixture> { [Theory] [InlineData("containerapp")] diff --git a/tests/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests/AppHostTests.cs b/tests/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests/AppHostTests.cs index 16d4299b..2dc12cb4 100644 --- a/tests/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests/AppHostTests.cs +++ b/tests/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests/AppHostTests.cs @@ -4,7 +4,7 @@ namespace Aspire.CommunityToolkit.Hosting.NodeJS.Extensions.Tests; #pragma warning disable CTASPIRE001 -public class AppHostTests(AspireIntegrationTestFixture fixture) : IClassFixture> +public class AppHostTests(AspireIntegrationTestFixture fixture) : IClassFixture> { [Theory] [InlineData("vite-demo")] diff --git a/tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests/AppHostTests.cs b/tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests/AppHostTests.cs index 86bc5771..91f43a78 100644 --- a/tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests/AppHostTests.cs +++ b/tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests/AppHostTests.cs @@ -3,7 +3,7 @@ namespace Aspire.CommunityToolkit.Hosting.Ollama.Tests; -public class AppHostTests(AspireIntegrationTestFixture fixture) : IClassFixture> +public class AppHostTests(AspireIntegrationTestFixture fixture) : IClassFixture> { [Fact] public async Task ResourceStartsAndRespondsOk() From 1199365cabf71e6986ce819b58610b67b855f310 Mon Sep 17 00:00:00 2001 From: Aaron Powell Date: Wed, 25 Sep 2024 00:57:45 +0000 Subject: [PATCH 04/14] Small docs layout fix --- docs/integrations/hosting-azure-static-web-apps.md | 4 ++-- docs/integrations/hosting-java.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/integrations/hosting-azure-static-web-apps.md b/docs/integrations/hosting-azure-static-web-apps.md index a702be8c..214d8774 100644 --- a/docs/integrations/hosting-azure-static-web-apps.md +++ b/docs/integrations/hosting-azure-static-web-apps.md @@ -9,12 +9,12 @@ This is a .NET Aspire Integration for using the [Azure Static Web App CLI](https It provides support for proxying both the static frontend and the API backend using resources defined in the AppHost project. !!! note -This does not support deployment to Azure Static Web Apps. + This does not support deployment to Azure Static Web Apps. ## Usage !!! note -This integration requires the Azure Static Web Apps CLI to be installed. You can install it using the following command: + This integration requires the Azure Static Web Apps CLI to be installed. You can install it using the following command: ```bash npm install -g @azure/static-web-apps-cli diff --git a/docs/integrations/hosting-java.md b/docs/integrations/hosting-java.md index df85b07d..154a102b 100644 --- a/docs/integrations/hosting-java.md +++ b/docs/integrations/hosting-java.md @@ -34,7 +34,7 @@ It provides support for both container options and executable options for the Ja ## Usage !!! note -This integration requires your Java/Spring application to be compiled and built through Maven, Gradle or any other build tool that generates a JAR file. + This integration requires your Java/Spring application to be compiled and built through Maven, Gradle or any other build tool that generates a JAR file. ### Use the containerized Spring app From d0c44b04f5ee560c255bc6e0e03fa06c334fa5cc Mon Sep 17 00:00:00 2001 From: Aaron Powell Date: Wed, 25 Sep 2024 01:03:29 +0000 Subject: [PATCH 05/14] Fixing CI pipes --- .github/workflows/ci-test-reporting.yml | 6 +++--- .github/workflows/dotnet-ci.yml | 12 ++++++++---- .github/workflows/dotnet-main.yml | 12 ++++++++---- .github/workflows/dotnet-release.yml | 11 ++++++++--- 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci-test-reporting.yml b/.github/workflows/ci-test-reporting.yml index bea118e9..13fa209c 100644 --- a/.github/workflows/ci-test-reporting.yml +++ b/.github/workflows/ci-test-reporting.yml @@ -18,7 +18,7 @@ jobs: uses: phoenix-actions/test-reporting@v15 id: test-report with: - name: ".NET Test report" - path: "*.trx" + name: ".NET Test report $1" + path: "**/*.trx" reporter: dotnet-trx - artifact: test-results + artifact: /test-results-(.*)/ diff --git a/.github/workflows/dotnet-ci.yml b/.github/workflows/dotnet-ci.yml index c9aa86a6..be90e6d9 100644 --- a/.github/workflows/dotnet-ci.yml +++ b/.github/workflows/dotnet-ci.yml @@ -12,7 +12,12 @@ jobs: build: strategy: matrix: - os: [windows-latest, ubuntu-latest, macos-latest] + os: [ + windows-latest + , ubuntu-latest + #, macos-latest + ] + fail-fast: false runs-on: "${{ matrix.os }}" env: DOTNET_CONFIGURATION: Release @@ -91,7 +96,7 @@ jobs: uses: actions/upload-artifact@v4 if: always() with: - name: test-results + name: test-results-${{ matrix.os }} path: | ${{ github.workspace }}/test-results/** @@ -107,5 +112,4 @@ jobs: name: nuget-packages - name: Publish to GitHub packages - run: dotnet nuget push ./*.nupkg --source "https://nuget.pkg.github.com/communitytoolkit/index.json" --api-key ${{ secrets.GITHUB_TOKEN }} - + run: dotnet nuget push ./*.nupkg --source "https://nuget.pkg.github.com/communitytoolkit/index.json" --api-key ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/dotnet-main.yml b/.github/workflows/dotnet-main.yml index 78ab1053..a4df4e86 100644 --- a/.github/workflows/dotnet-main.yml +++ b/.github/workflows/dotnet-main.yml @@ -12,7 +12,12 @@ jobs: build: strategy: matrix: - os: [windows-latest, ubuntu-latest, macos-latest] + os: [ + windows-latest + , ubuntu-latest + #, macos-latest + ] + fail-fast: false runs-on: "${{ matrix.os }}" env: DOTNET_CONFIGURATION: Release @@ -90,7 +95,7 @@ jobs: uses: actions/upload-artifact@v4 if: always() with: - name: test-results + name: test-results-${{ matrix.os }} path: | ${{ github.workspace }}/test-results/** @@ -142,5 +147,4 @@ jobs: name: nuget-packages - name: Publish to GitHub packages - run: dotnet nuget push ./*.nupkg --source "https://nuget.pkg.github.com/communitytoolkit/index.json" --api-key ${{ secrets.GITHUB_TOKEN }} - + run: dotnet nuget push ./*.nupkg --source "https://nuget.pkg.github.com/communitytoolkit/index.json" --api-key ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/dotnet-release.yml b/.github/workflows/dotnet-release.yml index 32dff2a3..fb7dfb04 100644 --- a/.github/workflows/dotnet-release.yml +++ b/.github/workflows/dotnet-release.yml @@ -13,7 +13,12 @@ jobs: build: strategy: matrix: - os: [windows-latest, ubuntu-latest, macos-latest] + os: [ + windows-latest + , ubuntu-latest + #, macos-latest + ] + fail-fast: false runs-on: "${{ matrix.os }}" env: DOTNET_CONFIGURATION: Release @@ -90,7 +95,7 @@ jobs: uses: actions/upload-artifact@v4 if: always() with: - name: test-results + name: test-results-${{ matrix.os }} path: | ${{ github.workspace }}/test-results/** @@ -159,4 +164,4 @@ jobs: name: nuget-packages - name: Publish to GitHub packages - run: dotnet nuget push ./*.nupkg --source "https://nuget.pkg.github.com/communitytoolkit/index.json" --api-key ${{ secrets.GITHUB_TOKEN }} + run: dotnet nuget push ./*.nupkg --source "https://nuget.pkg.github.com/communitytoolkit/index.json" --api-key ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From d5bc63d0817748ae93b33c807d1d22727e6ab271 Mon Sep 17 00:00:00 2001 From: Aaron Powell Date: Wed, 25 Sep 2024 04:26:24 +0000 Subject: [PATCH 06/14] handling Windows invocation of npm and associated commands --- .../NodePackageInstaller.cs | 69 +++++++++++-------- 1 file changed, 41 insertions(+), 28 deletions(-) diff --git a/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NodePackageInstaller.cs b/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NodePackageInstaller.cs index bfd1a382..f6155355 100644 --- a/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NodePackageInstaller.cs +++ b/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NodePackageInstaller.cs @@ -60,7 +60,7 @@ await notificationService.PublishUpdateAsync(resource, state => state with logger.LogInformation("Installing {PackageManager} packages in {WorkingDirectory}", packageManager, resource.WorkingDirectory); - var packageInstaller = new Process + var packageInstaller = !RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? => new Process { StartInfo = new ProcessStartInfo { @@ -69,51 +69,64 @@ await notificationService.PublishUpdateAsync(resource, state => state with WorkingDirectory = resource.WorkingDirectory, RedirectStandardOutput = true, RedirectStandardError = true, - UseShellExecute = false, - CreateNoWindow = true + CreateNoWindow = true, + UseShellExecute = true, } - }; - - packageInstaller.OutputDataReceived += async (sender, args) => - { - if (!string.IsNullOrWhiteSpace(args.Data)) + : new Process { - await notificationService.PublishUpdateAsync(resource, state => state with + StartInfo = new ProcessStartInfo { - State = new(args.Data, KnownResourceStates.Starting) - }).ConfigureAwait(false); - - logger.LogInformation("{Data}", args.Data); + FileName = "cmd", + Arguments = $"/c {packageManager} install", + WorkingDirectory = resource.WorkingDirectory, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true, + UseShellExecute = false, + } } }; - packageInstaller.ErrorDataReceived += async (sender, args) => + packageInstaller.OutputDataReceived += async(sender, args) => { if (!string.IsNullOrWhiteSpace(args.Data)) { await notificationService.PublishUpdateAsync(resource, state => state with { - State = new(args.Data, KnownResourceStates.FailedToStart) + State = new(args.Data, KnownResourceStates.Starting) }).ConfigureAwait(false); - logger.LogError("{Data}", args.Data); + logger.LogInformation("{Data}", args.Data); } }; - packageInstaller.Start(); - packageInstaller.BeginOutputReadLine(); - packageInstaller.BeginErrorReadLine(); +packageInstaller.ErrorDataReceived += async (sender, args) => +{ + if (!string.IsNullOrWhiteSpace(args.Data)) + { + await notificationService.PublishUpdateAsync(resource, state => state with + { + State = new(args.Data, KnownResourceStates.FailedToStart) + }).ConfigureAwait(false); + + logger.LogError("{Data}", args.Data); + } +}; - packageInstaller.WaitForExit(); +packageInstaller.Start(); +packageInstaller.BeginOutputReadLine(); +packageInstaller.BeginErrorReadLine(); - if (packageInstaller.ExitCode != 0) - { - await notificationService.PublishUpdateAsync(resource, state => state with - { - State = new($"{packageManager} exited with {packageInstaller.ExitCode}", KnownResourceStates.FailedToStart) - }).ConfigureAwait(false); +packageInstaller.WaitForExit(); - throw new InvalidOperationException($"{packageManager} install failed with exit code {packageInstaller.ExitCode}"); - } +if (packageInstaller.ExitCode != 0) +{ + await notificationService.PublishUpdateAsync(resource, state => state with + { + State = new($"{packageManager} exited with {packageInstaller.ExitCode}", KnownResourceStates.FailedToStart) + }).ConfigureAwait(false); + + throw new InvalidOperationException($"{packageManager} install failed with exit code {packageInstaller.ExitCode}"); +} } } \ No newline at end of file From 995482c059cd66c7f3e0a87326b6b73a89adc193 Mon Sep 17 00:00:00 2001 From: Aaron Powell Date: Wed, 25 Sep 2024 04:35:14 +0000 Subject: [PATCH 07/14] totally didn't paste and push... --- .../NodePackageInstaller.cs | 75 ++++++++++--------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NodePackageInstaller.cs b/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NodePackageInstaller.cs index f6155355..78832970 100644 --- a/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NodePackageInstaller.cs +++ b/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NodePackageInstaller.cs @@ -2,6 +2,7 @@ using Aspire.Hosting.ApplicationModel; using Microsoft.Extensions.Logging; using System.Diagnostics; +using System.Runtime.InteropServices; namespace Aspire.CommunityToolkit.Hosting.NodeJS.Extensions; @@ -60,7 +61,7 @@ await notificationService.PublishUpdateAsync(resource, state => state with logger.LogInformation("Installing {PackageManager} packages in {WorkingDirectory}", packageManager, resource.WorkingDirectory); - var packageInstaller = !RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? => new Process + var packageInstaller = !RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? new Process { StartInfo = new ProcessStartInfo { @@ -72,61 +73,61 @@ await notificationService.PublishUpdateAsync(resource, state => state with CreateNoWindow = true, UseShellExecute = true, } - : new Process + } + : new Process + { + StartInfo = new ProcessStartInfo { - StartInfo = new ProcessStartInfo - { - FileName = "cmd", - Arguments = $"/c {packageManager} install", - WorkingDirectory = resource.WorkingDirectory, - RedirectStandardOutput = true, - RedirectStandardError = true, - CreateNoWindow = true, - UseShellExecute = false, - } + FileName = "cmd", + Arguments = $"/c {packageManager} install", + WorkingDirectory = resource.WorkingDirectory, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true, + UseShellExecute = false, } }; - packageInstaller.OutputDataReceived += async(sender, args) => + packageInstaller.OutputDataReceived += async (sender, args) => { if (!string.IsNullOrWhiteSpace(args.Data)) { await notificationService.PublishUpdateAsync(resource, state => state with { - State = new(args.Data, KnownResourceStates.Starting) + State = new(args.Data, KnownResourceStates.Starting) }).ConfigureAwait(false); - logger.LogInformation("{Data}", args.Data); + logger.LogInformation("{Data}", args.Data); } }; -packageInstaller.ErrorDataReceived += async (sender, args) => -{ - if (!string.IsNullOrWhiteSpace(args.Data)) - { - await notificationService.PublishUpdateAsync(resource, state => state with + packageInstaller.ErrorDataReceived += async (sender, args) => { - State = new(args.Data, KnownResourceStates.FailedToStart) - }).ConfigureAwait(false); + if (!string.IsNullOrWhiteSpace(args.Data)) + { + await notificationService.PublishUpdateAsync(resource, state => state with + { + State = new(args.Data, KnownResourceStates.FailedToStart) + }).ConfigureAwait(false); - logger.LogError("{Data}", args.Data); - } -}; + logger.LogError("{Data}", args.Data); + } + }; -packageInstaller.Start(); -packageInstaller.BeginOutputReadLine(); -packageInstaller.BeginErrorReadLine(); + packageInstaller.Start(); + packageInstaller.BeginOutputReadLine(); + packageInstaller.BeginErrorReadLine(); -packageInstaller.WaitForExit(); + packageInstaller.WaitForExit(); -if (packageInstaller.ExitCode != 0) -{ - await notificationService.PublishUpdateAsync(resource, state => state with - { - State = new($"{packageManager} exited with {packageInstaller.ExitCode}", KnownResourceStates.FailedToStart) - }).ConfigureAwait(false); + if (packageInstaller.ExitCode != 0) + { + await notificationService.PublishUpdateAsync(resource, state => state with + { + State = new($"{packageManager} exited with {packageInstaller.ExitCode}", KnownResourceStates.FailedToStart) + }).ConfigureAwait(false); - throw new InvalidOperationException($"{packageManager} install failed with exit code {packageInstaller.ExitCode}"); -} + throw new InvalidOperationException($"{packageManager} install failed with exit code {packageInstaller.ExitCode}"); + } } } \ No newline at end of file From 99f26c24a7ae07fa8331dfd67816fa43e0f7e1c2 Mon Sep 17 00:00:00 2001 From: Aaron Powell Date: Wed, 25 Sep 2024 04:42:29 +0000 Subject: [PATCH 08/14] Fixing launch code for linux --- .../NodePackageInstaller.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NodePackageInstaller.cs b/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NodePackageInstaller.cs index 78832970..c674dfaa 100644 --- a/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NodePackageInstaller.cs +++ b/src/Aspire.CommunityToolkit.Hosting.NodeJS.Extensions/NodePackageInstaller.cs @@ -71,7 +71,7 @@ await notificationService.PublishUpdateAsync(resource, state => state with RedirectStandardOutput = true, RedirectStandardError = true, CreateNoWindow = true, - UseShellExecute = true, + UseShellExecute = false, } } : new Process From 33f58474bb22ea19047edec58f46b1c172bee788 Mon Sep 17 00:00:00 2001 From: Aaron Powell Date: Wed, 25 Sep 2024 05:20:13 +0000 Subject: [PATCH 09/14] little Windows debugging --- .github/workflows/dotnet-ci.yml | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/.github/workflows/dotnet-ci.yml b/.github/workflows/dotnet-ci.yml index be90e6d9..103bfb31 100644 --- a/.github/workflows/dotnet-ci.yml +++ b/.github/workflows/dotnet-ci.yml @@ -13,9 +13,9 @@ jobs: strategy: matrix: os: [ - windows-latest - , ubuntu-latest - #, macos-latest + windows-latest, + ubuntu-latest, + #, macos-latest ] fail-fast: false runs-on: "${{ matrix.os }}" @@ -23,6 +23,13 @@ jobs: DOTNET_CONFIGURATION: Release steps: + - name: Docker Info on Windows + if: ${{ runner.os == 'windows-latest' }} + shell: pwsh + run: | + Get-Command docker + docker --version + - uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v4 @@ -112,4 +119,4 @@ jobs: name: nuget-packages - name: Publish to GitHub packages - run: dotnet nuget push ./*.nupkg --source "https://nuget.pkg.github.com/communitytoolkit/index.json" --api-key ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + run: dotnet nuget push ./*.nupkg --source "https://nuget.pkg.github.com/communitytoolkit/index.json" --api-key ${{ secrets.GITHUB_TOKEN }} From 4abf3980ef4d7a28333f1dc4a57d2ca745989443 Mon Sep 17 00:00:00 2001 From: Aaron Powell Date: Wed, 25 Sep 2024 05:24:10 +0000 Subject: [PATCH 10/14] trying matrix not runner --- .github/workflows/dotnet-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dotnet-ci.yml b/.github/workflows/dotnet-ci.yml index 103bfb31..02acfced 100644 --- a/.github/workflows/dotnet-ci.yml +++ b/.github/workflows/dotnet-ci.yml @@ -24,7 +24,7 @@ jobs: steps: - name: Docker Info on Windows - if: ${{ runner.os == 'windows-latest' }} + if: ${{ matrix.os == 'windows-latest' }} shell: pwsh run: | Get-Command docker From 14ca0614fbd43cf838ae1f65029c67e2ddd4d7f9 Mon Sep 17 00:00:00 2001 From: Aaron Powell Date: Wed, 25 Sep 2024 05:50:29 +0000 Subject: [PATCH 11/14] more verbose docker info --- .github/workflows/dotnet-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dotnet-ci.yml b/.github/workflows/dotnet-ci.yml index 02acfced..d7da2871 100644 --- a/.github/workflows/dotnet-ci.yml +++ b/.github/workflows/dotnet-ci.yml @@ -28,7 +28,7 @@ jobs: shell: pwsh run: | Get-Command docker - docker --version + docker info - uses: actions/checkout@v4 - name: Setup .NET From 8253a679c8f6277a1cf7067a38d021fd1c3ad75e Mon Sep 17 00:00:00 2001 From: Aaron Powell Date: Wed, 25 Sep 2024 06:05:43 +0000 Subject: [PATCH 12/14] Disabling some tests on Windows. GitHub Actions only supports Windows containers on their agents, which means that we can't pull certain container images during tests. Guess that sees some tests disabled on Windows... --- .github/workflows/dotnet-ci.yml | 7 -- .../JavaHostingComponentTests.cs | 22 ++++- .../AppHostTests.cs | 4 +- .../XUnit/ConditionalFactAttribute.cs | 16 ++++ .../XUnit/ConditionalFactDiscoverer.cs | 29 ++++++ .../XUnit/ConditionalTheoryAttribute.cs | 16 ++++ .../XUnit/ConditionalTheoryDiscoverer.cs | 84 ++++++++++++++++++ .../XUnit/ITestCondition.cs | 13 +++ .../XUnit/OSSkipConditionAttribute.cs | 69 +++++++++++++++ .../XUnit/OperatingSystems.cs | 16 ++++ .../XUnit/SkippedTestCase.cs | 52 +++++++++++ .../XUnit/TestMethodExtensions.cs | 35 ++++++++ .../WORKAROUND_SkippedDataRowTestCase.cs | 88 +++++++++++++++++++ 13 files changed, 439 insertions(+), 12 deletions(-) create mode 100644 tests/Aspire.CommunityToolkit.Testing/XUnit/ConditionalFactAttribute.cs create mode 100644 tests/Aspire.CommunityToolkit.Testing/XUnit/ConditionalFactDiscoverer.cs create mode 100644 tests/Aspire.CommunityToolkit.Testing/XUnit/ConditionalTheoryAttribute.cs create mode 100644 tests/Aspire.CommunityToolkit.Testing/XUnit/ConditionalTheoryDiscoverer.cs create mode 100644 tests/Aspire.CommunityToolkit.Testing/XUnit/ITestCondition.cs create mode 100644 tests/Aspire.CommunityToolkit.Testing/XUnit/OSSkipConditionAttribute.cs create mode 100644 tests/Aspire.CommunityToolkit.Testing/XUnit/OperatingSystems.cs create mode 100644 tests/Aspire.CommunityToolkit.Testing/XUnit/SkippedTestCase.cs create mode 100644 tests/Aspire.CommunityToolkit.Testing/XUnit/TestMethodExtensions.cs create mode 100644 tests/Aspire.CommunityToolkit.Testing/XUnit/WORKAROUND_SkippedDataRowTestCase.cs diff --git a/.github/workflows/dotnet-ci.yml b/.github/workflows/dotnet-ci.yml index d7da2871..f0b97c0e 100644 --- a/.github/workflows/dotnet-ci.yml +++ b/.github/workflows/dotnet-ci.yml @@ -23,13 +23,6 @@ jobs: DOTNET_CONFIGURATION: Release steps: - - name: Docker Info on Windows - if: ${{ matrix.os == 'windows-latest' }} - shell: pwsh - run: | - Get-Command docker - docker info - - uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v4 diff --git a/tests/Aspire.CommunityToolkit.Hosting.Java.Tests/JavaHostingComponentTests.cs b/tests/Aspire.CommunityToolkit.Hosting.Java.Tests/JavaHostingComponentTests.cs index b539f1f8..09403403 100644 --- a/tests/Aspire.CommunityToolkit.Hosting.Java.Tests/JavaHostingComponentTests.cs +++ b/tests/Aspire.CommunityToolkit.Hosting.Java.Tests/JavaHostingComponentTests.cs @@ -1,16 +1,30 @@ using Aspire.CommunityToolkit.Testing; using FluentAssertions; +using Microsoft.TestUtilities; namespace Aspire.CommunityToolkit.Hosting.Java.Tests; #pragma warning disable CTASPIRE001 public class JavaHostingComponentTests(AspireIntegrationTestFixture fixture) : IClassFixture> { - [Theory] - [InlineData("containerapp")] - [InlineData("executableapp")] - public async Task ResourceWillRespondWithOk(string resourceName) + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Windows)] + public async Task ContainerAppResourceWillRespondWithOk() { + var resourceName = "containerapp"; + var httpClient = fixture.CreateHttpClient(resourceName); + + await fixture.App.WaitForTextAsync("Started SpringMavenApplication", resourceName).WaitAsync(TimeSpan.FromMinutes(5)); + + var response = await httpClient.GetAsync("/"); + + response.StatusCode.Should().Be(HttpStatusCode.OK); + } + + [Fact] + public async Task ExecutableAppResourceWillRespondWithOk() + { + var resourceName = "executableapp"; var httpClient = fixture.CreateHttpClient(resourceName); await fixture.App.WaitForTextAsync("Started SpringMavenApplication", resourceName).WaitAsync(TimeSpan.FromMinutes(5)); diff --git a/tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests/AppHostTests.cs b/tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests/AppHostTests.cs index 91f43a78..af71560a 100644 --- a/tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests/AppHostTests.cs +++ b/tests/Aspire.CommunityToolkit.Hosting.Ollama.Tests/AppHostTests.cs @@ -1,11 +1,13 @@ using Aspire.CommunityToolkit.Testing; using FluentAssertions; +using Microsoft.TestUtilities; namespace Aspire.CommunityToolkit.Hosting.Ollama.Tests; public class AppHostTests(AspireIntegrationTestFixture fixture) : IClassFixture> { - [Fact] + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Windows)] public async Task ResourceStartsAndRespondsOk() { await fixture.ResourceNotificationService.WaitForResourceAsync("ollama", KnownResourceStates.Running).WaitAsync(TimeSpan.FromMinutes(5)); diff --git a/tests/Aspire.CommunityToolkit.Testing/XUnit/ConditionalFactAttribute.cs b/tests/Aspire.CommunityToolkit.Testing/XUnit/ConditionalFactAttribute.cs new file mode 100644 index 00000000..92077e27 --- /dev/null +++ b/tests/Aspire.CommunityToolkit.Testing/XUnit/ConditionalFactAttribute.cs @@ -0,0 +1,16 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Borrowed from https://github.com/dotnet/aspnetcore/blob/95ed45c67/src/Testing/src/xunit/ + +using System; +using Xunit; +using Xunit.Sdk; + +namespace Microsoft.TestUtilities; + +[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] +[XunitTestCaseDiscoverer("Microsoft.TestUtilities." + nameof(ConditionalFactDiscoverer), "Microsoft.TestUtilities")] +public class ConditionalFactAttribute : FactAttribute +{ +} diff --git a/tests/Aspire.CommunityToolkit.Testing/XUnit/ConditionalFactDiscoverer.cs b/tests/Aspire.CommunityToolkit.Testing/XUnit/ConditionalFactDiscoverer.cs new file mode 100644 index 00000000..a2787670 --- /dev/null +++ b/tests/Aspire.CommunityToolkit.Testing/XUnit/ConditionalFactDiscoverer.cs @@ -0,0 +1,29 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Borrowed from https://github.com/dotnet/aspnetcore/blob/95ed45c67/src/Testing/src/xunit/ + +using Xunit.Abstractions; +using Xunit.Sdk; + +// Do not change this namespace without changing the usage in ConditionalFactAttribute +namespace Microsoft.TestUtilities; + +internal sealed class ConditionalFactDiscoverer : FactDiscoverer +{ + private readonly IMessageSink _diagnosticMessageSink; + + public ConditionalFactDiscoverer(IMessageSink diagnosticMessageSink) + : base(diagnosticMessageSink) + { + _diagnosticMessageSink = diagnosticMessageSink; + } + + protected override IXunitTestCase CreateTestCase(ITestFrameworkDiscoveryOptions discoveryOptions, ITestMethod testMethod, IAttributeInfo factAttribute) + { + var skipReason = testMethod.EvaluateSkipConditions(); + return skipReason != null + ? new SkippedTestCase(skipReason, _diagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), TestMethodDisplayOptions.None, testMethod) + : base.CreateTestCase(discoveryOptions, testMethod, factAttribute); + } +} diff --git a/tests/Aspire.CommunityToolkit.Testing/XUnit/ConditionalTheoryAttribute.cs b/tests/Aspire.CommunityToolkit.Testing/XUnit/ConditionalTheoryAttribute.cs new file mode 100644 index 00000000..d5f23068 --- /dev/null +++ b/tests/Aspire.CommunityToolkit.Testing/XUnit/ConditionalTheoryAttribute.cs @@ -0,0 +1,16 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Borrowed from https://github.com/dotnet/aspnetcore/blob/95ed45c67/src/Testing/src/xunit/ + +using System; +using Xunit; +using Xunit.Sdk; + +namespace Microsoft.TestUtilities; + +[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] +[XunitTestCaseDiscoverer("Microsoft.TestUtilities." + nameof(ConditionalTheoryDiscoverer), "Microsoft.TestUtilities")] +public class ConditionalTheoryAttribute : TheoryAttribute +{ +} diff --git a/tests/Aspire.CommunityToolkit.Testing/XUnit/ConditionalTheoryDiscoverer.cs b/tests/Aspire.CommunityToolkit.Testing/XUnit/ConditionalTheoryDiscoverer.cs new file mode 100644 index 00000000..846038f8 --- /dev/null +++ b/tests/Aspire.CommunityToolkit.Testing/XUnit/ConditionalTheoryDiscoverer.cs @@ -0,0 +1,84 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Borrowed from https://github.com/dotnet/aspnetcore/blob/95ed45c67/src/Testing/src/xunit/ + +using System; +using System.Collections.Generic; +using Xunit.Abstractions; +using Xunit.Sdk; + +// Do not change this namespace without changing the usage in ConditionalTheoryAttribute +namespace Microsoft.TestUtilities; + +internal sealed class ConditionalTheoryDiscoverer : TheoryDiscoverer +{ + public ConditionalTheoryDiscoverer(IMessageSink diagnosticMessageSink) + : base(diagnosticMessageSink) + { + } + + private sealed class OptionsWithPreEnumerationEnabled : ITestFrameworkDiscoveryOptions + { + private const string PreEnumerateTheories = "xunit.discovery.PreEnumerateTheories"; + + private readonly ITestFrameworkDiscoveryOptions _original; + + public OptionsWithPreEnumerationEnabled(ITestFrameworkDiscoveryOptions original) + { + _original = original; + } + + public TValue GetValue(string name) + => (name == PreEnumerateTheories) ? (TValue)(object)true : _original.GetValue(name); + + public void SetValue(string name, TValue value) + => _original.SetValue(name, value); + } + + public override IEnumerable Discover(ITestFrameworkDiscoveryOptions discoveryOptions, ITestMethod testMethod, IAttributeInfo theoryAttribute) + => base.Discover(new OptionsWithPreEnumerationEnabled(discoveryOptions), testMethod, theoryAttribute); + + protected override IEnumerable CreateTestCasesForTheory(ITestFrameworkDiscoveryOptions discoveryOptions, ITestMethod testMethod, IAttributeInfo theoryAttribute) + { + var skipReason = testMethod.EvaluateSkipConditions(); + return skipReason != null + ? new[] { new SkippedTestCase(skipReason, DiagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), TestMethodDisplayOptions.None, testMethod) } + : base.CreateTestCasesForTheory(discoveryOptions, testMethod, theoryAttribute); + } + + protected override IEnumerable CreateTestCasesForDataRow(ITestFrameworkDiscoveryOptions discoveryOptions, ITestMethod testMethod, IAttributeInfo theoryAttribute, object[]? dataRow) + { + var skipReason = testMethod.EvaluateSkipConditions(); + if (skipReason == null && dataRow?.Length > 0) + { + var obj = dataRow[0]; + if (obj != null) + { + var type = obj.GetType(); + var property = type.GetProperty("Skip"); + if (property != null && property.PropertyType.Equals(typeof(string))) + { + skipReason = property.GetValue(obj) as string; + } + } + } + + return skipReason != null ? + base.CreateTestCasesForSkippedDataRow(discoveryOptions, testMethod, theoryAttribute, dataRow, skipReason) + : base.CreateTestCasesForDataRow(discoveryOptions, testMethod, theoryAttribute, dataRow); + } + + protected override IEnumerable CreateTestCasesForSkippedDataRow( + ITestFrameworkDiscoveryOptions discoveryOptions, + ITestMethod testMethod, + IAttributeInfo theoryAttribute, + object[] dataRow, + string skipReason) + { + return new[] + { + new WORKAROUND_SkippedDataRowTestCase(DiagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), discoveryOptions.MethodDisplayOptionsOrDefault(), testMethod, skipReason, dataRow), + }; + } +} diff --git a/tests/Aspire.CommunityToolkit.Testing/XUnit/ITestCondition.cs b/tests/Aspire.CommunityToolkit.Testing/XUnit/ITestCondition.cs new file mode 100644 index 00000000..347f3c69 --- /dev/null +++ b/tests/Aspire.CommunityToolkit.Testing/XUnit/ITestCondition.cs @@ -0,0 +1,13 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Borrowed from https://github.com/dotnet/aspnetcore/blob/95ed45c67/src/Testing/src/xunit/ + +namespace Microsoft.TestUtilities; + +public interface ITestCondition +{ + bool IsMet { get; } + + string SkipReason { get; } +} diff --git a/tests/Aspire.CommunityToolkit.Testing/XUnit/OSSkipConditionAttribute.cs b/tests/Aspire.CommunityToolkit.Testing/XUnit/OSSkipConditionAttribute.cs new file mode 100644 index 00000000..143cd700 --- /dev/null +++ b/tests/Aspire.CommunityToolkit.Testing/XUnit/OSSkipConditionAttribute.cs @@ -0,0 +1,69 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Borrowed from https://github.com/dotnet/aspnetcore/blob/95ed45c67/src/Testing/src/xunit/ + +using System; +#if NETCOREAPP || NET471_OR_GREATER +using System.Runtime.InteropServices; +#endif + +namespace Microsoft.TestUtilities; + +#pragma warning disable CA1019 // Define accessors for attribute arguments +[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly, AllowMultiple = true)] +public class OSSkipConditionAttribute : Attribute, ITestCondition +{ + private readonly OperatingSystems _excludedOperatingSystem; + private readonly OperatingSystems _osPlatform; + + public OSSkipConditionAttribute(OperatingSystems operatingSystem) + : this(operatingSystem, GetCurrentOS()) + { + } + + // to enable unit testing + internal OSSkipConditionAttribute(OperatingSystems operatingSystem, OperatingSystems osPlatform) + { + _excludedOperatingSystem = operatingSystem; + _osPlatform = osPlatform; + } + + public bool IsMet + { + get + { + var skip = (_excludedOperatingSystem & _osPlatform) == _osPlatform; + + // Since a test would be executed only if 'IsMet' is true, return false if we want to skip + return !skip; + } + } + + public string SkipReason { get; set; } = "Test cannot run on this operating system."; + + private static OperatingSystems GetCurrentOS() + { +#if NETCOREAPP || NET471_OR_GREATER + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + return OperatingSystems.Windows; + } + else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) + { + return OperatingSystems.Linux; + } + else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + { + return OperatingSystems.MacOSX; + } + + throw new PlatformNotSupportedException(); +#else + // RuntimeInformation API is only avaialble in .NET Framework 4.7.1+ + // .NET Framework 4.7 and below can only run on Windows. + return OperatingSystems.Windows; +#endif + } +} +#pragma warning restore CA1019 // Define accessors for attribute arguments diff --git a/tests/Aspire.CommunityToolkit.Testing/XUnit/OperatingSystems.cs b/tests/Aspire.CommunityToolkit.Testing/XUnit/OperatingSystems.cs new file mode 100644 index 00000000..3bee3bac --- /dev/null +++ b/tests/Aspire.CommunityToolkit.Testing/XUnit/OperatingSystems.cs @@ -0,0 +1,16 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Borrowed from https://github.com/dotnet/aspnetcore/blob/95ed45c67/src/Testing/src/xunit/ + +using System; + +namespace Microsoft.TestUtilities; + +[Flags] +public enum OperatingSystems +{ + Linux = 1, + MacOSX = 2, + Windows = 4, +} diff --git a/tests/Aspire.CommunityToolkit.Testing/XUnit/SkippedTestCase.cs b/tests/Aspire.CommunityToolkit.Testing/XUnit/SkippedTestCase.cs new file mode 100644 index 00000000..7b59125f --- /dev/null +++ b/tests/Aspire.CommunityToolkit.Testing/XUnit/SkippedTestCase.cs @@ -0,0 +1,52 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Borrowed from https://github.com/dotnet/aspnetcore/blob/95ed45c67/src/Testing/src/xunit/ + +#nullable disable + +using System; +using Xunit.Abstractions; +using Xunit.Sdk; + +namespace Microsoft.TestUtilities; + +public class SkippedTestCase : XunitTestCase +{ + private string _skipReason; + + [Obsolete("Called by the de-serializer; should only be called by deriving classes for de-serialization purposes")] + public SkippedTestCase() + { + } + + public SkippedTestCase( + string skipReason, + IMessageSink diagnosticMessageSink, + TestMethodDisplay defaultMethodDisplay, + TestMethodDisplayOptions defaultMethodDisplayOptions, + ITestMethod testMethod, + object[] testMethodArguments = null) + : base(diagnosticMessageSink, defaultMethodDisplay, defaultMethodDisplayOptions, testMethod, testMethodArguments) + { + _skipReason = skipReason; + } + + protected override string GetSkipReason(IAttributeInfo factAttribute) + => _skipReason ?? base.GetSkipReason(factAttribute); + + public override void Deserialize(IXunitSerializationInfo data) + { + _skipReason = data.GetValue(nameof(_skipReason)); + + // We need to call base after reading our value, because Deserialize will call + // into GetSkipReason. + base.Deserialize(data); + } + + public override void Serialize(IXunitSerializationInfo data) + { + base.Serialize(data); + data.AddValue(nameof(_skipReason), _skipReason); + } +} diff --git a/tests/Aspire.CommunityToolkit.Testing/XUnit/TestMethodExtensions.cs b/tests/Aspire.CommunityToolkit.Testing/XUnit/TestMethodExtensions.cs new file mode 100644 index 00000000..88356330 --- /dev/null +++ b/tests/Aspire.CommunityToolkit.Testing/XUnit/TestMethodExtensions.cs @@ -0,0 +1,35 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Borrowed from https://github.com/dotnet/aspnetcore/blob/95ed45c67/src/Testing/src/xunit/ + +using System.Linq; +using Xunit.Abstractions; +using Xunit.Sdk; + +namespace Microsoft.TestUtilities; + +public static class TestMethodExtensions +{ + public static string? EvaluateSkipConditions(this ITestMethod testMethod) + { + var testClass = testMethod.TestClass.Class; + var assembly = testMethod.TestClass.TestCollection.TestAssembly.Assembly; + var conditionAttributes = testMethod.Method + .GetCustomAttributes(typeof(ITestCondition)) + .Concat(testClass.GetCustomAttributes(typeof(ITestCondition))) + .Concat(assembly.GetCustomAttributes(typeof(ITestCondition))) + .OfType() + .Select(attributeInfo => attributeInfo.Attribute); + + foreach (ITestCondition condition in conditionAttributes.OfType()) + { + if (!condition.IsMet) + { + return condition.SkipReason; + } + } + + return null; + } +} diff --git a/tests/Aspire.CommunityToolkit.Testing/XUnit/WORKAROUND_SkippedDataRowTestCase.cs b/tests/Aspire.CommunityToolkit.Testing/XUnit/WORKAROUND_SkippedDataRowTestCase.cs new file mode 100644 index 00000000..123dba2f --- /dev/null +++ b/tests/Aspire.CommunityToolkit.Testing/XUnit/WORKAROUND_SkippedDataRowTestCase.cs @@ -0,0 +1,88 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Borrowed from https://github.com/dotnet/aspnetcore/blob/95ed45c67/src/Testing/src/xunit/ + +using System; +using System.ComponentModel; +using Xunit.Abstractions; +using Xunit.Sdk; + +namespace Microsoft.TestUtilities; + +// This is a workaround for https://github.com/xunit/xunit/issues/1782 - as such, this code is a copy-paste +// from xUnit with the exception of fixing the bug. +// +// This will only work with [ConditionalTheory]. +internal sealed class WORKAROUND_SkippedDataRowTestCase : XunitTestCase +{ + private string? _skipReason; + + /// + [EditorBrowsable(EditorBrowsableState.Never)] + [Obsolete("Called by the de-serializer; should only be called by deriving classes for de-serialization purposes")] + public WORKAROUND_SkippedDataRowTestCase() + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The message sink used to send diagnostic messages. + /// Default method display to use (when not customized). + /// The test method this test case belongs to. + /// The reason that this test case will be skipped. + /// The arguments for the test method. + [Obsolete("Please call the constructor which takes TestMethodDisplayOptions")] + public WORKAROUND_SkippedDataRowTestCase(IMessageSink diagnosticMessageSink, + TestMethodDisplay defaultMethodDisplay, + ITestMethod testMethod, + string skipReason, + object[]? testMethodArguments = null) + : this(diagnosticMessageSink, defaultMethodDisplay, TestMethodDisplayOptions.None, testMethod, skipReason, testMethodArguments) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The message sink used to send diagnostic messages. + /// Default method display to use (when not customized). + /// Default method display options to use (when not customized). + /// The test method this test case belongs to. + /// The reason that this test case will be skipped. + /// The arguments for the test method. + public WORKAROUND_SkippedDataRowTestCase(IMessageSink diagnosticMessageSink, + TestMethodDisplay defaultMethodDisplay, + TestMethodDisplayOptions defaultMethodDisplayOptions, + ITestMethod testMethod, + string skipReason, + object[]? testMethodArguments = null) + : base(diagnosticMessageSink, defaultMethodDisplay, defaultMethodDisplayOptions, testMethod, testMethodArguments) + { + _skipReason = skipReason; + } + + /// + public override void Deserialize(IXunitSerializationInfo data) + { + // SkipReason has to be read before we call base.Deserialize, this is the workaround. + _skipReason = data.GetValue("SkipReason"); + + base.Deserialize(data); + } + + /// + protected override string? GetSkipReason(IAttributeInfo factAttribute) + { + return _skipReason; + } + + /// + public override void Serialize(IXunitSerializationInfo data) + { + base.Serialize(data); + + data.AddValue("SkipReason", _skipReason); + } +} From 8960d5a8613fdf691fa7ef024dfeba0359b340f5 Mon Sep 17 00:00:00 2001 From: Aaron Powell Date: Wed, 25 Sep 2024 06:17:22 +0000 Subject: [PATCH 13/14] Have to disable all Java tests since they share an AppHost --- .../JavaHostingComponentTests.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/Aspire.CommunityToolkit.Hosting.Java.Tests/JavaHostingComponentTests.cs b/tests/Aspire.CommunityToolkit.Hosting.Java.Tests/JavaHostingComponentTests.cs index 09403403..610da78d 100644 --- a/tests/Aspire.CommunityToolkit.Hosting.Java.Tests/JavaHostingComponentTests.cs +++ b/tests/Aspire.CommunityToolkit.Hosting.Java.Tests/JavaHostingComponentTests.cs @@ -21,7 +21,8 @@ public async Task ContainerAppResourceWillRespondWithOk() response.StatusCode.Should().Be(HttpStatusCode.OK); } - [Fact] + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Windows)] public async Task ExecutableAppResourceWillRespondWithOk() { var resourceName = "executableapp"; From 0ac9aed21b4bff32ad3a413b484b13240fcc65fa Mon Sep 17 00:00:00 2001 From: Aaron Powell Date: Wed, 25 Sep 2024 06:29:12 +0000 Subject: [PATCH 14/14] Fixed conditional check --- .github/workflows/dotnet-ci.yml | 4 ++-- .github/workflows/dotnet-main.yml | 12 ++++++------ .github/workflows/dotnet-release.yml | 12 ++++++------ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/dotnet-ci.yml b/.github/workflows/dotnet-ci.yml index f0b97c0e..ae78e150 100644 --- a/.github/workflows/dotnet-ci.yml +++ b/.github/workflows/dotnet-ci.yml @@ -64,7 +64,7 @@ jobs: - name: Install Aspire workload run: dotnet workload install aspire - name: Setup .NET dev certs - if: ${{ runner.os == 'ubuntu-latest' }} + if: ${{ matrix.os == 'ubuntu-latest' }} run: | dotnet tool update -g linux-dev-certs dotnet linux-dev-certs install @@ -86,7 +86,7 @@ jobs: ## Only publish NuGet packages on Ubuntu, since we don't need to publish them on every OS - name: Publish NuGet packages as artifacts - if: ${{ runner.os == 'ubuntu-latest' }} + if: ${{ matrix.os == 'ubuntu-latest' }} uses: actions/upload-artifact@v4 with: name: nuget-packages diff --git a/.github/workflows/dotnet-main.yml b/.github/workflows/dotnet-main.yml index a4df4e86..b5a8915d 100644 --- a/.github/workflows/dotnet-main.yml +++ b/.github/workflows/dotnet-main.yml @@ -13,9 +13,9 @@ jobs: strategy: matrix: os: [ - windows-latest - , ubuntu-latest - #, macos-latest + windows-latest, + ubuntu-latest, + #, macos-latest ] fail-fast: false runs-on: "${{ matrix.os }}" @@ -64,7 +64,7 @@ jobs: - name: Install Aspire workload run: dotnet workload install aspire - name: Setup .NET dev certs - if: ${{ runner.os == 'ubuntu-latest' }} + if: ${{ matrix.os == 'ubuntu-latest' }} run: | dotnet tool update -g linux-dev-certs dotnet linux-dev-certs install @@ -86,7 +86,7 @@ jobs: - name: Publish NuGet packages as artifacts uses: actions/upload-artifact@v4 - if: ${{ runner.os == 'ubuntu-latest' }} + if: ${{ matrix.os == 'ubuntu-latest' }} with: name: nuget-packages path: ./nuget @@ -147,4 +147,4 @@ jobs: name: nuget-packages - name: Publish to GitHub packages - run: dotnet nuget push ./*.nupkg --source "https://nuget.pkg.github.com/communitytoolkit/index.json" --api-key ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + run: dotnet nuget push ./*.nupkg --source "https://nuget.pkg.github.com/communitytoolkit/index.json" --api-key ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/dotnet-release.yml b/.github/workflows/dotnet-release.yml index fb7dfb04..65b41806 100644 --- a/.github/workflows/dotnet-release.yml +++ b/.github/workflows/dotnet-release.yml @@ -14,9 +14,9 @@ jobs: strategy: matrix: os: [ - windows-latest - , ubuntu-latest - #, macos-latest + windows-latest, + ubuntu-latest, + #, macos-latest ] fail-fast: false runs-on: "${{ matrix.os }}" @@ -65,7 +65,7 @@ jobs: - name: Install Aspire workload run: dotnet workload install aspire - name: Setup .NET dev certs - if: ${{ runner.os == 'ubuntu-latest' }} + if: ${{ matrix.os == 'ubuntu-latest' }} run: | dotnet tool update -g linux-dev-certs dotnet linux-dev-certs install @@ -86,7 +86,7 @@ jobs: - name: Publish NuGet packages as artifacts uses: actions/upload-artifact@v4 - if: ${{ runner.os == 'ubuntu-latest' }} + if: ${{ matrix.os == 'ubuntu-latest' }} with: name: nuget-packages path: ./nuget @@ -164,4 +164,4 @@ jobs: name: nuget-packages - name: Publish to GitHub packages - run: dotnet nuget push ./*.nupkg --source "https://nuget.pkg.github.com/communitytoolkit/index.json" --api-key ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + run: dotnet nuget push ./*.nupkg --source "https://nuget.pkg.github.com/communitytoolkit/index.json" --api-key ${{ secrets.GITHUB_TOKEN }}
DateTemp. (C)Temp. (F)Summary
DateTemp. (C)Temp. (F)Summary
@forecast.Date.ToShortDateString()