7
7
using Microsoft . DotNet . Cli . CommandFactory ;
8
8
using Microsoft . DotNet . Cli . CommandFactory . CommandResolution ;
9
9
using Microsoft . DotNet . Cli . Commands . Tool . Install ;
10
+ using Microsoft . DotNet . Cli . NuGetPackageDownloader ;
10
11
using Microsoft . DotNet . Cli . ToolManifest ;
11
12
using Microsoft . DotNet . Cli . ToolPackage ;
12
13
using Microsoft . DotNet . Cli . Utils ;
@@ -16,18 +17,15 @@ namespace Microsoft.DotNet.Cli.Commands.Tool.Run;
16
17
17
18
internal class ToolRunCommand (
18
19
ParseResult result ,
19
- LocalToolsCommandResolver localToolsCommandResolver = null ,
20
- ToolManifestFinder toolManifest = null ) : CommandBase ( result )
20
+ LocalToolsCommandResolver localToolsCommandResolver = null ) : CommandBase ( result )
21
21
{
22
22
private readonly string _toolCommandName = result . GetValue ( ToolRunCommandParser . CommandNameArgument ) ;
23
- private readonly LocalToolsCommandResolver _localToolsCommandResolver = localToolsCommandResolver ?? new LocalToolsCommandResolver ( ) ;
24
23
private readonly IEnumerable < string > _forwardArgument = result . GetValue ( ToolRunCommandParser . CommandArgument ) ;
25
- public bool _allowRollForward = result . GetValue ( ToolRunCommandParser . RollForwardOption ) ;
26
- private readonly ToolManifestFinder _toolManifest = toolManifest ?? new ToolManifestFinder ( new DirectoryPath ( Directory . GetCurrentDirectory ( ) ) ) ;
27
24
private readonly bool _fromSource = result . GetValue ( ToolRunCommandParser . FromSourceOption ) ;
28
25
29
- private readonly IToolManifestEditor _toolManifestEditor = new ToolManifestEditor ( ) ;
30
- private readonly ILocalToolsResolverCache _localToolsResolverCache = new LocalToolsResolverCache ( ) ;
26
+ private readonly LocalToolsCommandResolver _localToolsCommandResolver = localToolsCommandResolver ?? new LocalToolsCommandResolver ( ) ;
27
+ public bool _allowRollForward = result . GetValue ( ToolRunCommandParser . RollForwardOption ) ;
28
+
31
29
public override int Execute ( )
32
30
{
33
31
CommandSpec commandSpec = _localToolsCommandResolver . ResolveStrict ( new CommandResolverArguments ( )
@@ -38,9 +36,10 @@ public override int Execute()
38
36
39
37
} , _allowRollForward ) ;
40
38
41
- if ( commandSpec == null && _fromSource && UserAgreedToExecuteFromSource ( ) )
39
+ if ( commandSpec == null && _fromSource )
42
40
{
43
- return ExecuteFromSource ( ) ;
41
+ // Reroute to ToolRunFromSourceCommand
42
+ return new ToolRunFromSourceCommand ( _parseResult ) . Execute ( ) ;
44
43
}
45
44
46
45
if ( commandSpec == null )
@@ -52,50 +51,5 @@ public override int Execute()
52
51
return result . ExitCode ;
53
52
}
54
53
55
- public int ExecuteFromSource ( )
56
- {
57
- string tempDirectory = PathUtilities . CreateTempSubdirectory ( ) ;
58
- FilePath manifestFile = _toolManifest . FindFirst ( true ) ;
59
- PackageId packageId = new ( _toolCommandName ) ;
60
-
61
- ToolInstallLocalInstaller _toolInstaller = new ( _parseResult , new ToolPackageDownloader (
62
- store : new ToolPackageStoreAndQuery ( new DirectoryPath ( tempDirectory ) ) ) ) ;
63
-
64
- IToolPackage toolPackage = _toolInstaller . Install ( manifestFile , packageId ) ;
65
-
66
- _toolManifestEditor . Add (
67
- manifestFile ,
68
- toolPackage . Id ,
69
- toolPackage . Version ,
70
- [ toolPackage . Command . Name ] ,
71
- _allowRollForward ) ;
72
-
73
- _localToolsResolverCache . SaveToolPackage (
74
- toolPackage ,
75
- _toolInstaller . TargetFrameworkToInstall ) ;
76
-
77
- CommandSpec commandSpec = _localToolsCommandResolver . ResolveStrict ( new CommandResolverArguments ( )
78
- {
79
- CommandName = $ "dotnet-{ toolPackage . Command . Name } ",
80
- CommandArguments = _forwardArgument ,
81
- } , _allowRollForward ) ;
82
-
83
- if ( commandSpec == null )
84
- {
85
- throw new GracefulException ( [ string . Format ( CliCommandStrings . CannotFindCommandName , _toolCommandName ) ] , isUserError : false ) ;
86
- }
87
-
88
- var result = CommandFactoryUsingResolver . Create ( commandSpec ) . Execute ( ) ;
89
-
90
- _toolManifestEditor . Remove ( manifestFile , toolPackage . Id ) ;
91
54
92
- return result . ExitCode ;
93
- }
94
-
95
- private bool UserAgreedToExecuteFromSource ( )
96
- {
97
- // TODO: Use a better way to ask for user input
98
- Console . WriteLine ( "Tool will be run from source. Accept? [yn]" ) ;
99
- return Console . ReadLine ( ) == "y" ;
100
- }
101
55
}
0 commit comments