Skip to content

Commit 93d9f19

Browse files
Muckenbatscherradical
authored andcommitted
noun-first form for dotnet CLI package add (#14881)
1 parent 778a922 commit 93d9f19

2 files changed

Lines changed: 28 additions & 20 deletions

File tree

src/Aspire.Cli/DotNet/DotNetCliRunner.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -764,24 +764,27 @@ public async Task<int> AddPackageAsync(FileInfo projectFilePath, string packageN
764764

765765
var cliArgsList = new List<string>
766766
{
767-
"add"
767+
"package"
768768
};
769769

770770
// For single-file AppHost (apphost.cs), use --file switch instead of positional argument
771771
var isSingleFileAppHost = projectFilePath.Name.Equals("apphost.cs", StringComparison.OrdinalIgnoreCase);
772772
if (isSingleFileAppHost)
773773
{
774-
cliArgsList.AddRange(["package", "--file", projectFilePath.FullName]);
774+
cliArgsList.Add("add");
775+
cliArgsList.AddRange(["--file", projectFilePath.FullName]);
775776
// For single-file AppHost, use packageName@version format
776777
cliArgsList.Add($"{packageName}@{packageVersion}");
777778
}
778779
else
779780
{
780-
cliArgsList.AddRange([projectFilePath.FullName, "package"]);
781+
cliArgsList.Add("add");
781782
// For non single-file scenarios, use separate --version flag
782783
cliArgsList.Add(packageName);
783784
cliArgsList.Add("--version");
784785
cliArgsList.Add(packageVersion);
786+
cliArgsList.Add("--project");
787+
cliArgsList.Add(projectFilePath.FullName);
785788
}
786789

787790
if (string.IsNullOrEmpty(nugetSource))

tests/Aspire.Cli.Tests/DotNet/DotNetCliRunnerTests.cs

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -579,14 +579,14 @@ public async Task AddPackageAsyncUseFilesSwitchForSingleFileAppHost()
579579
Assert.Contains("Aspire.Hosting.Redis@9.2.0", args);
580580
Assert.Contains("--no-restore", args);
581581

582-
// Verify the order: add package PackageName --file FilePath --version Version --no-restore
583-
var addIndex = Array.IndexOf(args, "add");
582+
// Verify the order: package add PackageName --file FilePath --version Version --no-restore
584583
var packageIndex = Array.IndexOf(args, "package");
584+
var addIndex = Array.IndexOf(args, "add");
585585
var fileIndex = Array.IndexOf(args, "--file");
586586
var filePathIndex = Array.IndexOf(args, appHostFile.FullName);
587587
var packageNameIndex = Array.IndexOf(args, "Aspire.Hosting.Redis@9.2.0");
588588

589-
Assert.True(addIndex < packageIndex);
589+
Assert.True(packageIndex < addIndex);
590590
Assert.True(packageIndex < fileIndex);
591591
Assert.True(fileIndex < filePathIndex);
592592
Assert.True(filePathIndex < packageNameIndex);
@@ -633,19 +633,21 @@ public async Task AddPackageAsyncUsesPositionalArgumentForCsprojFile()
633633
Assert.Contains("--source", args);
634634
Assert.Contains("https://api.nuget.org/v3/index.json", args);
635635

636-
// Verify the order: add ProjectFile package PackageName --version Version --source Source
637-
var addIndex = Array.IndexOf(args, "add");
638-
var projectIndex = Array.IndexOf(args, projectFile.FullName);
636+
// Verify the order: package add PackageName --version Version --source Source --project ProjectFile
639637
var packageIndex = Array.IndexOf(args, "package");
638+
var addIndex = Array.IndexOf(args, "add");
639+
var projectFlagIndex = Array.IndexOf(args, "--project");
640+
var projectValueIndex = Array.IndexOf(args, projectFile.FullName);
640641
var packageNameIndex = Array.IndexOf(args, "Aspire.Hosting.Redis");
641642
var versionFlagIndex = Array.IndexOf(args, "--version");
642643
var versionValueIndex = Array.IndexOf(args, "9.2.0");
643644

644-
Assert.True(addIndex < projectIndex);
645-
Assert.True(projectIndex < packageIndex);
646-
Assert.True(packageIndex < packageNameIndex);
645+
Assert.True(packageIndex < addIndex);
646+
Assert.True(addIndex < packageNameIndex);
647647
Assert.True(packageNameIndex < versionFlagIndex);
648648
Assert.True(versionFlagIndex < versionValueIndex);
649+
Assert.True(packageNameIndex < projectFlagIndex);
650+
Assert.True(projectFlagIndex < projectValueIndex);
649651

650652
// Should NOT contain --file or the @version format
651653
Assert.DoesNotContain("--file", args);
@@ -684,28 +686,31 @@ public async Task AddPackageAsyncUsesPositionalArgumentForCsprojFileWithNoRestor
684686
(args, _, _, _) =>
685687
{
686688
// Verify arguments are correct for .csproj file with --no-restore (no source provided)
687-
Assert.Contains("add", args);
688689
Assert.Contains("package", args);
689-
Assert.Contains(projectFile.FullName, args);
690+
Assert.Contains("add", args);
690691
Assert.Contains("Aspire.Hosting.Redis", args);
691692
Assert.Contains("--version", args);
692693
Assert.Contains("9.2.0", args);
694+
Assert.Contains("--project", args);
695+
Assert.Contains(projectFile.FullName, args);
693696
Assert.Contains("--no-restore", args);
694697

695-
// Verify the order: add ProjectFile package PackageName --version Version --no-restore
696-
var addIndex = Array.IndexOf(args, "add");
697-
var projectIndex = Array.IndexOf(args, projectFile.FullName);
698+
// Verify the order: package add PackageName --version Version --project ProjectFile --no-restore
698699
var packageIndex = Array.IndexOf(args, "package");
700+
var addIndex = Array.IndexOf(args, "add");
699701
var packageNameIndex = Array.IndexOf(args, "Aspire.Hosting.Redis");
700702
var versionFlagIndex = Array.IndexOf(args, "--version");
701703
var versionValueIndex = Array.IndexOf(args, "9.2.0");
704+
var projectFlagIndex = Array.IndexOf(args, "--project");
705+
var projectValueIndex = Array.IndexOf(args, projectFile.FullName);
702706
var noRestoreIndex = Array.IndexOf(args, "--no-restore");
703707

704-
Assert.True(addIndex < projectIndex);
705-
Assert.True(projectIndex < packageIndex);
706-
Assert.True(packageIndex < packageNameIndex);
708+
Assert.True(packageIndex < addIndex);
709+
Assert.True(addIndex < packageNameIndex);
707710
Assert.True(packageNameIndex < versionFlagIndex);
708711
Assert.True(versionFlagIndex < versionValueIndex);
712+
Assert.True(packageNameIndex < projectFlagIndex);
713+
Assert.True(projectFlagIndex < projectValueIndex);
709714
Assert.True(versionValueIndex < noRestoreIndex);
710715

711716
// Should NOT contain --file, --source, or the @version format

0 commit comments

Comments
 (0)