Skip to content

Add polyglot exports for solr#1188

Merged
aaronpowell merged 4 commits into
mainfrom
dapine/polyglot-export-solr
Apr 1, 2026
Merged

Add polyglot exports for solr#1188
aaronpowell merged 4 commits into
mainfrom
dapine/polyglot-export-solr

Conversation

@IEvangelist

Copy link
Copy Markdown
Contributor

Adds AspireExport coverage and a matching TypeScript validation apphost for solr.

Copilot AI review requested due to automatic review settings March 18, 2026 15:54
@github-actions

github-actions Bot commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/CommunityToolkit/Aspire/main/eng/scripts/dogfood-pr.sh | bash -s -- 1188

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/CommunityToolkit/Aspire/main/eng/scripts/dogfood-pr.ps1) } 1188"

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds polyglot export metadata for the Solr hosting integration so it can be consumed from generated app hosts (e.g., TypeScript), and introduces a TypeScript ValidationAppHost sample for the Solr package.

Changes:

  • Annotate SolrResource and Solr builder extension methods with [AspireExport] for polyglot generation.
  • Add TypeScript ValidationAppHost scaffolding (tsconfig/package files + apphost) for CommunityToolkit.Aspire.Hosting.Solr.
  • Minor formatting cleanup in the Solr C# files.

Reviewed changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/CommunityToolkit.Aspire.Hosting.Solr/SolrResource.cs Exports SolrResource (properties exposed) for polyglot consumption.
src/CommunityToolkit.Aspire.Hosting.Solr/SolrBuilderExtensions.cs Exports Solr builder extension methods (add/config/volume/bind-mount) for polyglot usage.
playground/polyglot/TypeScript/CommunityToolkit.Aspire.Hosting.Solr/ValidationAppHost/tsconfig.json TypeScript compilation config for the ValidationAppHost.
playground/polyglot/TypeScript/CommunityToolkit.Aspire.Hosting.Solr/ValidationAppHost/package.json NPM scripts and dependencies for running/building the ValidationAppHost.
playground/polyglot/TypeScript/CommunityToolkit.Aspire.Hosting.Solr/ValidationAppHost/package-lock.json Locked dependency graph for reproducible installs.
playground/polyglot/TypeScript/CommunityToolkit.Aspire.Hosting.Solr/ValidationAppHost/apphost.ts Validation app host exercising exported Solr APIs from TypeScript.
playground/polyglot/TypeScript/CommunityToolkit.Aspire.Hosting.Solr/ValidationAppHost/apphost.run.json Aspire run profile configuration for the TypeScript app host.
playground/polyglot/TypeScript/CommunityToolkit.Aspire.Hosting.Solr/ValidationAppHost/.aspire/settings.json Aspire settings pointing at the TypeScript app host and package.
Files not reviewed (1)
  • playground/polyglot/TypeScript/CommunityToolkit.Aspire.Hosting.Solr/ValidationAppHost/package-lock.json: Language not supported
Comments suppressed due to low confidence (1)

src/CommunityToolkit.Aspire.Hosting.Solr/SolrBuilderExtensions.cs:115

  • source is validated with ArgumentNullException.ThrowIfNull, but an empty string is also invalid for a bind-mount path and will fail later at runtime. Consider using ArgumentException.ThrowIfNullOrEmpty(source) (or equivalent) to fail fast and keep validation consistent with WithConfigset, which already rejects empty paths.
    [AspireExport("withDataBindMount", Description = "Adds a bind mount for the Solr data folder")]
    public static IResourceBuilder<SolrResource> WithDataBindMount(this IResourceBuilder<SolrResource> builder, string source, bool isReadOnly = false)
    {
        ArgumentNullException.ThrowIfNull(builder);
        ArgumentNullException.ThrowIfNull(source);

You can also share your feedback on Copilot code review. Take the survey.

Comment on lines +3 to 5
#pragma warning disable ASPIREATS001 // AspireExport is experimental

namespace Aspire.Hosting.ApplicationModel;
Comment on lines +5 to 7
#pragma warning disable ASPIREATS001 // AspireExport is experimental

namespace Aspire.Hosting;
await bindMountedSolr.coreName.set(bindCoreName);
await bindMountedSolr.withDataBindMount(dataDirectory);

if (false) {
IEvangelist and others added 3 commits March 30, 2026 09:37
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@IEvangelist IEvangelist force-pushed the dapine/polyglot-export-solr branch from 6f6be53 to 87eed1b Compare March 30, 2026 15:43
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Branch Rate Complexity Health
CommunityToolkit.Aspire.GoFeatureFlag 100% 100% 44
CommunityToolkit.Aspire.Hosting.ActiveMQ 88% 48% 95
CommunityToolkit.Aspire.Hosting.ActiveMQ.MassTransit 100% 100% 15
CommunityToolkit.Aspire.Hosting.Adminer 89% 70% 20
CommunityToolkit.Aspire.Hosting.Azure.Dapr 28% 5% 38
CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis 60% 50% 20
CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder 100% 100% 11
CommunityToolkit.Aspire.Hosting.Azure.Extensions 64% 30% 27
CommunityToolkit.Aspire.Hosting.Bun 96% 83% 14
CommunityToolkit.Aspire.Hosting.Dapr 47% 26% 557
CommunityToolkit.Aspire.Hosting.DbGate 96% 62% 12
CommunityToolkit.Aspire.Hosting.Deno 98% 85% 22
CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions 100% 94% 30
CommunityToolkit.Aspire.Hosting.Flagd 79% 100% 16
CommunityToolkit.Aspire.Hosting.Flyway 88% 100% 6
CommunityToolkit.Aspire.Hosting.GoFeatureFlag 98% 73% 18
CommunityToolkit.Aspire.Hosting.GoFeatureFlag.ApiService 100% 100% 3
CommunityToolkit.Aspire.Hosting.Golang 59% 46% 45
CommunityToolkit.Aspire.Hosting.Java 86% 75% 207
CommunityToolkit.Aspire.Hosting.Java.ApiApp 65% 50% 11
CommunityToolkit.Aspire.Hosting.Java.WebApp 25% 18% 59
CommunityToolkit.Aspire.Hosting.JavaScript.Extensions 97% 83% 158
CommunityToolkit.Aspire.Hosting.k6 70% 10% 8
CommunityToolkit.Aspire.Hosting.k6.ApiService 61% 67% 13
CommunityToolkit.Aspire.Hosting.Keycloak.Extensions 100% 100% 11
CommunityToolkit.Aspire.Hosting.KurrentDB 88% 100% 19
CommunityToolkit.Aspire.Hosting.LavinMQ 90% 83% 18
CommunityToolkit.Aspire.Hosting.LavinMQ.MassTransit 100% 100% 15
CommunityToolkit.Aspire.Hosting.MailPit 91% 100% 13
CommunityToolkit.Aspire.Hosting.McpInspector 88% 60% 99
CommunityToolkit.Aspire.Hosting.McpInspector.McpServer 89% 100% 2
CommunityToolkit.Aspire.Hosting.Meilisearch 95% 85% 30
CommunityToolkit.Aspire.Hosting.Meilisearch.ApiService 82% 100% 15
CommunityToolkit.Aspire.Hosting.Minio 99% 91% 32
CommunityToolkit.Aspire.Hosting.Minio.ApiService 98% 92% 15
CommunityToolkit.Aspire.Hosting.MongoDB.Extensions 95% 90% 10
CommunityToolkit.Aspire.Hosting.MySql.Extensions 98% 93% 37
CommunityToolkit.Aspire.Hosting.Ngrok 48% 32% 96
CommunityToolkit.Aspire.Hosting.Ollama 77% 67% 267
CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector 79% 70% 42
CommunityToolkit.Aspire.Hosting.PapercutSmtp 100% 100% 9
CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions 98% 91% 43
CommunityToolkit.Aspire.Hosting.PowerShell 75% 53% 91
CommunityToolkit.Aspire.Hosting.Python.Extensions 46% 31% 44
CommunityToolkit.Aspire.Hosting.RavenDB 63% 46% 118
CommunityToolkit.Aspire.Hosting.RavenDB.ApiService 21% 33% 16
CommunityToolkit.Aspire.Hosting.Redis.Extensions 100% 71% 14
CommunityToolkit.Aspire.Hosting.Rust 94% 83% 8
CommunityToolkit.Aspire.Hosting.Sftp 86% 70% 16
CommunityToolkit.Aspire.Hosting.Sftp.ApiService 94% 100% 10
CommunityToolkit.Aspire.Hosting.Solr 88% 100% 19
CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects 70% 62% 141
CommunityToolkit.Aspire.Hosting.Sqlite 90% 93% 24
CommunityToolkit.Aspire.Hosting.SqlServer.Extensions 98% 93% 37
CommunityToolkit.Aspire.Hosting.Stripe 50% 17% 119
CommunityToolkit.Aspire.Hosting.SurrealDb 71% 54% 210
CommunityToolkit.Aspire.Hosting.SurrealDb.ApiService 81% 52% 299
CommunityToolkit.Aspire.Hosting.Umami 98% 75% 9
CommunityToolkit.Aspire.Hosting.Zitadel 97% 86% 31
CommunityToolkit.Aspire.KurrentDB 97% 95% 33
CommunityToolkit.Aspire.MassTransit.RabbitMQ 100% 100% 24
CommunityToolkit.Aspire.Meilisearch 97% 96% 38
CommunityToolkit.Aspire.Microsoft.Data.Sqlite 94% 85% 26
CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite 68% 67% 117
CommunityToolkit.Aspire.Minio.Client 93% 87% 67
CommunityToolkit.Aspire.OllamaSharp 78% 74% 76
CommunityToolkit.Aspire.RavenDB.Client 98% 78% 87
CommunityToolkit.Aspire.Sftp 90% 94% 54
CommunityToolkit.Aspire.Sqlite.Api 93% 90% 68
CommunityToolkit.Aspire.SurrealDb 99% 85% 39
Summary 75% (6849 / 9100) 58% (1938 / 3347) 4057

Minimum allowed line rate is 60%

aaronpowell added a commit that referenced this pull request Apr 1, 2026
Squash merge of #1188

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@aaronpowell aaronpowell merged commit 329a9fe into main Apr 1, 2026
235 of 243 checks passed
@aaronpowell aaronpowell deleted the dapine/polyglot-export-solr branch April 1, 2026 00:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants