Skip to content

Commit

Permalink
added documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
paulomorgado authored and phatboyg committed Feb 5, 2018
1 parent 09f44cf commit 33cb1ec
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 4 deletions.
41 changes: 38 additions & 3 deletions src/Topshelf.Extensions.Configuration/ConfigurationExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,24 +19,46 @@ namespace Topshelf.Configuration
using Topshelf.HostConfigurators;
using Topshelf.Options;

/// <summary>
/// Provides Topshelf extensions for Microsoft extensions for configuration.
/// </summary>
public static class ConfigurationExtensions
{
/// <summary>
/// Applies the configuration.
/// </summary>
/// <param name="configurator">The host configurator.</param>
/// <param name="configuration">The configuration.</param>
public static void ApplyConfiguration(this HostConfigurator configurator, IConfiguration configuration)
=> configurator.ApplyConfiguration(configuration.GetSection("Topshelf"));
=> configurator.ApplyConfiguration(configuration.GetTopshelfSection());

/// <summary>
/// Applies the configuration.
/// </summary>
/// <param name="configurator">The host configurator.</param>
/// <param name="configuration">The configuration section.</param>
public static void ApplyConfiguration(this HostConfigurator configurator, IConfigurationSection configuration)
{
var options = configuration.Parse();

configurator.ApplyOptions(options);
}

/// <summary>
/// Parses the specified configuration.
/// </summary>
/// <param name="configuration">The configuration.</param>
/// <returns>A list of configuration options.</returns>
public static IEnumerable<Option> Parse(this IConfiguration configuration)
=> configuration.GetSection("Topshelf").Parse();
=> configuration.GetTopshelfSection().Parse();

/// <summary>
/// Parses the specified configuration.
/// </summary>
/// <param name="configuration">The configuration section.</param>
/// <returns>A list of configuration options.</returns>
public static IEnumerable<Option> Parse(this IConfigurationSection configuration)
{

var options = new List<Option>();

foreach (var entry in configuration.AsEnumerable(true))
Expand Down Expand Up @@ -141,12 +163,25 @@ public static IEnumerable<Option> Parse(this IConfigurationSection configuration
return options;
}

/// <summary>
/// Applies the configuration options.
/// </summary>
/// <param name="configurator">The host configurator.</param>
/// <param name="options">The configuration options.</param>
public static void ApplyOptions(this HostConfigurator configurator, IEnumerable<Option> options)
{
foreach (var option in options)
{
option.ApplyTo(configurator);
}
}

/// <summary>
/// Gets the default Topshelf configuration section.
/// </summary>
/// <param name="configuration">The configuration.</param>
/// <returns>The default Topshelf configuration section.</returns>
public static IConfigurationSection GetTopshelfSection(this IConfiguration configuration)
=> configuration.GetSection("Topshelf");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,31 @@ namespace Topshelf.Options
{
using Topshelf.HostConfigurators;

/// <summary>
/// Represents a option to set a service dependency.
/// </summary>
/// <seealso cref="Option" />
internal class DependencyOption
: Option
{
private string dependencyName;
/// <summary>
/// The dependency name
/// </summary>
private readonly string dependencyName;

/// <summary>
/// Initializes a new instance of the <see cref="DependencyOption"/> class.
/// </summary>
/// <param name="dependencyName">Name of the dependency.</param>
public DependencyOption(string dependencyName)
{
this.dependencyName = dependencyName;
}

/// <summary>
/// Applies the option to the specified host configurator.
/// </summary>
/// <param name="configurator">The host configurator.</param>
public void ApplyTo(HostConfigurator configurator)
{
configurator.AddDependency(this.dependencyName);
Expand Down

0 comments on commit 33cb1ec

Please sign in to comment.