diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index b6b40e24f..d91bd9c67 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -136,6 +136,7 @@ jobs: with: name: binlog-${{ matrix.name }}-${{ matrix.os }} path: "**/*.binlog" + continue-on-error: true - name: Upload test results artifact if: always() diff --git a/.gitignore b/.gitignore index ccf1022b7..2ab88c06c 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,10 @@ target node_modules **/.modules/ **/*.AppHost.TypeScript/nuget.config +tsconfig.apphost.json +.ngrok +bun.lock +pnpm-lock.yaml +yarn.lock +solr-data +*.lscache diff --git a/Directory.Build.props b/Directory.Build.props index 3712834b7..55ec86eb8 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -16,7 +16,6 @@ -preview.1.26170.3 9.0.0 10.0.5 - 1.12.0 4.8.1 10.0.0 10.0.0 diff --git a/Directory.Packages.props b/Directory.Packages.props index 668a4938a..94d0ec33a 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -53,13 +53,13 @@ - - - - - - - + + + + + + + @@ -129,5 +129,7 @@ + + diff --git a/eng/testing/validate-typescript-apphost.ps1 b/eng/testing/validate-typescript-apphost.ps1 index 53414139e..5438e8203 100644 --- a/eng/testing/validate-typescript-apphost.ps1 +++ b/eng/testing/validate-typescript-apphost.ps1 @@ -19,11 +19,37 @@ param( [ValidateSet("healthy", "up", "down")] [string]$WaitStatus = "healthy", - [int]$WaitTimeoutSeconds = 180 + [int]$WaitTimeoutSeconds = 180, + + [string[]]$Secrets = @() ) $ErrorActionPreference = "Stop" +function Resolve-ExternalCommandPath { + param( + [Parameter(Mandatory = $true)] + [string]$FilePath + ) + + if ([System.IO.Path]::IsPathRooted($FilePath) -or + $FilePath.Contains([System.IO.Path]::DirectorySeparatorChar) -or + $FilePath.Contains([System.IO.Path]::AltDirectorySeparatorChar)) { + return $FilePath + } + + $commandCandidates = @(Get-Command $FilePath -All -ErrorAction Stop) + $preferredCandidate = $commandCandidates | + Where-Object { $_.CommandType -eq [System.Management.Automation.CommandTypes]::Application } | + Select-Object -First 1 + + if ($null -ne $preferredCandidate) { + return $preferredCandidate.Source + } + + return $commandCandidates[0].Source +} + function Invoke-ExternalCommand { param( [Parameter(Mandatory = $true)] @@ -33,7 +59,9 @@ function Invoke-ExternalCommand { [string[]]$Arguments ) - & $FilePath @Arguments + $resolvedFilePath = Resolve-ExternalCommandPath $FilePath + + & $resolvedFilePath @Arguments if ($LASTEXITCODE -ne 0) { $joinedArguments = [string]::Join(" ", $Arguments) throw "Command failed with exit code ${LASTEXITCODE}: $FilePath $joinedArguments" @@ -86,6 +114,25 @@ if ([string]::IsNullOrWhiteSpace($PackageVersion)) { $PackageVersion = "$versionPrefix-polyglot.local" } +# Discover local CommunityToolkit project references that also need packing +$localDependencies = @() +$projRefJson = (& dotnet msbuild $resolvedPackageProjectPath -nologo -v:q -getItem:ProjectReference) | Out-String +$projRefData = $projRefJson | ConvertFrom-Json +$projRefs = @($projRefData.Items.ProjectReference) +foreach ($ref in $projRefs) { + if ($ref.Filename -like "CommunityToolkit.*") { + $localDependencies += @{ + Name = $ref.Filename + FullPath = $ref.FullPath + } + } +} + +if ($localDependencies.Count -gt 0) { + $depNames = ($localDependencies | ForEach-Object { $_.Name }) -join ", " + Write-Host "Discovered local dependencies to pack: $depNames" +} + if ($WaitForResources.Count -eq 1 -and -not [string]::IsNullOrWhiteSpace($WaitForResources[0])) { $splitOptions = [System.StringSplitOptions]::RemoveEmptyEntries -bor [System.StringSplitOptions]::TrimEntries $WaitForResources = $WaitForResources[0].Split(",", $splitOptions) @@ -102,6 +149,27 @@ foreach ($commandName in $RequiredCommands) { } } +if ($Secrets.Count -eq 1 -and -not [string]::IsNullOrWhiteSpace($Secrets[0])) { + $splitOptions = [System.StringSplitOptions]::RemoveEmptyEntries -bor [System.StringSplitOptions]::TrimEntries + $Secrets = $Secrets[0].Split(",", $splitOptions) +} + +$parsedSecrets = [System.Collections.Generic.List[string[]]]::new() +foreach ($secret in $Secrets) { + if ([string]::IsNullOrWhiteSpace($secret)) { + continue + } + + $eqIndex = $secret.IndexOf('=') + if ($eqIndex -le 0) { + throw "Invalid secret format '$secret'. Expected 'key=value'." + } + + $key = $secret.Substring(0, $eqIndex) + $value = $secret.Substring($eqIndex + 1) + $parsedSecrets.Add(@($key, $value)) +} + try { $originalConfig = Get-Content -Path $configPath -Raw New-Item -ItemType Directory -Path $localSource -Force | Out-Null @@ -114,12 +182,25 @@ try { "-o", $localSource ) + foreach ($dep in $localDependencies) { + Invoke-ExternalCommand "dotnet" @( + "pack", + $dep.FullPath, + "-c", "Debug", + "-p:PackageVersion=$PackageVersion", + "-o", $localSource + ) + } + $config = $originalConfig | ConvertFrom-Json -AsHashtable if ($null -eq $config["packages"]) { $config["packages"] = [ordered]@{} } $config["packages"][$PackageName] = $PackageVersion + foreach ($dep in $localDependencies) { + $config["packages"][$dep.Name] = $PackageVersion + } $config | ConvertTo-Json -Depth 10 | Set-Content -Path $configPath -NoNewline @" @@ -145,6 +226,15 @@ try { Pop-Location } + foreach ($secretPair in $parsedSecrets) { + Invoke-ExternalCommand "aspire" @( + "secret", "set", + $secretPair[0], $secretPair[1], + "--apphost", $resolvedAppHostPath, + "--non-interactive" + ) + } + Push-Location $appHostDirectory try { Invoke-ExternalCommand "aspire" @( @@ -152,7 +242,8 @@ try { "--apphost", $resolvedAppHostPath, "--isolated", "--format", "Json", - "--non-interactive" + "--non-interactive", + "--debug" ) $appStarted = $true @@ -162,14 +253,16 @@ try { $resource, "--status", $WaitStatus, "--apphost", $resolvedAppHostPath, - "--timeout", $WaitTimeoutSeconds + "--timeout", $WaitTimeoutSeconds, + "--debug" ) } Invoke-ExternalCommand "aspire" @( "describe", "--apphost", $resolvedAppHostPath, - "--format", "Json" + "--format", "Json", + "--debug" ) } finally { @@ -212,6 +305,17 @@ finally { } } } -Failures $cleanupFailures + + Invoke-CleanupStep -Description "remove secrets" -Action { + foreach ($secretPair in $parsedSecrets) { + Invoke-ExternalCommand "aspire" @( + "secret", "delete", + $secretPair[0], + "--apphost", $resolvedAppHostPath, + "--non-interactive" + ) + } + } -Failures $cleanupFailures } if ($cleanupFailures.Count -gt 0) { @@ -226,4 +330,4 @@ if ($cleanupFailures.Count -gt 0) { if ($null -ne $primaryError) { throw $primaryError -} \ No newline at end of file +} diff --git a/examples/activemq/CommunityToolkit.Aspire.Hosting.ActiveMQ.AppHost.TypeScript/aspire.config.json b/examples/activemq/CommunityToolkit.Aspire.Hosting.ActiveMQ.AppHost.TypeScript/aspire.config.json index 612bd8bf9..9ae33abe8 100644 --- a/examples/activemq/CommunityToolkit.Aspire.Hosting.ActiveMQ.AppHost.TypeScript/aspire.config.json +++ b/examples/activemq/CommunityToolkit.Aspire.Hosting.ActiveMQ.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.ActiveMQ": "" + "CommunityToolkit.Aspire.Hosting.ActiveMQ": "../../../src/CommunityToolkit.Aspire.Hosting.ActiveMQ/CommunityToolkit.Aspire.Hosting.ActiveMQ.csproj" } -} \ No newline at end of file +} diff --git a/examples/adminer/CommunityToolkit.Aspire.Hosting.Adminer.AppHost.TypeScript/aspire.config.json b/examples/adminer/CommunityToolkit.Aspire.Hosting.Adminer.AppHost.TypeScript/aspire.config.json index 062536776..4d2593612 100644 --- a/examples/adminer/CommunityToolkit.Aspire.Hosting.Adminer.AppHost.TypeScript/aspire.config.json +++ b/examples/adminer/CommunityToolkit.Aspire.Hosting.Adminer.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Adminer": "" + "CommunityToolkit.Aspire.Hosting.Adminer": "../../../src/CommunityToolkit.Aspire.Hosting.Adminer/CommunityToolkit.Aspire.Hosting.Adminer.csproj" } } diff --git a/examples/bun/CommunityToolkit.Aspire.Hosting.Bun.AppHost.TypeScript/aspire.config.json b/examples/bun/CommunityToolkit.Aspire.Hosting.Bun.AppHost.TypeScript/aspire.config.json index 7451196bb..f39c57ddd 100644 --- a/examples/bun/CommunityToolkit.Aspire.Hosting.Bun.AppHost.TypeScript/aspire.config.json +++ b/examples/bun/CommunityToolkit.Aspire.Hosting.Bun.AppHost.TypeScript/aspire.config.json @@ -3,6 +3,10 @@ "path": "apphost.ts", "language": "typescript/nodejs" }, + "sdk": { + "version": "13.2.2" + }, + "channel": "stable", "profiles": { "https": { "applicationUrl": "https://localhost:29750;http://localhost:28931", @@ -13,6 +17,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Bun": "" + "CommunityToolkit.Aspire.Hosting.Bun": "../../../src/CommunityToolkit.Aspire.Hosting.Bun/CommunityToolkit.Aspire.Hosting.Bun.csproj" } -} +} \ No newline at end of file diff --git a/examples/bun/api/bun.lockb b/examples/bun/api/bun.lockb index b576e8951..d21c6f9f0 100755 Binary files a/examples/bun/api/bun.lockb and b/examples/bun/api/bun.lockb differ diff --git a/examples/data-api-builder/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder.AppHost.TypeScript/aspire.config.json b/examples/data-api-builder/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder.AppHost.TypeScript/aspire.config.json index 5e02b2b00..a28071193 100644 --- a/examples/data-api-builder/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder.AppHost.TypeScript/aspire.config.json +++ b/examples/data-api-builder/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder": "" + "CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder": "../../../src/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder.csproj" } -} \ No newline at end of file +} diff --git a/examples/dbgate/CommunityToolkit.Aspire.Hosting.DbGate.AppHost.TypeScript/aspire.config.json b/examples/dbgate/CommunityToolkit.Aspire.Hosting.DbGate.AppHost.TypeScript/aspire.config.json index 32e005ff5..daeb71a18 100644 --- a/examples/dbgate/CommunityToolkit.Aspire.Hosting.DbGate.AppHost.TypeScript/aspire.config.json +++ b/examples/dbgate/CommunityToolkit.Aspire.Hosting.DbGate.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.DbGate": "" + "CommunityToolkit.Aspire.Hosting.DbGate": "../../../src/CommunityToolkit.Aspire.Hosting.DbGate/CommunityToolkit.Aspire.Hosting.DbGate.csproj" } } diff --git a/examples/deno/CommunityToolkit.Aspire.Hosting.Deno.AppHost.TypeScript/aspire.config.json b/examples/deno/CommunityToolkit.Aspire.Hosting.Deno.AppHost.TypeScript/aspire.config.json index 675f8c3da..94493adf1 100644 --- a/examples/deno/CommunityToolkit.Aspire.Hosting.Deno.AppHost.TypeScript/aspire.config.json +++ b/examples/deno/CommunityToolkit.Aspire.Hosting.Deno.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Deno": "" + "CommunityToolkit.Aspire.Hosting.Deno": "../../../src/CommunityToolkit.Aspire.Hosting.Deno/CommunityToolkit.Aspire.Hosting.Deno.csproj" } -} \ No newline at end of file +} diff --git a/examples/elasticsearch-ext/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions.AppHost.TypeScript/aspire.config.json b/examples/elasticsearch-ext/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions.AppHost.TypeScript/aspire.config.json index ad8c44b42..35fd0c483 100644 --- a/examples/elasticsearch-ext/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions.AppHost.TypeScript/aspire.config.json +++ b/examples/elasticsearch-ext/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions": "" + "CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions": "../../../src/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions.csproj" } -} \ No newline at end of file +} diff --git a/examples/flagd/CommunityToolkit.Aspire.Hosting.Flagd.AppHost.TypeScript/aspire.config.json b/examples/flagd/CommunityToolkit.Aspire.Hosting.Flagd.AppHost.TypeScript/aspire.config.json index 0876a15ef..38025bd0e 100644 --- a/examples/flagd/CommunityToolkit.Aspire.Hosting.Flagd.AppHost.TypeScript/aspire.config.json +++ b/examples/flagd/CommunityToolkit.Aspire.Hosting.Flagd.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Flagd": "" + "CommunityToolkit.Aspire.Hosting.Flagd": "../../../src/CommunityToolkit.Aspire.Hosting.Flagd/CommunityToolkit.Aspire.Hosting.Flagd.csproj" } } diff --git a/examples/flyway/CommunityToolkit.Aspire.Hosting.Flyway.AppHost.TypeScript/aspire.config.json b/examples/flyway/CommunityToolkit.Aspire.Hosting.Flyway.AppHost.TypeScript/aspire.config.json index 824f8ff5c..21db43158 100644 --- a/examples/flyway/CommunityToolkit.Aspire.Hosting.Flyway.AppHost.TypeScript/aspire.config.json +++ b/examples/flyway/CommunityToolkit.Aspire.Hosting.Flyway.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Flyway": "" + "CommunityToolkit.Aspire.Hosting.Flyway": "../../../src/CommunityToolkit.Aspire.Hosting.Flyway/CommunityToolkit.Aspire.Hosting.Flyway.csproj" } } diff --git a/examples/goff/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.AppHost.TypeScript/aspire.config.json b/examples/goff/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.AppHost.TypeScript/aspire.config.json index 5db0afa9a..0bc3bbcdc 100644 --- a/examples/goff/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.AppHost.TypeScript/aspire.config.json +++ b/examples/goff/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.GoFeatureFlag": "" + "CommunityToolkit.Aspire.Hosting.GoFeatureFlag": "../../../src/CommunityToolkit.Aspire.Hosting.GoFeatureFlag/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.csproj" } } diff --git a/examples/golang/CommunityToolkit.Aspire.Hosting.Golang.AppHost.TypeScript/aspire.config.json b/examples/golang/CommunityToolkit.Aspire.Hosting.Golang.AppHost.TypeScript/aspire.config.json index 1160abdf9..9de0d163d 100644 --- a/examples/golang/CommunityToolkit.Aspire.Hosting.Golang.AppHost.TypeScript/aspire.config.json +++ b/examples/golang/CommunityToolkit.Aspire.Hosting.Golang.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Golang": "" + "CommunityToolkit.Aspire.Hosting.Golang": "../../../src/CommunityToolkit.Aspire.Hosting.Golang/CommunityToolkit.Aspire.Hosting.Golang.csproj" } -} \ No newline at end of file +} diff --git a/examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost.TypeScript/aspire.config.json b/examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost.TypeScript/aspire.config.json index ace8a88a1..44584326e 100644 --- a/examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost.TypeScript/aspire.config.json +++ b/examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Java": "" + "CommunityToolkit.Aspire.Hosting.Java": "../../../src/CommunityToolkit.Aspire.Hosting.Java/CommunityToolkit.Aspire.Hosting.Java.csproj" } -} \ No newline at end of file +} diff --git a/examples/javascript-ext/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions.AppHost.TypeScript/aspire.config.json b/examples/javascript-ext/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions.AppHost.TypeScript/aspire.config.json index e2f525642..100e79893 100644 --- a/examples/javascript-ext/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions.AppHost.TypeScript/aspire.config.json +++ b/examples/javascript-ext/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.JavaScript.Extensions": "" + "CommunityToolkit.Aspire.Hosting.JavaScript.Extensions": "../../../src/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions.csproj" } -} \ No newline at end of file +} diff --git a/examples/k6/CommunityToolkit.Aspire.Hosting.k6.AppHost.TypeScript/aspire.config.json b/examples/k6/CommunityToolkit.Aspire.Hosting.k6.AppHost.TypeScript/aspire.config.json index af29b6af4..b8f14388e 100644 --- a/examples/k6/CommunityToolkit.Aspire.Hosting.k6.AppHost.TypeScript/aspire.config.json +++ b/examples/k6/CommunityToolkit.Aspire.Hosting.k6.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.k6": "" + "CommunityToolkit.Aspire.Hosting.k6": "../../../src/CommunityToolkit.Aspire.Hosting.k6/CommunityToolkit.Aspire.Hosting.k6.csproj" } } diff --git a/examples/keycloak-postgres/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.AppHost.TypeScript/aspire.config.json b/examples/keycloak-postgres/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.AppHost.TypeScript/aspire.config.json index c4c489607..7a3dd97f5 100644 --- a/examples/keycloak-postgres/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.AppHost.TypeScript/aspire.config.json +++ b/examples/keycloak-postgres/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Keycloak.Extensions": "" + "CommunityToolkit.Aspire.Hosting.Keycloak.Extensions": "../../../src/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.csproj" } -} \ No newline at end of file +} diff --git a/examples/kurrentdb/CommunityToolkit.Aspire.Hosting.KurrentDB.AppHost.TypeScript/aspire.config.json b/examples/kurrentdb/CommunityToolkit.Aspire.Hosting.KurrentDB.AppHost.TypeScript/aspire.config.json index bc1f6ca32..8606b8b22 100644 --- a/examples/kurrentdb/CommunityToolkit.Aspire.Hosting.KurrentDB.AppHost.TypeScript/aspire.config.json +++ b/examples/kurrentdb/CommunityToolkit.Aspire.Hosting.KurrentDB.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.KurrentDB": "" + "CommunityToolkit.Aspire.Hosting.KurrentDB": "../../../src/CommunityToolkit.Aspire.Hosting.KurrentDB/CommunityToolkit.Aspire.Hosting.KurrentDB.csproj" } } diff --git a/examples/lavinmq/CommunityToolkit.Aspire.Hosting.LavinMQ.AppHost.TypeScript/aspire.config.json b/examples/lavinmq/CommunityToolkit.Aspire.Hosting.LavinMQ.AppHost.TypeScript/aspire.config.json index 4225ba1d7..cce9b8509 100644 --- a/examples/lavinmq/CommunityToolkit.Aspire.Hosting.LavinMQ.AppHost.TypeScript/aspire.config.json +++ b/examples/lavinmq/CommunityToolkit.Aspire.Hosting.LavinMQ.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.LavinMQ": "" + "CommunityToolkit.Aspire.Hosting.LavinMQ": "../../../src/CommunityToolkit.Aspire.Hosting.LavinMQ/CommunityToolkit.Aspire.Hosting.LavinMQ.csproj" } } diff --git a/examples/mailpit/CommunityToolkit.Aspire.Hosting.MailPit.AppHost.TypeScript/aspire.config.json b/examples/mailpit/CommunityToolkit.Aspire.Hosting.MailPit.AppHost.TypeScript/aspire.config.json index 40f71b819..2467eb973 100644 --- a/examples/mailpit/CommunityToolkit.Aspire.Hosting.MailPit.AppHost.TypeScript/aspire.config.json +++ b/examples/mailpit/CommunityToolkit.Aspire.Hosting.MailPit.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.MailPit": "" + "CommunityToolkit.Aspire.Hosting.MailPit": "../../../src/CommunityToolkit.Aspire.Hosting.MailPit/CommunityToolkit.Aspire.Hosting.MailPit.csproj" } } diff --git a/examples/mcp-inspector/CommunityToolkit.Aspire.Hosting.McpInspector.AppHost.TypeScript/apphost.ts b/examples/mcp-inspector/CommunityToolkit.Aspire.Hosting.McpInspector.AppHost.TypeScript/apphost.ts index 926775e5d..f26ac0b17 100644 --- a/examples/mcp-inspector/CommunityToolkit.Aspire.Hosting.McpInspector.AppHost.TypeScript/apphost.ts +++ b/examples/mcp-inspector/CommunityToolkit.Aspire.Hosting.McpInspector.AppHost.TypeScript/apphost.ts @@ -1,4 +1,4 @@ -import { createBuilder, McpTransportType } from './.modules/aspire.js'; +import { createBuilder, McpTransportType } from "./.modules/aspire.js"; const builder = await createBuilder(); @@ -15,34 +15,38 @@ const secondaryServer = await builder const inspectorDefault = await builder.addMcpInspector("inspector-default"); await inspectorDefault.withInspectedMcpServer(inspectedServer); -const inspectorConfigured = await builder.addMcpInspector("inspector-configured", { - clientPort: 6284, - serverPort: 6287, - inspectorVersion: "0.17.2", - proxyToken -}); +const inspectorConfigured = await builder.addMcpInspector( + "inspector-configured", + { + clientPort: 6284, + serverPort: 6287, + inspectorVersion: "0.17.2", + proxyToken, + }, +); await inspectorConfigured.withInspectedMcpServer(secondaryServer, { - isDefault: false, + isDefault: true, transportType: McpTransportType.StreamableHttp, - path: "/custom-mcp" + path: "/custom-mcp", }); const inspectorYarn = await builder.addMcpInspector("inspector-yarn", { clientPort: 6294, - serverPort: 6297 + serverPort: 6297, }); await inspectorYarn.withYarn(); const inspectorPnpm = await builder.addMcpInspector("inspector-pnpm", { clientPort: 6304, - serverPort: 6307 + serverPort: 6307, }); await inspectorPnpm.withPnpm(); const inspectorBun = await builder.addMcpInspector("inspector-bun", { clientPort: 6314, - serverPort: 6317 + serverPort: 6317, }); await inspectorBun.withBun(); await builder.build().run(); + diff --git a/examples/mcp-inspector/CommunityToolkit.Aspire.Hosting.McpInspector.AppHost.TypeScript/aspire.config.json b/examples/mcp-inspector/CommunityToolkit.Aspire.Hosting.McpInspector.AppHost.TypeScript/aspire.config.json index 7f403a27f..2feb3b822 100644 --- a/examples/mcp-inspector/CommunityToolkit.Aspire.Hosting.McpInspector.AppHost.TypeScript/aspire.config.json +++ b/examples/mcp-inspector/CommunityToolkit.Aspire.Hosting.McpInspector.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.McpInspector": "" + "CommunityToolkit.Aspire.Hosting.McpInspector": "../../../src/CommunityToolkit.Aspire.Hosting.McpInspector/CommunityToolkit.Aspire.Hosting.McpInspector.csproj" } } diff --git a/examples/meilisearch/CommunityToolkit.Aspire.Hosting.Meilisearch.AppHost.TypeScript/aspire.config.json b/examples/meilisearch/CommunityToolkit.Aspire.Hosting.Meilisearch.AppHost.TypeScript/aspire.config.json index c757477b9..d0c9fc521 100644 --- a/examples/meilisearch/CommunityToolkit.Aspire.Hosting.Meilisearch.AppHost.TypeScript/aspire.config.json +++ b/examples/meilisearch/CommunityToolkit.Aspire.Hosting.Meilisearch.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Meilisearch": "" + "CommunityToolkit.Aspire.Hosting.Meilisearch": "../../../src/CommunityToolkit.Aspire.Hosting.Meilisearch/CommunityToolkit.Aspire.Hosting.Meilisearch.csproj" } } diff --git a/examples/minio/CommunityToolkit.Aspire.Hosting.Minio.AppHost.TypeScript/aspire.config.json b/examples/minio/CommunityToolkit.Aspire.Hosting.Minio.AppHost.TypeScript/aspire.config.json index f8491c815..6750abcb0 100644 --- a/examples/minio/CommunityToolkit.Aspire.Hosting.Minio.AppHost.TypeScript/aspire.config.json +++ b/examples/minio/CommunityToolkit.Aspire.Hosting.Minio.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Minio": "" + "CommunityToolkit.Aspire.Hosting.Minio": "../../../src/CommunityToolkit.Aspire.Hosting.Minio/CommunityToolkit.Aspire.Hosting.Minio.csproj" } } diff --git a/examples/mongodb-ext/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions.AppHost.TypeScript/aspire.config.json b/examples/mongodb-ext/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions.AppHost.TypeScript/aspire.config.json index f3b3b79ca..ea85f1321 100644 --- a/examples/mongodb-ext/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions.AppHost.TypeScript/aspire.config.json +++ b/examples/mongodb-ext/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.MongoDB.Extensions": "13.2.1-polyglot.local" + "CommunityToolkit.Aspire.Hosting.MongoDB.Extensions": "../../../src/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions.csproj" } -} \ No newline at end of file +} diff --git a/examples/mysql-ext/CommunityToolkit.Aspire.Hosting.MySql.Extensions.AppHost.TypeScript/aspire.config.json b/examples/mysql-ext/CommunityToolkit.Aspire.Hosting.MySql.Extensions.AppHost.TypeScript/aspire.config.json index aca62cd4c..f2704f28a 100644 --- a/examples/mysql-ext/CommunityToolkit.Aspire.Hosting.MySql.Extensions.AppHost.TypeScript/aspire.config.json +++ b/examples/mysql-ext/CommunityToolkit.Aspire.Hosting.MySql.Extensions.AppHost.TypeScript/aspire.config.json @@ -14,6 +14,6 @@ }, "packages": { "Aspire.Hosting.MySql": "", - "CommunityToolkit.Aspire.Hosting.MySql.Extensions": "" + "CommunityToolkit.Aspire.Hosting.MySql.Extensions": "../../../src/CommunityToolkit.Aspire.Hosting.MySql.Extensions/CommunityToolkit.Aspire.Hosting.MySql.Extensions.csproj" } -} \ No newline at end of file +} diff --git a/examples/ngrok/CommunityToolkit.Aspire.Hosting.Ngrok.AppHost.TypeScript/aspire.config.json b/examples/ngrok/CommunityToolkit.Aspire.Hosting.Ngrok.AppHost.TypeScript/aspire.config.json index a6fb41be4..5647b3acf 100644 --- a/examples/ngrok/CommunityToolkit.Aspire.Hosting.Ngrok.AppHost.TypeScript/aspire.config.json +++ b/examples/ngrok/CommunityToolkit.Aspire.Hosting.Ngrok.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Ngrok": "" + "CommunityToolkit.Aspire.Hosting.Ngrok": "../../../src/CommunityToolkit.Aspire.Hosting.Ngrok/CommunityToolkit.Aspire.Hosting.Ngrok.csproj" } } diff --git a/examples/opentelemetry-collector/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.AppHost.TypeScript/apphost.ts b/examples/opentelemetry-collector/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.AppHost.TypeScript/apphost.ts index 62c68ed82..a2e8a783e 100644 --- a/examples/opentelemetry-collector/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.AppHost.TypeScript/apphost.ts +++ b/examples/opentelemetry-collector/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.AppHost.TypeScript/apphost.ts @@ -1,4 +1,4 @@ -import { createBuilder } from './.modules/aspire.js'; +import { createBuilder } from "./.modules/aspire.js"; const builder = await createBuilder(); @@ -7,26 +7,6 @@ const collector = await builder.addOpenTelemetryCollector("collector"); await collector.withConfig("./otel-config.yaml"); await collector.withAppForwarding(); -// addOpenTelemetryCollector — settings callback overload -const routedCollector = await builder.addOpenTelemetryCollector("collector-routed", { - configureSettings: async (settings) => { - await settings.forceNonSecureReceiver.set(true); - await settings.enableGrpcEndpoint.set(true); - await settings.enableHttpEndpoint.set(true); - await settings.disableHealthcheck.set(false); - await settings.registry.set("ghcr.io"); - await settings.image.set("open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib"); - await settings.collectorTag.set("latest"); - - const _forceNonSecureReceiver: boolean = await settings.forceNonSecureReceiver.get(); - const _collectorTag: string = await settings.collectorTag.get(); - const _collectorImage: string = await settings.collectorImage.get(); - } -}); - -await routedCollector.withConfig("./otel-config.yaml"); -await routedCollector.withOpenTelemetryCollectorRouting(collector); - // ---- Property access on OpenTelemetryCollectorResource (ExposeProperties = true) ---- const collectorResource = await collector; const _grpcEndpoint = await collectorResource.grpcEndpoint.get(); @@ -34,10 +14,4 @@ const _httpEndpoint = await collectorResource.httpEndpoint.get(); const _grpcEndpointName = await _grpcEndpoint.endpointName.get(); const _httpEndpointName = await _httpEndpoint.endpointName.get(); -const routedCollectorResource = await routedCollector; -const _routedGrpcEndpoint = await routedCollectorResource.grpcEndpoint.get(); -const _routedHttpEndpoint = await routedCollectorResource.httpEndpoint.get(); -const _routedGrpcEndpointName = await _routedGrpcEndpoint.endpointName.get(); -const _routedHttpEndpointName = await _routedHttpEndpoint.endpointName.get(); - await builder.build().run(); diff --git a/examples/opentelemetry-collector/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.AppHost.TypeScript/aspire.config.json b/examples/opentelemetry-collector/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.AppHost.TypeScript/aspire.config.json index a56a4ad64..6cc922e9d 100644 --- a/examples/opentelemetry-collector/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.AppHost.TypeScript/aspire.config.json +++ b/examples/opentelemetry-collector/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector": "" + "CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector": "../../../src/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.csproj" } } diff --git a/examples/papercut/CommunityToolkit.Aspire.Hosting.PapercutSmtp.AppHost.TypeScript/aspire.config.json b/examples/papercut/CommunityToolkit.Aspire.Hosting.PapercutSmtp.AppHost.TypeScript/aspire.config.json index fb102598e..506405be8 100644 --- a/examples/papercut/CommunityToolkit.Aspire.Hosting.PapercutSmtp.AppHost.TypeScript/aspire.config.json +++ b/examples/papercut/CommunityToolkit.Aspire.Hosting.PapercutSmtp.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.PapercutSmtp": "" + "CommunityToolkit.Aspire.Hosting.PapercutSmtp": "../../../src/CommunityToolkit.Aspire.Hosting.PapercutSmtp/CommunityToolkit.Aspire.Hosting.PapercutSmtp.csproj" } } diff --git a/examples/postgres-ext/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions.AppHost.TypeScript/aspire.config.json b/examples/postgres-ext/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions.AppHost.TypeScript/aspire.config.json index 0178c6870..eeb447907 100644 --- a/examples/postgres-ext/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions.AppHost.TypeScript/aspire.config.json +++ b/examples/postgres-ext/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions": "" + "CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions": "../../../src/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions.csproj" } } diff --git a/examples/python/CommunityToolkit.Aspire.Hosting.Python.Extensions.AppHost.TypeScript/aspire.config.json b/examples/python/CommunityToolkit.Aspire.Hosting.Python.Extensions.AppHost.TypeScript/aspire.config.json index b5c304659..58adf9fea 100644 --- a/examples/python/CommunityToolkit.Aspire.Hosting.Python.Extensions.AppHost.TypeScript/aspire.config.json +++ b/examples/python/CommunityToolkit.Aspire.Hosting.Python.Extensions.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Python.Extensions": "" + "CommunityToolkit.Aspire.Hosting.Python.Extensions": "../../../src/CommunityToolkit.Aspire.Hosting.Python.Extensions/CommunityToolkit.Aspire.Hosting.Python.Extensions.csproj" } -} \ No newline at end of file +} diff --git a/examples/redis-ext/CommunityToolkit.Aspire.Hosting.Redis.Extensions.AppHost.TypeScript/aspire.config.json b/examples/redis-ext/CommunityToolkit.Aspire.Hosting.Redis.Extensions.AppHost.TypeScript/aspire.config.json index 29c681a02..4a6aa1ac0 100644 --- a/examples/redis-ext/CommunityToolkit.Aspire.Hosting.Redis.Extensions.AppHost.TypeScript/aspire.config.json +++ b/examples/redis-ext/CommunityToolkit.Aspire.Hosting.Redis.Extensions.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Redis.Extensions": "" + "CommunityToolkit.Aspire.Hosting.Redis.Extensions": "../../../src/CommunityToolkit.Aspire.Hosting.Redis.Extensions/CommunityToolkit.Aspire.Hosting.Redis.Extensions.csproj" } } diff --git a/examples/rust/CommunityToolkit.Aspire.Hosting.Rust.AppHost.TypeScript/apphost.ts b/examples/rust/CommunityToolkit.Aspire.Hosting.Rust.AppHost.TypeScript/apphost.ts index 6279fb6ce..22fd11ddb 100644 --- a/examples/rust/CommunityToolkit.Aspire.Hosting.Rust.AppHost.TypeScript/apphost.ts +++ b/examples/rust/CommunityToolkit.Aspire.Hosting.Rust.AppHost.TypeScript/apphost.ts @@ -1,7 +1,7 @@ import { createBuilder } from './.modules/aspire.js'; const builder = await createBuilder(); -const rustAppPath = "../../../../../examples/rust/actix_api"; +const rustAppPath = "../actix_api"; // addRustApp — minimal call const rustApp = await builder.addRustApp("rust-app", rustAppPath); diff --git a/examples/rust/CommunityToolkit.Aspire.Hosting.Rust.AppHost.TypeScript/aspire.config.json b/examples/rust/CommunityToolkit.Aspire.Hosting.Rust.AppHost.TypeScript/aspire.config.json index da85e3e71..3238e164d 100644 --- a/examples/rust/CommunityToolkit.Aspire.Hosting.Rust.AppHost.TypeScript/aspire.config.json +++ b/examples/rust/CommunityToolkit.Aspire.Hosting.Rust.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Rust": "" + "CommunityToolkit.Aspire.Hosting.Rust": "../../../src/CommunityToolkit.Aspire.Hosting.Rust/CommunityToolkit.Aspire.Hosting.Rust.csproj" } } diff --git a/examples/sftp/CommunityToolkit.Aspire.Hosting.Sftp.AppHost.TypeScript/aspire.config.json b/examples/sftp/CommunityToolkit.Aspire.Hosting.Sftp.AppHost.TypeScript/aspire.config.json index bbf97bf32..33ec5199c 100644 --- a/examples/sftp/CommunityToolkit.Aspire.Hosting.Sftp.AppHost.TypeScript/aspire.config.json +++ b/examples/sftp/CommunityToolkit.Aspire.Hosting.Sftp.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Sftp": "" + "CommunityToolkit.Aspire.Hosting.Sftp": "../../../src/CommunityToolkit.Aspire.Hosting.Sftp/CommunityToolkit.Aspire.Hosting.Sftp.csproj" } -} \ No newline at end of file +} diff --git a/examples/solr/CommunityToolkit.Aspire.Hosting.Solr.AppHost.TypeScript/apphost.ts b/examples/solr/CommunityToolkit.Aspire.Hosting.Solr.AppHost.TypeScript/apphost.ts index 7b9740323..0ee6a98d5 100644 --- a/examples/solr/CommunityToolkit.Aspire.Hosting.Solr.AppHost.TypeScript/apphost.ts +++ b/examples/solr/CommunityToolkit.Aspire.Hosting.Solr.AppHost.TypeScript/apphost.ts @@ -1,18 +1,22 @@ -import { mkdir } from 'node:fs/promises'; -import { dirname, join } from 'node:path'; -import { fileURLToPath } from 'node:url'; -import { createBuilder } from './.modules/aspire.js'; +import { mkdir, chmod } from "node:fs/promises"; +import { dirname, join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { createBuilder } from "./.modules/aspire.js"; const builder = await createBuilder(); const appHostDirectory = dirname(fileURLToPath(import.meta.url)); -const dataDirectory = join(appHostDirectory, 'data'); +const dataDirectory = join(appHostDirectory, "solr-data"); -await mkdir(dataDirectory, { recursive: true }); +await mkdir(dataDirectory, { recursive: true, mode: 0o777 }); -const solr = await builder.addSolr('solr'); +// force 777 permissions for the data directory to ensure Solr can write to it as the Docker container needs to have +// write permissions on the folder, or you have to change the folder owner to the UID in the container +await chmod(dataDirectory, 0o777); + +const solr = await builder.addSolr("solr"); const builderCoreName: string = await solr.coreName.get(); await solr.coreName.set(builderCoreName); -await solr.withDataVolume({ name: 'solr-data' }); +await solr.withDataVolume({ name: "solr-data" }); const resolvedSolr = await solr; const _primaryEndpoint = await resolvedSolr.primaryEndpoint.get(); @@ -22,14 +26,22 @@ const _coreName: string = await resolvedSolr.coreName.get(); const _connectionString = await resolvedSolr.connectionStringExpression.get(); const _uriExpression = await resolvedSolr.uriExpression.get(); -const bindMountedSolr = await builder.addSolr('solr-bind', { port: 8984, coreName: 'bindcore' }); +const bindMountedSolr = await builder.addSolr("solr-bind", { + port: 8984, + coreName: "bindcore", +}); const bindCoreName: string = await bindMountedSolr.coreName.get(); await bindMountedSolr.coreName.set(bindCoreName); await bindMountedSolr.withDataBindMount(dataDirectory); if (false) { - const configsetSolr = await builder.addSolr('solr-configset', { coreName: 'configset-core' }); - await configsetSolr.withConfigset('sample-configset', './configsets/sample-configset'); + const configsetSolr = await builder.addSolr("solr-configset", { + coreName: "configset-core", + }); + await configsetSolr.withConfigset( + "sample-configset", + "./configsets/sample-configset", + ); } await builder.build().run(); diff --git a/examples/solr/CommunityToolkit.Aspire.Hosting.Solr.AppHost.TypeScript/aspire.config.json b/examples/solr/CommunityToolkit.Aspire.Hosting.Solr.AppHost.TypeScript/aspire.config.json index cb011427e..ff66ff9b6 100644 --- a/examples/solr/CommunityToolkit.Aspire.Hosting.Solr.AppHost.TypeScript/aspire.config.json +++ b/examples/solr/CommunityToolkit.Aspire.Hosting.Solr.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Solr": "" + "CommunityToolkit.Aspire.Hosting.Solr": "../../../src/CommunityToolkit.Aspire.Hosting.Solr/CommunityToolkit.Aspire.Hosting.Solr.csproj" } } diff --git a/examples/sql-database-projects/CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects.AppHost.TypeScript/aspire.config.json b/examples/sql-database-projects/CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects.AppHost.TypeScript/aspire.config.json index 9c781d96d..2cab0502d 100644 --- a/examples/sql-database-projects/CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects.AppHost.TypeScript/aspire.config.json +++ b/examples/sql-database-projects/CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects.AppHost.TypeScript/aspire.config.json @@ -14,6 +14,6 @@ }, "packages": { "Aspire.Hosting.SqlServer": "", - "CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects": "13.2.1-polyglot.local" + "CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects": "../../../src/CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects/CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects.csproj" } -} \ No newline at end of file +} diff --git a/examples/sqlite/CommunityToolkit.Aspire.Hosting.Sqlite.AppHost.TypeScript/aspire.config.json b/examples/sqlite/CommunityToolkit.Aspire.Hosting.Sqlite.AppHost.TypeScript/aspire.config.json index 633594ece..98fc0ca9c 100644 --- a/examples/sqlite/CommunityToolkit.Aspire.Hosting.Sqlite.AppHost.TypeScript/aspire.config.json +++ b/examples/sqlite/CommunityToolkit.Aspire.Hosting.Sqlite.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Sqlite": "" + "CommunityToolkit.Aspire.Hosting.Sqlite": "../../../src/CommunityToolkit.Aspire.Hosting.Sqlite/CommunityToolkit.Aspire.Hosting.Sqlite.csproj" } -} \ No newline at end of file +} diff --git a/examples/sqlserver-ext/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions.AppHost.TypeScript/aspire.config.json b/examples/sqlserver-ext/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions.AppHost.TypeScript/aspire.config.json index 298903de9..8b3e46eaa 100644 --- a/examples/sqlserver-ext/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions.AppHost.TypeScript/aspire.config.json +++ b/examples/sqlserver-ext/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.SqlServer.Extensions": "" + "CommunityToolkit.Aspire.Hosting.SqlServer.Extensions": "../../../src/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions.csproj" } } diff --git a/examples/stripe/CommunityToolkit.Aspire.Hosting.Stripe.AppHost.TypeScript/aspire.config.json b/examples/stripe/CommunityToolkit.Aspire.Hosting.Stripe.AppHost.TypeScript/aspire.config.json index 62b113c3c..10feabeef 100644 --- a/examples/stripe/CommunityToolkit.Aspire.Hosting.Stripe.AppHost.TypeScript/aspire.config.json +++ b/examples/stripe/CommunityToolkit.Aspire.Hosting.Stripe.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Stripe": "" + "CommunityToolkit.Aspire.Hosting.Stripe": "../../../src/CommunityToolkit.Aspire.Hosting.Stripe/CommunityToolkit.Aspire.Hosting.Stripe.csproj" } } diff --git a/examples/surrealdb/CommunityToolkit.Aspire.Hosting.SurrealDb.AppHost.TypeScript/aspire.config.json b/examples/surrealdb/CommunityToolkit.Aspire.Hosting.SurrealDb.AppHost.TypeScript/aspire.config.json index 89d2536fa..c0d5aeacb 100644 --- a/examples/surrealdb/CommunityToolkit.Aspire.Hosting.SurrealDb.AppHost.TypeScript/aspire.config.json +++ b/examples/surrealdb/CommunityToolkit.Aspire.Hosting.SurrealDb.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.SurrealDb": "" + "CommunityToolkit.Aspire.Hosting.SurrealDb": "../../../src/CommunityToolkit.Aspire.Hosting.SurrealDb/CommunityToolkit.Aspire.Hosting.SurrealDb.csproj" } -} \ No newline at end of file +} diff --git a/examples/umami/CommunityToolkit.Aspire.Hosting.Umami.AppHost.TypeScript/aspire.config.json b/examples/umami/CommunityToolkit.Aspire.Hosting.Umami.AppHost.TypeScript/aspire.config.json index d1b56bc58..1c0270a85 100644 --- a/examples/umami/CommunityToolkit.Aspire.Hosting.Umami.AppHost.TypeScript/aspire.config.json +++ b/examples/umami/CommunityToolkit.Aspire.Hosting.Umami.AppHost.TypeScript/aspire.config.json @@ -13,6 +13,6 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Umami": "" + "CommunityToolkit.Aspire.Hosting.Umami": "../../../src/CommunityToolkit.Aspire.Hosting.Umami/CommunityToolkit.Aspire.Hosting.Umami.csproj" } } diff --git a/examples/zitadel/CommunityToolkit.Aspire.Hosting.Zitadel.AppHost.TypeScript/aspire.config.json b/examples/zitadel/CommunityToolkit.Aspire.Hosting.Zitadel.AppHost.TypeScript/aspire.config.json index 0947a2ceb..e0d556620 100644 --- a/examples/zitadel/CommunityToolkit.Aspire.Hosting.Zitadel.AppHost.TypeScript/aspire.config.json +++ b/examples/zitadel/CommunityToolkit.Aspire.Hosting.Zitadel.AppHost.TypeScript/aspire.config.json @@ -13,7 +13,7 @@ } }, "packages": { - "CommunityToolkit.Aspire.Hosting.Zitadel": "13.2.1-polyglot.local", + "CommunityToolkit.Aspire.Hosting.Zitadel": "../../../src/CommunityToolkit.Aspire.Hosting.Zitadel/CommunityToolkit.Aspire.Hosting.Zitadel.csproj", "Aspire.Hosting.PostgreSQL": "" } -} \ No newline at end of file +} diff --git a/src/CommunityToolkit.Aspire.Hosting.KurrentDB/CommunityToolkit.Aspire.Hosting.KurrentDB.csproj b/src/CommunityToolkit.Aspire.Hosting.KurrentDB/CommunityToolkit.Aspire.Hosting.KurrentDB.csproj index c5544f43d..1c369db03 100644 --- a/src/CommunityToolkit.Aspire.Hosting.KurrentDB/CommunityToolkit.Aspire.Hosting.KurrentDB.csproj +++ b/src/CommunityToolkit.Aspire.Hosting.KurrentDB/CommunityToolkit.Aspire.Hosting.KurrentDB.csproj @@ -8,6 +8,7 @@ + diff --git a/src/CommunityToolkit.Aspire.Hosting.PowerShell/CommunityToolkit.Aspire.Hosting.PowerShell.csproj b/src/CommunityToolkit.Aspire.Hosting.PowerShell/CommunityToolkit.Aspire.Hosting.PowerShell.csproj index 9513fc8e1..a5acd0a43 100644 --- a/src/CommunityToolkit.Aspire.Hosting.PowerShell/CommunityToolkit.Aspire.Hosting.PowerShell.csproj +++ b/src/CommunityToolkit.Aspire.Hosting.PowerShell/CommunityToolkit.Aspire.Hosting.PowerShell.csproj @@ -8,6 +8,7 @@ + diff --git a/tests/CommunityToolkit.Aspire.Hosting.McpInspector.Tests/TypeScriptAppHostTests.cs b/tests/CommunityToolkit.Aspire.Hosting.McpInspector.Tests/TypeScriptAppHostTests.cs index 2385aaa6a..a6406da56 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.McpInspector.Tests/TypeScriptAppHostTests.cs +++ b/tests/CommunityToolkit.Aspire.Hosting.McpInspector.Tests/TypeScriptAppHostTests.cs @@ -14,6 +14,10 @@ await TypeScriptAppHostTest.Run( exampleName: "mcp-inspector", waitForResources: ["inspector-default", "inspector-configured", "inspector-yarn", "inspector-pnpm", "inspector-bun"], requiredCommands: ["yarn", "pnpm", "bun"], + secrets: new Dictionary + { + ["Parameters:proxy-token"] = "test-proxy-token" + }, cancellationToken: TestContext.Current.CancellationToken); } } diff --git a/tests/CommunityToolkit.Aspire.Hosting.Ngrok.Tests/TypeScriptAppHostTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Ngrok.Tests/TypeScriptAppHostTests.cs index c26b5e45b..79e2a0b6c 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.Ngrok.Tests/TypeScriptAppHostTests.cs +++ b/tests/CommunityToolkit.Aspire.Hosting.Ngrok.Tests/TypeScriptAppHostTests.cs @@ -3,6 +3,7 @@ namespace CommunityToolkit.Aspire.Hosting.Ngrok.Tests; [RequiresDocker] +[RequiresAuthenticatedTool("ngrok")] public class TypeScriptAppHostTests { [Fact] diff --git a/tests/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.Tests/TypeScriptAppHostTests.cs b/tests/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.Tests/TypeScriptAppHostTests.cs index 4430a2138..78da54e48 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.Tests/TypeScriptAppHostTests.cs +++ b/tests/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.Tests/TypeScriptAppHostTests.cs @@ -12,7 +12,7 @@ await TypeScriptAppHostTest.Run( appHostProject: "CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.AppHost.TypeScript", packageName: "CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector", exampleName: "opentelemetry-collector", - waitForResources: ["collector", "collector-routed"], + waitForResources: ["collector"], cancellationToken: TestContext.Current.CancellationToken); } } diff --git a/tests/CommunityToolkit.Aspire.Testing/TypeScriptAppHostTest.cs b/tests/CommunityToolkit.Aspire.Testing/TypeScriptAppHostTest.cs index 879ead6cc..dedc17042 100644 --- a/tests/CommunityToolkit.Aspire.Testing/TypeScriptAppHostTest.cs +++ b/tests/CommunityToolkit.Aspire.Testing/TypeScriptAppHostTest.cs @@ -14,6 +14,7 @@ public static class TypeScriptAppHostTest /// The resources that must reach the expected Aspire state, if any. /// The Aspire resource status to wait for. /// Optional commands that must exist on PATH before validation runs. + /// Optional dictionary of secret key-value pairs to set via aspire secret set before starting the app host. /// The cancellation token. public static async Task Run( string appHostProject, @@ -22,6 +23,7 @@ public static async Task Run( IEnumerable waitForResources, string waitStatus = "healthy", IEnumerable? requiredCommands = null, + Dictionary? secrets = null, CancellationToken cancellationToken = default) { ArgumentException.ThrowIfNullOrWhiteSpace(appHostProject); @@ -76,6 +78,12 @@ public static async Task Run( arguments.Add(string.Join(',', commands)); } + if (secrets is { Count: > 0 }) + { + arguments.Add("-Secrets"); + arguments.Add(string.Join(',', secrets.Select(kvp => $"{kvp.Key}={kvp.Value}"))); + } + await ProcessTestUtilities.RunProcessAsync(shell, arguments, repoRoot, cancellationToken); } } \ No newline at end of file