Skip to content

Commit 2b2e18c

Browse files
edvilmedsplaisted
authored andcommitted
Save tool to temp directory
1 parent 1322829 commit 2b2e18c

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

src/Cli/dotnet/Commands/Tool/Run/ToolRunCommand.cs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ internal class ToolRunCommand(
2626
private readonly ToolManifestFinder _toolManifest = toolManifest ?? new ToolManifestFinder(new DirectoryPath(Directory.GetCurrentDirectory()));
2727
private readonly bool _fromSource = result.GetValue(ToolRunCommandParser.FromSourceOption);
2828

29-
private readonly ToolInstallLocalInstaller _toolInstaller = new(result);
3029
private readonly IToolManifestEditor _toolManifestEditor = new ToolManifestEditor();
3130
private readonly ILocalToolsResolverCache _localToolsResolverCache = new LocalToolsResolverCache();
3231
public override int Execute()
@@ -41,7 +40,7 @@ public override int Execute()
4140

4241
if (commandspec == null && _fromSource)
4342
{
44-
commandspec = GetRemoteCommandSpec();
43+
return ExecuteFromSource();
4544
}
4645

4746
if (commandspec == null)
@@ -53,11 +52,15 @@ public override int Execute()
5352
return result.ExitCode;
5453
}
5554

56-
public CommandSpec GetRemoteCommandSpec()
55+
public int ExecuteFromSource()
5756
{
57+
string tempDirectory = PathUtilities.CreateTempSubdirectory();
5858
FilePath manifestFile = _toolManifest.FindFirst(true);
5959
PackageId packageId = new(_toolCommandName);
6060

61+
ToolInstallLocalInstaller _toolInstaller = new(_parseResult, new ToolPackageDownloader(
62+
store: new ToolPackageStoreAndQuery(new DirectoryPath(tempDirectory))));
63+
6164
IToolPackage toolPackage = _toolInstaller.Install(manifestFile, packageId);
6265

6366
_toolManifestEditor.Add(
@@ -71,10 +74,21 @@ public CommandSpec GetRemoteCommandSpec()
7174
toolPackage,
7275
_toolInstaller.TargetFrameworkToInstall);
7376

74-
return _localToolsCommandResolver.ResolveStrict(new CommandResolverArguments()
77+
CommandSpec commandSpec = _localToolsCommandResolver.ResolveStrict(new CommandResolverArguments()
7578
{
7679
CommandName = $"dotnet-{toolPackage.Command.Name}",
7780
CommandArguments = _forwardArgument,
7881
}, _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+
92+
return result.ExitCode;
7993
}
8094
}

0 commit comments

Comments
 (0)