88using Microsoft . DotNet . Cli . ToolManifest ;
99using Microsoft . DotNet . Cli . ToolPackage ;
1010using Microsoft . DotNet . Cli . Utils ;
11+ using Microsoft . DotNet . Cli . Utils . Extensions ;
1112using Microsoft . Extensions . EnvironmentAbstractions ;
1213using NuGet . Frameworks ;
1314using NuGet . Packaging ;
@@ -35,13 +36,18 @@ public override int Execute()
3536 return 1 ;
3637 }
3738
39+ if ( _allowRollForward )
40+ {
41+ _forwardArguments . Append ( "--allow-roll-forward" ) ;
42+ }
43+
3844 PackageId packageId = new ( _toolCommandName ) ;
3945 VersionRange versionRange = _parseResult . GetVersionRange ( ) ;
4046
4147 string tempDirectory = PathUtilities . CreateTempSubdirectory ( ) ;
4248
43- IToolManifestFinder toolManifestFinder = new ToolManifestFinder ( new ( tempDirectory ) ) ;
44- IToolManifestEditor toolManifestEditor = new ToolManifestEditor ( ) ;
49+ ToolManifestFinder toolManifestFinder = new ToolManifestFinder ( new ( tempDirectory ) ) ;
50+ ToolManifestEditor toolManifestEditor = new ToolManifestEditor ( ) ;
4551 FilePath toolManifestPath = toolManifestFinder . FindFirst ( true ) ;
4652
4753 ToolPackageStoreAndQuery toolPackageStoreAndQuery = new ( new ( tempDirectory ) ) ;
@@ -56,45 +62,24 @@ public override int Execute()
5662 packageId : packageId ,
5763 verbosity : _verbosity ,
5864 versionRange : versionRange ,
65+ isGlobalToolRollForward : _allowRollForward , // Needed to update .runtimeconfig.json
5966 restoreActionConfig : new (
6067 IgnoreFailedSources : _ignoreFailedSources ,
6168 Interactive : _interactive ) ) ;
6269
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 ) ;
8871 var command = CommandFactoryUsingResolver . Create ( commandSpec ) ;
8972 var result = command . Execute ( ) ;
90-
9173 return result . ExitCode ;
9274 }
75+
9376 private bool UserAgreedToExecuteFromSource ( )
9477 {
9578 // 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 ;
9883 }
9984 }
10085}
0 commit comments