@@ -14,12 +14,35 @@ namespace Microsoft.DotNet.Cli.Commands.Tool.Runx;
14
14
internal class ToolRunxCommand ( ParseResult result ) : CommandBase ( result )
15
15
{
16
16
private readonly string _toolCommandName = result . GetValue ( ToolRunxCommandParser . CommandNameArgument ) ;
17
- private readonly IEnumerable < string > _forwardArgument = result . GetValue ( ToolRunxCommandParser . CommandArgument ) ;
18
- public bool _allowRollForward = result . GetValue ( ToolRunxCommandParser . RollForwardOption ) ;
19
17
20
18
public override int Execute ( )
21
19
{
20
+ PackageLocation packageLocation = new PackageLocation ( ) ;
21
+ PackageId packageId = new PackageId ( _toolCommandName ) ;
22
+
22
23
var tempDir = new DirectoryPath ( PathUtilities . CreateTempSubdirectory ( ) ) ;
23
- return 0 ;
24
+
25
+ // Acquire package
26
+
27
+ ToolPackageStoreAndQuery toolPackageStoreAndQuery = ToolPackageFactory . CreateConcreteToolPackageStore ( tempDir ) ;
28
+ ToolPackageDownloader toolPackageDownloader = new ToolPackageDownloader ( toolPackageStoreAndQuery ) ;
29
+ ToolPackageUninstaller toolPackageUninstaller = new ToolPackageUninstaller ( toolPackageStoreAndQuery ) ;
30
+
31
+ IToolPackage toolPackage = toolPackageStoreAndQuery . EnumeratePackageVersions ( packageId ) . FirstOrDefault ( )
32
+ ?? toolPackageDownloader . InstallPackage ( packageLocation , packageId ) ;
33
+
34
+ // Run package
35
+
36
+ DotnetToolsCommandResolver dotnetToolsCommandResolver = new DotnetToolsCommandResolver ( toolPackageStoreAndQuery . Root . ToString ( ) ) ;
37
+ CommandSpec commandSpec = dotnetToolsCommandResolver . Resolve ( new CommandResolverArguments ( )
38
+ {
39
+ // since LocalToolsCommandResolver is a resolver, and all resolver input have dotnet-
40
+ CommandName = $ "dotnet-{ _toolCommandName } ",
41
+ CommandArguments = new string [ ] { } ,
42
+ } ) ;
43
+
44
+ var result = CommandFactoryUsingResolver . Create ( commandSpec ) . Execute ( ) ;
45
+
46
+ return result . ExitCode ;
24
47
}
25
48
}
0 commit comments