Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions src/Aspire.Cli/Agents/AspireSkills/AspireSkillsInstaller.cs
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,10 @@ private async Task<AcquisitionResult> InstallFromEmbeddedAsync(

if (ValidateEmbeddedMetadata(metadata) is { } metadataError)
{
return AcquisitionResult.Failed($"Embedded Aspire skills bundle metadata is invalid: {metadataError}");
return AcquisitionResult.Failed(string.Format(
CultureInfo.CurrentCulture,
AgentCommandStrings.AspireSkillsInstaller_InvalidMetadata,
metadataError));
}

if (!string.Equals(metadata.Version, version, StringComparison.OrdinalIgnoreCase))
Expand Down Expand Up @@ -256,27 +259,31 @@ private async Task<AcquisitionResult> InstallFromEmbeddedAsync(
{
if (string.IsNullOrWhiteSpace(metadata.Version))
{
return "Embedded Aspire skills metadata must specify a version.";
return AgentCommandStrings.AspireSkillsInstaller_MissingMetadataVersion;
}

if (!string.Equals(metadata.Repository, GitHubRepository, StringComparison.OrdinalIgnoreCase))
{
return string.Format(CultureInfo.InvariantCulture, "Embedded Aspire skills metadata repository '{0}' does not match expected repository '{1}'.", metadata.Repository, GitHubRepository);
return string.Format(
CultureInfo.CurrentCulture,
AgentCommandStrings.AspireSkillsInstaller_MetadataRepositoryMismatch,
metadata.Repository,
GitHubRepository);
}

if (string.IsNullOrWhiteSpace(metadata.Tag))
{
return "Embedded Aspire skills metadata must specify a GitHub release tag.";
return AgentCommandStrings.AspireSkillsInstaller_MissingMetadataTag;
}

if (string.IsNullOrWhiteSpace(metadata.AssetName))
{
return "Embedded Aspire skills metadata must specify a release asset name.";
return AgentCommandStrings.AspireSkillsInstaller_MissingMetadataAssetName;
}

if (string.IsNullOrWhiteSpace(metadata.Sha256))
{
return "Embedded Aspire skills metadata must specify the release asset SHA-256 hash.";
return AgentCommandStrings.AspireSkillsInstaller_MissingMetadataSha256;
}

return null;
Expand All @@ -294,8 +301,8 @@ private static void ValidateArchiveSha256(string archivePath, string expectedSha
if (!string.Equals(expectedHash, actualHash, StringComparison.OrdinalIgnoreCase))
{
throw new InvalidOperationException(string.Format(
CultureInfo.InvariantCulture,
"Embedded Aspire skills archive failed SHA-256 verification. Expected '{0}', got '{1}'.",
CultureInfo.CurrentCulture,
AgentCommandStrings.AspireSkillsInstaller_ArchiveHashVerificationFailed,
expectedHash,
actualHash));
}
Expand Down
63 changes: 63 additions & 0 deletions src/Aspire.Cli/Resources/AgentCommandStrings.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions src/Aspire.Cli/Resources/AgentCommandStrings.resx
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,27 @@
<data name="AspireSkillsInstaller_InvalidBundle" xml:space="preserve">
<value>The Aspire skills bundle is invalid: {0}</value>
</data>
<data name="AspireSkillsInstaller_InvalidMetadata" xml:space="preserve">
<value>Embedded Aspire skills bundle metadata is invalid: {0}</value>
</data>
<data name="AspireSkillsInstaller_MissingMetadataVersion" xml:space="preserve">
<value>Embedded Aspire skills metadata must specify a version.</value>
</data>
<data name="AspireSkillsInstaller_MetadataRepositoryMismatch" xml:space="preserve">
<value>Embedded Aspire skills metadata repository '{0}' does not match expected repository '{1}'.</value>
</data>
<data name="AspireSkillsInstaller_MissingMetadataTag" xml:space="preserve">
<value>Embedded Aspire skills metadata must specify a GitHub release tag.</value>
</data>
<data name="AspireSkillsInstaller_MissingMetadataAssetName" xml:space="preserve">
<value>Embedded Aspire skills metadata must specify a release asset name.</value>
</data>
<data name="AspireSkillsInstaller_MissingMetadataSha256" xml:space="preserve">
<value>Embedded Aspire skills metadata must specify the release asset SHA-256 hash.</value>
</data>
<data name="AspireSkillsInstaller_ArchiveHashVerificationFailed" xml:space="preserve">
<value>Embedded Aspire skills archive failed SHA-256 verification. Expected '{0}', got '{1}'.</value>
</data>
<data name="PlaywrightCliInstaller_InstallingStatus" xml:space="preserve">
<value>Installing Playwright CLI...</value>
</data>
Expand Down
35 changes: 35 additions & 0 deletions src/Aspire.Cli/Resources/xlf/AgentCommandStrings.cs.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

35 changes: 35 additions & 0 deletions src/Aspire.Cli/Resources/xlf/AgentCommandStrings.de.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

35 changes: 35 additions & 0 deletions src/Aspire.Cli/Resources/xlf/AgentCommandStrings.es.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading