Skip to content

Commit

Permalink
(chocolateyGH-132) Move "LogOutput" to the configuration as "Quiet" s…
Browse files Browse the repository at this point in the history
…o it works the way others do...
  • Loading branch information
Jaykul committed Apr 5, 2015
1 parent f9ecefa commit 5742f16
Show file tree
Hide file tree
Showing 10 changed files with 86 additions and 78 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ public override void Because()
[Fact]
public void should_call_service_list_run()
{
packageService.Verify(c => c.list_run(configuration, true), Times.Once);
packageService.Verify(c => c.list_run(configuration), Times.Once);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ public override void Context()
new PackageResult(package.Object, null),
new PackageResult(pinnedPackage.Object, null)
};
nugetService.Setup(n => n.list_run(It.IsAny<ChocolateyConfiguration>(), true)).Returns(packageResults);
nugetService.Setup(n => n.list_run(It.IsAny<ChocolateyConfiguration>())).Returns(packageResults);
configuration.PinCommand.Command = PinCommandType.list;
}

Expand Down Expand Up @@ -414,7 +414,7 @@ public void should_call_nuget_service_list_run_when_command_is_list()
configuration.PinCommand.Command = PinCommandType.list;
command.run(configuration);

nugetService.Verify(n => n.list_run(It.IsAny<ChocolateyConfiguration>(), true), Times.Once);
nugetService.Verify(n => n.list_run(It.IsAny<ChocolateyConfiguration>()), Times.Once);
}

[Pending("NuGet is killing me with extension methods. Need to find proper item to mock out to return the package object.")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
namespace chocolatey.infrastructure.app.commands
{
using System.Collections.Generic;
using System.Linq;
using attributes;
using commandline;
using configuration;
Expand Down Expand Up @@ -108,12 +109,15 @@ public void noop(ChocolateyConfiguration configuration)

public void run(ChocolateyConfiguration configuration)
{
_packageService.list_run(configuration, logResults: true);
// you must leave the .ToList() here or else the method won't be evaluated!
_packageService.list_run(configuration).ToList();
}

public IEnumerable<PackageResult> list(ChocolateyConfiguration configuration)
{
return _packageService.list_run(configuration, logResults: false);
configuration.Quiet = true;
// here it's up to the caller to enumerate the results
return _packageService.list_run(configuration);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ public void run(ChocolateyConfiguration configuration)

public void list_pins(IPackageManager packageManager, ChocolateyConfiguration config)
{
foreach (var pkg in _nugetService.list_run(config, logResults: true))
foreach (var pkg in _nugetService.list_run(config))
{
var pkgInfo = _packageInfoService.get_package_information(pkg.Package);
if (pkgInfo != null && pkgInfo.IsPinned)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ public override void run(ChocolateyConfiguration configuration)
{
if (configuration.ListCommand.LocalOnly)
{
_packageService.list_run(configuration,logResults:true);
_packageService.list_run(configuration);
}
else
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,19 @@ private void append_output(StringBuilder propertyValues, string append)
public bool Force { get; set; }
public bool Noop { get; set; }
public bool HelpRequested { get; set; }
// TODO: Should just use output levels: Debug, Verbose, Info (Regular), Important, Error (Quiet)
/// <summary>
/// Gets or sets a value indicating whether output should be limited.
/// This supports the --limit-output parameter.
/// </summary>
/// <value><c>true</c> for regular output; <c>false</c> for limited output.</value>
public bool RegularOutput { get; set; }
/// <summary>
/// Gets or sets a value indicating whether console logging should be supressed.
/// This is for use by API calls which surface results in alternate forms.
/// </summary>
/// <value><c>true</c> for no output; <c>false</c> for regular or limited output.</value>
public bool Quiet { get; set; }
public bool PromptForConfirmation { get; set; }
public bool AcceptLicense { get; set; }
public bool AllowUnofficialBuild { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,15 @@ namespace chocolatey.infrastructure.app.services
using commandline;
using configuration;
using domain;
using filesystem;
using infrastructure.services;
using logging;
using NuGet;
using platforms;
using results;
using tolerance;
using IFileSystem = filesystem.IFileSystem;

public class ChocolateyPackageService : IChocolateyPackageService
public class ChocolateyPackageService : IChocolateyPackageService
{
private readonly INugetService _nugetService;
private readonly IPowershellService _powershellService;
Expand Down Expand Up @@ -64,7 +65,7 @@ public void list_noop(ChocolateyConfiguration config)
}
}

public IEnumerable<PackageResult> list_run(ChocolateyConfiguration config, bool logResults)
public IEnumerable<PackageResult> list_run(ChocolateyConfiguration config)
{
this.Log().Debug(() => "Searching for package information");

Expand All @@ -74,71 +75,63 @@ public IEnumerable<PackageResult> list_run(ChocolateyConfiguration config, bool
//install webpi if not installed
//run the webpi command
this.Log().Warn("Command not yet functional, stay tuned...");
return new PackageResult[]{};
yield break;
}
else
{
var list = _nugetService.list_run(config, logResults: logResults).ToList();
if (config.RegularOutput)
{
this.Log().Warn(() => @"{0} packages {1}.".format_with(list.Count, config.ListCommand.LocalOnly ? "installed" : "found"));
}
if (!config.ListCommand.LocalOnly && !config.ListCommand.IncludeRegistryPrograms)
var packages = new List<IPackage>();

foreach (var package in _nugetService.list_run(config))
{
return list;
}
if (!config.ListCommand.LocalOnly && !config.ListCommand.IncludeRegistryPrograms)
{
yield return package;
}

// in this case, we need to a list we can enumerate multiple times and append to
if (config.ListCommand.LocalOnly && config.ListCommand.IncludeRegistryPrograms && package.Package != null)
{
packages.Add(package.Package);
}
}

if (config.ListCommand.LocalOnly && config.ListCommand.IncludeRegistryPrograms)
{
report_registry_programs(config, list);
foreach (var installed in report_registry_programs(config, packages))
{
yield return installed;
}
}

return list;
}
}

private void report_registry_programs(ChocolateyConfiguration config, List<PackageResult> list)
private IEnumerable<PackageResult> report_registry_programs(ChocolateyConfiguration config, IEnumerable<IPackage> list)
{
var itemsToRemoveFromMachine = new List<string>();
foreach (var packageResult in list)
var itemsToRemoveFromMachine = list.Select(package => _packageInfoService.get_package_information(package)).
Where(p => p.RegistrySnapshot != null).
Select(p => p.RegistrySnapshot.RegistryKeys.FirstOrDefault()).
Where(p => p != null).
Select(p => p.DisplayName).ToList();

var count = 0;
var machineInstalled = _registryService.get_installer_keys().RegistryKeys.
Where((p) => p.is_in_programs_and_features() && !itemsToRemoveFromMachine.Contains(p.DisplayName)).
OrderBy((p) => p.DisplayName).Distinct();
this.Log().Info(() => "");
foreach (var key in machineInstalled)
{
if (packageResult != null && packageResult.Package != null)
{
var pkginfo = _packageInfoService.get_package_information(packageResult.Package);
if (pkginfo.RegistrySnapshot == null)
{
continue;
}
if (config.RegularOutput)
{
this.Log().Info("{0}|{1}".format_with(key.DisplayName, key.DisplayVersion));
if (config.Verbose) this.Log().Info(" InstallLocation: {0}{1} Uninstall:{2}".format_with(key.InstallLocation.escape_curly_braces(), Environment.NewLine, key.UninstallString.escape_curly_braces()));
}
count++;

var key = pkginfo.RegistrySnapshot.RegistryKeys.FirstOrDefault();
if (key != null)
{
itemsToRemoveFromMachine.Add(key.DisplayName);
}
}
yield return new PackageResult(key.DisplayName, key.DisplayName, key.InstallLocation);
}

var machineInstalled = _registryService.get_installer_keys().RegistryKeys.Where((p) => p.is_in_programs_and_features() && !itemsToRemoveFromMachine.Contains(p.DisplayName)).OrderBy((p) => p.DisplayName).Distinct().ToList();
if (machineInstalled.Count != 0)
if (config.RegularOutput)
{
this.Log().Info(() => "");
foreach (var key in machineInstalled)
{
if (config.RegularOutput)
{
this.Log().Info("{0}|{1}".format_with(key.DisplayName, key.DisplayVersion));
if (config.Verbose) this.Log().Info(" InstallLocation: {0}{1} Uninstall:{2}".format_with(key.InstallLocation.escape_curly_braces(), Environment.NewLine, key.UninstallString.escape_curly_braces()));
}

list.Add( new PackageResult(key.DisplayName, key.DisplayName, key.InstallLocation) );
}

if (config.RegularOutput)
{
this.Log().Warn(() => @"{0} applications not managed with Chocolatey.".format_with(machineInstalled.Count));
}
this.Log().Warn(() => @"{0} applications not managed with Chocolatey.".format_with(count));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,8 @@ public interface IChocolateyPackageService
/// Lists/searches for packages that meet a search criteria
/// </summary>
/// <param name="config">The configuration.</param>
/// <param name="logResults">Should results be logged?</param>
/// <returns></returns>
IEnumerable<PackageResult> list_run(ChocolateyConfiguration config, bool logResults);
IEnumerable<PackageResult> list_run(ChocolateyConfiguration config);

/// <summary>
/// Run pack in noop mode
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public interface INugetService
/// <param name="config">The configuration.</param>
/// <param name="logResults">Should results be logged?</param>
/// <returns></returns>
IEnumerable<PackageResult> list_run(ChocolateyConfiguration config, bool logResults);
IEnumerable<PackageResult> list_run(ChocolateyConfiguration config);

/// <summary>
/// Run pack in noop mode.
Expand Down
36 changes: 18 additions & 18 deletions src/chocolatey/infrastructure.app/services/NugetService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,30 +71,29 @@ public void list_noop(ChocolateyConfiguration config)
));
}

public IEnumerable<PackageResult> list_run(ChocolateyConfiguration config, bool logResults)
public IEnumerable<PackageResult> list_run(ChocolateyConfiguration config)
{
foreach (var package in NugetList.GetPackages(config, _nugetLogger))
int count = 0;
foreach (var pkg in NugetList.GetPackages(config, _nugetLogger))

This comment has been minimized.

Copy link
@Jaykul

Jaykul Apr 8, 2015

Author Owner

Hey, see -- I told you I switched the package/pkg

{
var pkg = package; // for lamda access
if (logResults)
var package = pkg; // for lamda access
if (!config.Quiet)
{
if (config.RegularOutput)
{
this.Log().Info(config.Verbose ? ChocolateyLoggers.Important : ChocolateyLoggers.Normal, () => "{0} {1}".format_with(pkg.Id, pkg.Version.to_string()));
if (config.Verbose) this.Log().Info(() => " {0}{1} Description: {2}{1} Tags: {3}{1} Number of Downloads: {4}{1}".format_with(pkg.Title.escape_curly_braces(), Environment.NewLine, pkg.Description.escape_curly_braces(), pkg.Tags.escape_curly_braces(), pkg.DownloadCount <= 0 ? "n/a" : pkg.DownloadCount.to_string()));
// Maintainer(s):{3}{1} | pkg.Owners.join(", ") - null at the moment
}
else
{
this.Log().Info(config.Verbose ? ChocolateyLoggers.Important : ChocolateyLoggers.Normal, () => "{0}|{1}".format_with(pkg.Id, pkg.Version.to_string()));
}
this.Log().Info(config.Verbose ? ChocolateyLoggers.Important : ChocolateyLoggers.Normal, () => "{0} {1}".format_with(package.Id, package.Version.to_string()));
if (config.RegularOutput && config.Verbose) this.Log().Info(() => " {0}{1} Description: {2}{1} Tags: {3}{1} Number of Downloads: {4}{1}".format_with(package.Title.escape_curly_braces(), Environment.NewLine, package.Description.escape_curly_braces(), package.Tags.escape_curly_braces(), package.DownloadCount <= 0 ? "n/a" : package.DownloadCount.to_string()));

This comment has been minimized.

Copy link
@ferventcoder

ferventcoder Apr 8, 2015

This looks like it needs some line breaks. Thoughts?

This comment has been minimized.

Copy link
@Jaykul

Jaykul Apr 8, 2015

Author Owner

Totally agree, but it's only like 30 characters longer than it was before ;-p

This comment has been minimized.

Copy link
@ferventcoder

ferventcoder Apr 8, 2015

Right?! :)

This comment has been minimized.

Copy link
@Jaykul

Jaykul Apr 8, 2015

Author Owner

Fixed it in a new commit, because I'm a nice guy 07bea8b
It'll show up in the last pull request :-P

}
else
{
this.Log().Debug(() => "{0} {1}".format_with(pkg.Id, pkg.Version.to_string()));
this.Log().Debug(() => "{0} {1}".format_with(package.Id, package.Version.to_string()));
}
count++;

yield return new PackageResult(pkg, null, config.Sources);
yield return new PackageResult(package, null, config.Sources);
}

if (config.RegularOutput)
{
this.Log().Warn(() => @"{0} packages {1}.".format_with(count, config.ListCommand.LocalOnly ? "installed" : "found"));
}
}

Expand Down Expand Up @@ -890,8 +889,9 @@ private void set_package_names_if_all_is_specified(ChocolateyConfiguration confi
config.PackageNames = string.Empty;
var input = config.Input;
config.Input = string.Empty;

config.PackageNames = list_run(config, false).Select(p => p.Name).@join(ApplicationParameters.PackageNamesSeparator);
config.Quiet = true;

config.PackageNames = list_run(config).Select(p => p.Name).@join(ApplicationParameters.PackageNamesSeparator);
config.Input = input;
config.Noop = noop;
config.Prerelease = pre;
Expand Down

0 comments on commit 5742f16

Please sign in to comment.