Browse Source

Run Invoke-InitializePackages cmdlet instead of directly running package initialization scripts when a solution is opened.

pull/15/head
Matt Ward 15 years ago
parent
commit
ecf9561079
  1. 2
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InvokeInitializePackagesCmdlet.cs
  2. 1
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  3. 12
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsFactory.cs
  4. 24
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsRunnerForOpenedSolution.cs
  5. 47
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PowerShellPackageScriptSession.cs
  6. 29
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsRunnerForOpenedSolutionTests.cs

2
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InvokeInitializePackagesCmdlet.cs

@ -17,7 +17,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
public InvokeInitializePackagesCmdlet() public InvokeInitializePackagesCmdlet()
: this( : this(
PackageManagementServices.ProjectService, PackageManagementServices.ProjectService,
new PackageInitializationScriptsFactory(PackageManagementServices.ConsoleHost), new PackageInitializationScriptsFactory(),
PackageManagementServices.ConsoleHost, PackageManagementServices.ConsoleHost,
null) null)
{ {

1
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -198,7 +198,6 @@
<Compile Include="Src\Scripting\ISolutionPackageRepository.cs" /> <Compile Include="Src\Scripting\ISolutionPackageRepository.cs" />
<Compile Include="Src\Scripting\PackageInitializationScripts.cs" /> <Compile Include="Src\Scripting\PackageInitializationScripts.cs" />
<Compile Include="Src\Scripting\PackageInitializationScriptsFactory.cs" /> <Compile Include="Src\Scripting\PackageInitializationScriptsFactory.cs" />
<Compile Include="Src\Scripting\PowerShellPackageScriptSession.cs" />
<Compile Include="Src\SolutionPackageRepositoryPath.cs" /> <Compile Include="Src\SolutionPackageRepositoryPath.cs" />
<Compile Include="Src\PackageSourceConverter.cs" /> <Compile Include="Src\PackageSourceConverter.cs" />
<Compile Include="Src\PackageSourceViewModel.cs" /> <Compile Include="Src\PackageSourceViewModel.cs" />

12
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsFactory.cs

@ -8,18 +8,6 @@ namespace ICSharpCode.PackageManagement.Scripting
{ {
public class PackageInitializationScriptsFactory : IPackageInitializationScriptsFactory public class PackageInitializationScriptsFactory : IPackageInitializationScriptsFactory
{ {
IPackageManagementConsoleHost consoleHost;
public PackageInitializationScriptsFactory()
: this(PackageManagementServices.ConsoleHost)
{
}
public PackageInitializationScriptsFactory(IPackageManagementConsoleHost consoleHost)
{
this.consoleHost = consoleHost;
}
public IPackageInitializationScripts CreatePackageInitializationScripts( public IPackageInitializationScripts CreatePackageInitializationScripts(
Solution solution, Solution solution,
IPackageScriptSession scriptSession) IPackageScriptSession scriptSession)

24
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsRunnerForOpenedSolution.cs

@ -30,25 +30,31 @@ namespace ICSharpCode.PackageManagement.Scripting
void SolutionLoaded(object sender, SolutionEventArgs e) void SolutionLoaded(object sender, SolutionEventArgs e)
{ {
RunScripts(e.Solution); RunPackageInitializationScripts(e.Solution);
} }
void RunScripts(Solution solution) void RunPackageInitializationScripts(Solution solution)
{
if (SolutionHasPackageInitializationScripts(solution)) {
RunInitializePackagesCmdlet();
}
}
bool SolutionHasPackageInitializationScripts(Solution solution)
{ {
IPackageInitializationScripts scripts = CreatePackageInitializationScripts(solution); IPackageInitializationScripts scripts = CreatePackageInitializationScripts(solution);
scripts.Run(); return scripts.Any();
} }
IPackageInitializationScripts CreatePackageInitializationScripts(Solution solution) void RunInitializePackagesCmdlet()
{ {
PowerShellPackageScriptSession session = CreateScriptSession(); string command = "Invoke-InitializePackages";
return scriptsFactory.CreatePackageInitializationScripts(solution, session); consoleHost.ScriptingConsole.SendLine(command);
} }
PowerShellPackageScriptSession CreateScriptSession() IPackageInitializationScripts CreatePackageInitializationScripts(Solution solution)
{ {
IPowerShellHost powerShellHost = consoleHost.PowerShellHost; return scriptsFactory.CreatePackageInitializationScripts(solution, null);
return new PowerShellPackageScriptSession(powerShellHost, consoleHost.ScriptingConsole);
} }
} }
} }

47
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PowerShellPackageScriptSession.cs

@ -1,47 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.Scripting;
namespace ICSharpCode.PackageManagement.Scripting
{
public class PowerShellPackageScriptSession : IPackageScriptSession
{
IPowerShellHost powerShellHost;
IScriptingConsole console;
public PowerShellPackageScriptSession(
IPowerShellHost powerShellHost,
IScriptingConsole console)
{
this.powerShellHost = powerShellHost;
this.console = console;
}
public void SetEnvironmentPath(string path)
{
powerShellHost.SetEnvironmentPath(path);
}
public string GetEnvironmentPath()
{
return powerShellHost.GetEnvironmentPath();
}
public void AddVariable(string name, object value)
{
powerShellHost.AddVariable(name, value);
}
public void RemoveVariable(string name)
{
powerShellHost.RemoveVariable(name);
}
public void InvokeScript(string script)
{
console.SendLine(script);
}
}
}

29
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsRunnerForOpenedSolutionTests.cs

@ -4,6 +4,7 @@
using System; using System;
using ICSharpCode.PackageManagement.Design; using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.Scripting; using ICSharpCode.PackageManagement.Scripting;
using ICSharpCode.Scripting.Tests.Utils;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
using NUnit.Framework; using NUnit.Framework;
using PackageManagement.Tests.Helpers; using PackageManagement.Tests.Helpers;
@ -17,11 +18,14 @@ namespace PackageManagement.Tests.Scripting
FakePackageManagementProjectService fakeProjectService; FakePackageManagementProjectService fakeProjectService;
PackageInitializationScriptsRunnerForOpenedSolution runner; PackageInitializationScriptsRunnerForOpenedSolution runner;
FakePackageManagementConsoleHost fakeConsoleHost; FakePackageManagementConsoleHost fakeConsoleHost;
FakeScriptingConsole fakeScriptingConsole;
void CreateRunner() void CreateRunner()
{ {
fakeProjectService = new FakePackageManagementProjectService(); fakeProjectService = new FakePackageManagementProjectService();
fakeConsoleHost = new FakePackageManagementConsoleHost(); fakeConsoleHost = new FakePackageManagementConsoleHost();
fakeScriptingConsole = new FakeScriptingConsole();
fakeConsoleHost.ScriptingConsole = fakeScriptingConsole;
fakeScriptsFactory = new FakePackageInitializationScriptsFactory(); fakeScriptsFactory = new FakePackageInitializationScriptsFactory();
runner = new PackageInitializationScriptsRunnerForOpenedSolution(fakeProjectService, fakeConsoleHost, fakeScriptsFactory); runner = new PackageInitializationScriptsRunnerForOpenedSolution(fakeProjectService, fakeConsoleHost, fakeScriptsFactory);
} }
@ -35,36 +39,39 @@ namespace PackageManagement.Tests.Scripting
} }
[Test] [Test]
public void Instance_SolutionIsOpened_PackageInitializationScriptsAreExecuted() public void Instance_SolutionIsOpened_PackageInitializationScriptsCreatedUsingSolution()
{ {
CreateRunner(); CreateRunner();
OpenSolution(); Solution expectedSolution = OpenSolution();
bool run = fakeScriptsFactory.FakePackageInitializationScripts.IsRunCalled; Solution actualSolution = fakeScriptsFactory.SolutionPassedToCreatePackageInitializationScripts;
Assert.IsTrue(run); Assert.AreEqual(expectedSolution, actualSolution);
} }
[Test] [Test]
public void Instance_SolutionIsOpened_PackageInitializationScriptsCreatedUsingSolution() public void Instance_SolutionOpenedAndHasPackageInitializationScripts_InvokeInitializePackagesCmdletIsRun()
{ {
CreateRunner(); CreateRunner();
Solution expectedSolution = OpenSolution(); fakeScriptsFactory.FakePackageInitializationScripts.AnyReturnValue = true;
OpenSolution();
Solution actualSolution = fakeScriptsFactory.SolutionPassedToCreatePackageInitializationScripts; string command = fakeScriptingConsole.TextPassedToSendLine;
string expectedCommand = "Invoke-InitializePackages";
Assert.AreEqual(expectedSolution, actualSolution); Assert.AreEqual(expectedCommand, command);
} }
[Test] [Test]
public void Instance_SolutionIsOpened_PowerShellPackageScriptSessionIsUsedToCreatePackageInitializationScripts() public void Instance_SolutionOpenedAndHasNoPackageInitializationScripts_InvokeInitializePackagesCmdletIsNotRun()
{ {
CreateRunner(); CreateRunner();
fakeScriptsFactory.FakePackageInitializationScripts.AnyReturnValue = false;
OpenSolution(); OpenSolution();
PowerShellPackageScriptSession session = fakeScriptsFactory.ScriptSessionPassedToCreatePackageInitializationScripts as PowerShellPackageScriptSession; string command = fakeScriptingConsole.TextPassedToSendLine;
Assert.IsNotNull(session); Assert.IsNull(command);
} }
} }
} }

Loading…
Cancel
Save