8
8
using Microsoft . DotNet . Cli . ToolManifest ;
9
9
using Microsoft . DotNet . Cli . ToolPackage ;
10
10
using Microsoft . DotNet . Cli . Utils ;
11
+ using Microsoft . DotNet . Cli . Utils . Extensions ;
11
12
using Microsoft . Extensions . EnvironmentAbstractions ;
12
13
using NuGet . Frameworks ;
13
14
using NuGet . Packaging ;
@@ -35,13 +36,18 @@ public override int Execute()
35
36
return 1 ;
36
37
}
37
38
39
+ if ( _allowRollForward )
40
+ {
41
+ _forwardArguments . Append ( "--allow-roll-forward" ) ;
42
+ }
43
+
38
44
PackageId packageId = new ( _toolCommandName ) ;
39
45
VersionRange versionRange = _parseResult . GetVersionRange ( ) ;
40
46
41
47
string tempDirectory = PathUtilities . CreateTempSubdirectory ( ) ;
42
48
43
- IToolManifestFinder toolManifestFinder = new ToolManifestFinder ( new ( tempDirectory ) ) ;
44
- IToolManifestEditor toolManifestEditor = new ToolManifestEditor ( ) ;
49
+ ToolManifestFinder toolManifestFinder = new ToolManifestFinder ( new ( tempDirectory ) ) ;
50
+ ToolManifestEditor toolManifestEditor = new ToolManifestEditor ( ) ;
45
51
FilePath toolManifestPath = toolManifestFinder . FindFirst ( true ) ;
46
52
47
53
ToolPackageStoreAndQuery toolPackageStoreAndQuery = new ( new ( tempDirectory ) ) ;
@@ -56,45 +62,24 @@ public override int Execute()
56
62
packageId : packageId ,
57
63
verbosity : _verbosity ,
58
64
versionRange : versionRange ,
65
+ isGlobalToolRollForward : _allowRollForward , // Needed to update .runtimeconfig.json
59
66
restoreActionConfig : new (
60
67
IgnoreFailedSources : _ignoreFailedSources ,
61
68
Interactive : _interactive ) ) ;
62
69
63
- LocalToolsResolverCache localToolsResolverCache = new ( ) ;
64
- localToolsResolverCache . SaveToolPackage ( toolPackage , BundledTargetFramework . GetTargetFrameworkMoniker ( ) ) ;
65
-
66
- toolManifestEditor . Add (
67
- toolManifestPath ,
68
- packageId ,
69
- toolPackage . Version ,
70
- [ toolPackage . Command . Name ] ,
71
- rollForward : _allowRollForward ) ;
72
-
73
- LocalToolsCommandResolver localToolsCommandResolver = new ( ) ;
74
-
75
- CommandSpec commandSpec = localToolsCommandResolver . ResolveStrict ( new ( )
76
- {
77
- CommandName = $ "dotnet-{ toolPackage . Command . Name } ",
78
- CommandArguments = _forwardArguments ,
79
- } , _allowRollForward ) ;
80
-
81
- if ( commandSpec == null )
82
- {
83
- throw new GracefulException (
84
- string . Format ( CliCommandStrings . CannotFindCommandName , _toolCommandName ) ,
85
- isUserError : false ) ;
86
- }
87
-
70
+ CommandSpec commandSpec = MuxerCommandSpecMaker . CreatePackageCommandSpecUsingMuxer ( toolPackage . Command . Executable . ToString ( ) , _forwardArguments ) ;
88
71
var command = CommandFactoryUsingResolver . Create ( commandSpec ) ;
89
72
var result = command . Execute ( ) ;
90
-
91
73
return result . ExitCode ;
92
74
}
75
+
93
76
private bool UserAgreedToExecuteFromSource ( )
94
77
{
95
78
// TODO: Use a better way to ask for user input
96
- Console . WriteLine ( "Tool will be run from source. Accept? [yn]" ) ;
97
- return Console . ReadKey ( ) . Key == ConsoleKey . Y ;
79
+ Console . Write ( "Tool will be run from source. Accept? [y]" . Red ( ) ) ;
80
+ bool userAccepted = Console . ReadKey ( ) . Key == ConsoleKey . Y ;
81
+ Console . WriteLine ( ) ;
82
+ return userAccepted ;
98
83
}
99
84
}
100
85
}
0 commit comments