Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/boot with the best of them #342

Merged
merged 5 commits into from
Mar 4, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 94 additions & 6 deletions src/Functions/RocketBooster.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,31 +26,119 @@ public static class RocketBooster
/// Fors the application domain.
/// </summary>
/// <param name="appDomain">The application domain.</param>
/// <param name="getConventions"></param>
/// <returns>Func&lt;IHostBuilder, ConventionContextBuilder&gt;.</returns>
public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> ForAppDomain(AppDomain appDomain)
=> builder => new ConventionContextBuilder(new Dictionary<object, object?>()).UseAppDomain(appDomain);
public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> ForAppDomain(
AppDomain appDomain,
Func<IServiceProvider, IEnumerable<IConventionWithDependencies>> getConventions
) => builder => new ConventionContextBuilder(new Dictionary<object, object?>())
.UseAppDomain(appDomain)
.WithConventionsFrom(getConventions);

/// <summary>
/// Fors the application domain.
/// </summary>
/// <param name="appDomain">The application domain.</param>
/// <param name="conventionContextBuilderAction"></param>
/// <returns>Func&lt;IHostBuilder, ConventionContextBuilder&gt;.</returns>
public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> ForAppDomain(
AppDomain appDomain,
Action<ConventionContextBuilder>? conventionContextBuilderAction = null
) => builder =>
{
var conventionContextBuilder = new ConventionContextBuilder(new Dictionary<object, object?>())
.UseAppDomain(appDomain);
conventionContextBuilderAction?.Invoke(conventionContextBuilder);
return conventionContextBuilder;
};

/// <summary>
/// Fors the specified application domain.
/// </summary>
/// <param name="appDomain">The application domain.</param>
/// <param name="getConventions"></param>
/// <returns>Func&lt;IHostBuilder, ConventionContextBuilder&gt;.</returns>
public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> For(AppDomain appDomain) => ForAppDomain(appDomain);
public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> For(
AppDomain appDomain,
Func<IServiceProvider, IEnumerable<IConventionWithDependencies>> getConventions
) => ForAppDomain(appDomain, getConventions);

/// <summary>
/// Fors the specified application domain.
/// </summary>
/// <param name="appDomain">The application domain.</param>
/// <param name="conventionContextBuilderAction"></param>
/// <returns>Func&lt;IHostBuilder, ConventionContextBuilder&gt;.</returns>
public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> For(
AppDomain appDomain,
Action<ConventionContextBuilder>? conventionContextBuilderAction = null
) => ForAppDomain(appDomain, conventionContextBuilderAction);

/// <summary>
/// Fors the assemblies.
/// </summary>
/// <param name="assemblies">The assemblies.</param>
/// <param name="getConventions"></param>
/// <returns>Func&lt;IHostBuilder, ConventionContextBuilder&gt;.</returns>
public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> ForAssemblies(
IEnumerable<Assembly> assemblies,
Func<IServiceProvider, IEnumerable<IConventionWithDependencies>> getConventions
) => builder => new ConventionContextBuilder(new Dictionary<object, object?>())
.UseAssemblies(assemblies)
.WithConventionsFrom(getConventions);

/// <summary>
/// Fors the assemblies.
/// </summary>
/// <param name="assemblies">The assemblies.</param>
/// <param name="conventionContextBuilderAction"></param>
/// <returns>Func&lt;IHostBuilder, ConventionContextBuilder&gt;.</returns>
public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> ForAssemblies(IEnumerable<Assembly> assemblies)
=> builder => new ConventionContextBuilder(new Dictionary<object, object?>()).UseAssemblies(assemblies);
public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> ForAssemblies(
IEnumerable<Assembly> assemblies,
Action<ConventionContextBuilder>? conventionContextBuilderAction = null
) => builder =>
{
var conventionContextBuilder = new ConventionContextBuilder(new Dictionary<object, object?>()).UseAssemblies(assemblies);
conventionContextBuilderAction?.Invoke(conventionContextBuilder);
return conventionContextBuilder;
};

/// <summary>
/// Fors the specified assemblies.
/// </summary>
/// <param name="assemblies">The assemblies.</param>
/// <param name="getConventions"></param>
/// <returns>Func&lt;IHostBuilder, ConventionContextBuilder&gt;.</returns>
public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> For(IEnumerable<Assembly> assemblies) => ForAssemblies(assemblies);
public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> For(
IEnumerable<Assembly> assemblies,
Func<IServiceProvider, IEnumerable<IConventionWithDependencies>> getConventions
) => ForAssemblies(assemblies, getConventions);

/// <summary>
/// Fors the specified assemblies.
/// </summary>
/// <param name="assemblies">The assemblies.</param>
/// <param name="conventionContextBuilderAction"></param>
/// <returns>Func&lt;IHostBuilder, ConventionContextBuilder&gt;.</returns>
public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> For(
IEnumerable<Assembly> assemblies,
Action<ConventionContextBuilder>? conventionContextBuilderAction = null
) => ForAssemblies(assemblies, conventionContextBuilderAction);

// /// <summary>
// /// Use the given dependency context for resolving assemblies
// /// </summary>
// /// <param name="dependencyContext"></param>
// /// <returns></returns>
// public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> ForDependencyContext(DependencyContext dependencyContext)
// => builder => new ConventionContextBuilder(new Dictionary<object, object?>()).UseDependencyContext(dependencyContext);
//
// /// <summary>
// /// Use the given dependency context for resolving assemblies
// /// </summary>
// /// <param name="dependencyContext"></param>
// /// <returns></returns>
// public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> For(DependencyContext dependencyContext) => ForDependencyContext(dependencyContext);

// /// <summary>
// /// Use the given dependency context for resolving assemblies
Expand Down