#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

68 lines
1.7 KiB

// 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 System.Collections.Generic;
using NuGet;
namespace ICSharpCode.PackageManagement.Scripting
{
public class PackageInitializationScripts : IPackageInitializationScripts
{
ISolutionPackageRepository solutionPackageRepository;
IPackageScriptFactory scriptFactory;
List<IPackageScript> scripts;
public PackageInitializationScripts(
ISolutionPackageRepository solutionPackageRepository,
IPackageScriptFactory scriptFactory)
{
this.solutionPackageRepository = solutionPackageRepository;
this.scriptFactory = scriptFactory;
}
public void Run(IPackageScriptSession session)
{
foreach (IPackageScript script in GetScripts()) {
script.Run(session);
}
}
List<IPackageScript> GetScripts()
{
if (scripts == null) {
CreatePackageInitializationScripts();
}
return scripts;
}
void CreatePackageInitializationScripts()
{
scripts = new List<IPackageScript>();
foreach (IPackage package in GetPackages()) {
IPackageScript script = CreateInitializeScript(package);
if (script.Exists()) {
scripts.Add(script);
}
}
}
IEnumerable<IPackage> GetPackages()
{
return solutionPackageRepository.GetPackagesByDependencyOrder();
}
IPackageScript CreateInitializeScript(IPackage package)
{
string packageInstallDirectory = solutionPackageRepository.GetInstallPath(package);
return scriptFactory.CreatePackageInitializeScript(packageInstallDirectory);
}
public bool Any()
{
List<IPackageScript> scripts = GetScripts();
return scripts.Count > 0;
}
}
}