Skip to content
Merged
Show file tree
Hide file tree
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
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using CodeCasa.AutomationPipelines.Lights.Pipeline;
using CodeCasa.Lights.NetDaemon;
using CodeCasa.Lights.NetDaemon.Extensions;
using NetDaemon.HassModel.Entities;

Expand All @@ -17,7 +18,7 @@ public static class LightPipelineFactoryExtensions
/// <param name="pipelineBuilder">An action to configure the pipeline behavior.</param>
/// <returns>An async disposable representing the created pipeline(s) that can be disposed to clean up resources.</returns>
public static IAsyncDisposable SetupLightPipeline(this LightPipelineFactory lightPipelineFactory, ILightEntityCore lightEntity,
Action<ILightTransitionPipelineConfigurator> pipelineBuilder)
Action<ILightTransitionPipelineConfigurator<NetDaemonLight>> pipelineBuilder)
{
return lightPipelineFactory.SetupLightPipeline(lightEntity.AsLight(), pipelineBuilder);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using CodeCasa.AutomationPipelines.Lights.Cycle;
using CodeCasa.Lights.NetDaemon;
using CodeCasa.Lights.NetDaemon.Extensions;
using NetDaemon.HassModel.Entities;

Expand All @@ -17,8 +18,8 @@ public static class LightTransitionCycleConfiguratorExtensions
/// <param name="configure">An action to configure the cycle for this specific light.</param>
/// <param name="excludedLightBehaviour">Specifies the behavior for lights not included in this scoped configuration. Defaults to <see cref="ExcludedLightBehaviours.None"/>.</param>
/// <returns>The configurator instance for method chaining.</returns>
public static ILightTransitionCycleConfigurator ForLight(this ILightTransitionCycleConfigurator configurator,
ILightEntityCore lightEntity, Action<ILightTransitionCycleConfigurator> configure,
public static ILightTransitionCycleConfigurator<NetDaemonLight> ForLight(this ILightTransitionCycleConfigurator<NetDaemonLight> configurator,
ILightEntityCore lightEntity, Action<ILightTransitionCycleConfigurator<NetDaemonLight>> configure,
ExcludedLightBehaviours excludedLightBehaviour = ExcludedLightBehaviours.None)
{
return configurator.ForLight(lightEntity.AsLight(), configure, excludedLightBehaviour);
Expand All @@ -32,8 +33,8 @@ public static ILightTransitionCycleConfigurator ForLight(this ILightTransitionCy
/// <param name="configure">An action to configure the cycle for these lights.</param>
/// <param name="excludedLightBehaviour">Specifies the behavior for lights not included in this scoped configuration. Defaults to <see cref="ExcludedLightBehaviours.None"/>.</param>
/// <returns>The configurator instance for method chaining.</returns>
public static ILightTransitionCycleConfigurator ForLights(this ILightTransitionCycleConfigurator configurator,
IEnumerable<ILightEntityCore> lightEntities, Action<ILightTransitionCycleConfigurator> configure,
public static ILightTransitionCycleConfigurator<NetDaemonLight> ForLights(this ILightTransitionCycleConfigurator<NetDaemonLight> configurator,
IEnumerable<ILightEntityCore> lightEntities, Action<ILightTransitionCycleConfigurator<NetDaemonLight>> configure,
ExcludedLightBehaviours excludedLightBehaviour = ExcludedLightBehaviours.None)
{
return configurator.ForLights(lightEntities.Select(l => l.AsLight()), configure, excludedLightBehaviour);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using CodeCasa.AutomationPipelines.Lights.Pipeline;
using CodeCasa.Lights.NetDaemon;
using CodeCasa.Lights.NetDaemon.Extensions;
using NetDaemon.HassModel.Entities;

Expand All @@ -16,8 +17,8 @@ public static class LightTransitionPipelineConfiguratorExtensions
/// <param name="lightEntity">The NetDaemon light entity to configure.</param>
/// <param name="compositeNodeBuilder">An action to configure the pipeline for this specific light.</param>
/// <returns>The configurator instance for method chaining.</returns>
public static ILightTransitionPipelineConfigurator ForLight(this ILightTransitionPipelineConfigurator configurator,
ILightEntityCore lightEntity, Action<ILightTransitionPipelineConfigurator> compositeNodeBuilder)
public static ILightTransitionPipelineConfigurator<NetDaemonLight> ForLight(this ILightTransitionPipelineConfigurator<NetDaemonLight> configurator,
ILightEntityCore lightEntity, Action<ILightTransitionPipelineConfigurator<NetDaemonLight>> compositeNodeBuilder)
{
return configurator.ForLight(lightEntity.AsLight(), compositeNodeBuilder);
}
Expand All @@ -29,8 +30,8 @@ public static ILightTransitionPipelineConfigurator ForLight(this ILightTransitio
/// <param name="lightEntities">The NetDaemon light entities to configure.</param>
/// <param name="compositeNodeBuilder">An action to configure the pipeline for these lights.</param>
/// <returns>The configurator instance for method chaining.</returns>
public static ILightTransitionPipelineConfigurator ForLights(this ILightTransitionPipelineConfigurator configurator,
IEnumerable<ILightEntityCore> lightEntities, Action<ILightTransitionPipelineConfigurator> compositeNodeBuilder)
public static ILightTransitionPipelineConfigurator<NetDaemonLight> ForLights(this ILightTransitionPipelineConfigurator<NetDaemonLight> configurator,
IEnumerable<ILightEntityCore> lightEntities, Action<ILightTransitionPipelineConfigurator<NetDaemonLight>> compositeNodeBuilder)
{
return configurator.ForLights(lightEntities.Select(l => l.AsLight()), compositeNodeBuilder);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using CodeCasa.AutomationPipelines.Lights.ReactiveNode;
using CodeCasa.Lights.NetDaemon;
using CodeCasa.Lights.NetDaemon.Extensions;
using NetDaemon.HassModel.Entities;

Expand All @@ -16,9 +17,9 @@ public static class LightTransitionReactiveNodeConfiguratorExtensions
/// <param name="lightEntity">The NetDaemon light entity to configure.</param>
/// <param name="configure">An action to configure the reactive node for this specific light.</param>
/// <returns>The configurator instance for method chaining.</returns>
public static ILightTransitionReactiveNodeConfigurator ForLight(
this ILightTransitionReactiveNodeConfigurator configurator,
ILightEntityCore lightEntity, Action<ILightTransitionReactiveNodeConfigurator> configure)
public static ILightTransitionReactiveNodeConfigurator<NetDaemonLight> ForLight(
this ILightTransitionReactiveNodeConfigurator<NetDaemonLight> configurator,
ILightEntityCore lightEntity, Action<ILightTransitionReactiveNodeConfigurator<NetDaemonLight>> configure)
{
return configurator.ForLight(lightEntity.AsLight(), configure);
}
Expand All @@ -30,9 +31,9 @@ public static ILightTransitionReactiveNodeConfigurator ForLight(
/// <param name="lightEntities">The NetDaemon light entities to configure.</param>
/// <param name="configure">An action to configure the reactive node for these lights.</param>
/// <returns>The configurator instance for method chaining.</returns>
public static ILightTransitionReactiveNodeConfigurator ForLights(
this ILightTransitionReactiveNodeConfigurator configurator,
IEnumerable<ILightEntityCore> lightEntities, Action<ILightTransitionReactiveNodeConfigurator> configure)
public static ILightTransitionReactiveNodeConfigurator<NetDaemonLight> ForLights(
this ILightTransitionReactiveNodeConfigurator<NetDaemonLight> configurator,
IEnumerable<ILightEntityCore> lightEntities, Action<ILightTransitionReactiveNodeConfigurator<NetDaemonLight>> configure)
{
return configurator.ForLights(lightEntities.Select(l => l.AsLight()), configure);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using CodeCasa.AutomationPipelines.Lights.Toggle;
using CodeCasa.Lights.NetDaemon;
using CodeCasa.Lights.NetDaemon.Extensions;
using NetDaemon.HassModel.Entities;

Expand All @@ -17,8 +18,8 @@ public static class LightTransitionToggleConfiguratorExtensions
/// <param name="configure">An action to configure the toggle for this specific light.</param>
/// <param name="excludedLightBehaviour">Specifies the behavior for lights not included in this scoped configuration. Defaults to <see cref="ExcludedLightBehaviours.None"/>.</param>
/// <returns>The configurator instance for method chaining.</returns>
public static ILightTransitionToggleConfigurator ForLight(this ILightTransitionToggleConfigurator configurator,
ILightEntityCore lightEntity, Action<ILightTransitionToggleConfigurator> configure,
public static ILightTransitionToggleConfigurator<NetDaemonLight> ForLight(this ILightTransitionToggleConfigurator<NetDaemonLight> configurator,
ILightEntityCore lightEntity, Action<ILightTransitionToggleConfigurator<NetDaemonLight>> configure,
ExcludedLightBehaviours excludedLightBehaviour = ExcludedLightBehaviours.None)
{
return configurator.ForLight(lightEntity.AsLight(), configure, excludedLightBehaviour);
Expand All @@ -32,8 +33,8 @@ public static ILightTransitionToggleConfigurator ForLight(this ILightTransitionT
/// <param name="configure">An action to configure the toggle for these lights.</param>
/// <param name="excludedLightBehaviour">Specifies the behavior for lights not included in this scoped configuration. Defaults to <see cref="ExcludedLightBehaviours.None"/>.</param>
/// <returns>The configurator instance for method chaining.</returns>
public static ILightTransitionToggleConfigurator ForLights(this ILightTransitionToggleConfigurator configurator,
IEnumerable<ILightEntityCore> lightEntities, Action<ILightTransitionToggleConfigurator> configure,
public static ILightTransitionToggleConfigurator<NetDaemonLight> ForLights(this ILightTransitionToggleConfigurator<NetDaemonLight> configurator,
IEnumerable<ILightEntityCore> lightEntities, Action<ILightTransitionToggleConfigurator<NetDaemonLight>> configure,
ExcludedLightBehaviours excludedLightBehaviour = ExcludedLightBehaviours.None)
{
return configurator.ForLights(lightEntities.Select(l => l.AsLight()), configure, excludedLightBehaviour);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@
</None>
</ItemGroup>

<ItemGroup>
<PackageReference Include="DependencyInjection.Composite" Version="1.0.1" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\CodeCasa.Abstractions\CodeCasa.Abstractions.csproj" />
<ProjectReference Include="..\CodeCasa.AutomationPipelines\CodeCasa.AutomationPipelines.csproj" />
Expand Down
4 changes: 2 additions & 2 deletions src/CodeCasa.AutomationPipelines.Lights/CompositeHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,13 @@ public static void ValidateLightSupported(IEnumerable<string> lights, string sup
}
}

public static string[] ResolveGroupsAndValidateLightsSupported(IEnumerable<ILight> lights, IEnumerable<string> supportedLightIds)
public static string[] ResolveGroupsAndValidateLightsSupported<TLight>(IEnumerable<TLight> lights, IEnumerable<string> supportedLightIds) where TLight : ILight
{
return ValidateLightsSupported(lights.SelectMany(le => le.Flatten()).Select(l => l.Id).Distinct(), supportedLightIds);
}


public static void ResolveGroupsAndValidateLightSupported(IEnumerable<ILight> lights, string supportedLightId)
public static void ResolveGroupsAndValidateLightSupported<TLight>(IEnumerable<TLight> lights, string supportedLightId) where TLight : ILight
{
ValidateLightSupported(lights.SelectMany(le => le.Flatten()).Select(l => l.Id).Distinct(), supportedLightId);
}
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Loading