public bool Execute()
{
// package id
string packageId = this.Arguments.ContainsKey(ArgumentNameNugetPackageId) ? this.Arguments[ArgumentNameNugetPackageId] : string.Empty;
// retrieve packages
IList<NuDeployPackageInfo> packages = string.IsNullOrWhiteSpace(packageId)
? this.installationStatusProvider.GetPackageInfo().ToList()
: this.installationStatusProvider.GetPackageInfo(packageId).ToList();
// abort if no packages are returned
if (packages.Count == 0)
{
this.userInterface.WriteLine(
string.IsNullOrWhiteSpace(packageId)
? Resources.InstallationStatusCommand.NoPackagesInstalledMessage
: string.Format(Resources.InstallationStatusCommand.NoInstancesOfPackageInstalledMessageTemplate, packageId));
return true;
}
// display package installation status
var dataToDisplay = new Dictionary<string, string>
{
{ Resources.InstallationStatusCommand.InstallationStatusTableHeadlineColumn1, Resources.InstallationStatusCommand.InstallationStatusTableHeadlineColumn2 },
{ new string('-', Resources.InstallationStatusCommand.InstallationStatusTableHeadlineColumn1.Length + 3), new string('-', Resources.InstallationStatusCommand.InstallationStatusTableHeadlineColumn2.Length + 3) },
{ string.Empty, string.Empty },
};
foreach (NuDeployPackageInfo package in packages)
{
string key = string.Format(Resources.InstallationStatusCommand.InstallationStatusTableKeyColumnTemplate, package.Id, package.Version);
string value = package.IsInstalled
? Resources.InstallationStatusCommand.PackageIsInstalled
: Resources.InstallationStatusCommand.PackageIsNotInstalled;
dataToDisplay.Add(key, value);
}
this.userInterface.ShowKeyValueStore(dataToDisplay, 4);
return true;
}