11// Copyright (c) SharpCrafters s.r.o. See the LICENSE.md file in the root directory of this repository root for details.
22
3+ using Amazon . Runtime . Documents ;
34using JetBrains . Annotations ;
45using PostSharp . Engineering . BuildTools . Build ;
56using PostSharp . Engineering . BuildTools . Build . Model ;
67using PostSharp . Engineering . BuildTools . ContinuousIntegration ;
78using PostSharp . Engineering . BuildTools . ContinuousIntegration . Model ;
89using PostSharp . Engineering . BuildTools . ContinuousIntegration . Model . BuildSteps ;
910using PostSharp . Engineering . BuildTools . Dependencies . Model ;
11+ using PostSharp . Engineering . BuildTools . Search . Backends ;
1012using PostSharp . Engineering . BuildTools . Search . Crawlers ;
13+ using PostSharp . Engineering . BuildTools . Search . Updaters ;
1114using Spectre . Console . Cli ;
1215using System ;
1316using System . Collections . Generic ;
@@ -18,14 +21,14 @@ namespace PostSharp.Engineering.BuildTools.Search;
1821[ PublicAPI ]
1922public class UpdateSearchProductExtension : ProductExtension
2023{
24+ private readonly Func < SearchBackendBase , CollectionUpdater > _createUpdater ;
25+
2126 public string TypesenseUri { get ; }
2227
2328 public string Source { get ; }
2429
2530 public string SourceUrl { get ; }
2631
27- public DocumentParserFactory DocumentParserFactory { get ; }
28-
2932 public BuildConfiguration [ ] BuildConfigurations { get ; }
3033
3134 public TimeSpan TimeOutThreshold { get ; }
@@ -34,8 +37,6 @@ public class UpdateSearchProductExtension : ProductExtension
3437
3538 public ConfigurationSpecific < IBuildTrigger [ ] ? > ? BuildTriggers { get ; }
3639
37- public ImmutableArray < string > Products { get ; }
38-
3940 public UpdateSearchProductExtension (
4041 string typesenseUri ,
4142 string source ,
@@ -45,18 +46,41 @@ public UpdateSearchProductExtension(
4546 BuildConfiguration [ ] ? buildConfigurations = null ,
4647 TimeSpan ? timeOutThreshold = null ,
4748 string ? customBuildConfigurationName = null ,
49+ ConfigurationSpecific < IBuildTrigger [ ] ? > ? buildTriggers = null ) : this (
50+ typesenseUri ,
51+ source ,
52+ sourceUrl ,
53+ searchBackend => new DocumentationUpdater ( products , new DocumentParserFactory ( createParser ) , searchBackend ) ,
54+ buildConfigurations ,
55+ timeOutThreshold ,
56+ customBuildConfigurationName ,
57+ buildTriggers ) { }
58+
59+ public UpdateSearchProductExtension (
60+ string typesenseUri ,
61+ string source ,
62+ string sourceUrl ,
63+ Func < SearchBackendBase , CollectionUpdater > createUpdater ,
64+ BuildConfiguration [ ] ? buildConfigurations = null ,
65+ TimeSpan ? timeOutThreshold = null ,
66+ string ? customBuildConfigurationName = null ,
4867 ConfigurationSpecific < IBuildTrigger [ ] ? > ? buildTriggers = null )
4968 {
69+ this . _createUpdater = createUpdater ;
5070 this . TypesenseUri = typesenseUri ;
5171 this . Source = source ;
5272 this . SourceUrl = sourceUrl ;
53- this . DocumentParserFactory = new DocumentParserFactory ( createParser ) ;
54- this . Products = products ;
5573 this . BuildConfigurations = buildConfigurations ?? [ BuildConfiguration . Public ] ;
5674 this . TimeOutThreshold = timeOutThreshold ?? TimeSpan . FromMinutes ( 5 ) ;
5775 this . CustomBuildConfigurationName = customBuildConfigurationName ;
5876 this . BuildTriggers = buildTriggers ;
5977 }
78+
79+
80+ internal CollectionUpdater CreateUpdater ( SearchBackendBase searchBackend )
81+ {
82+ return this . _createUpdater ( searchBackend ) ;
83+ }
6084
6185 internal override bool AddTeamcityBuildConfiguration ( BuildContext context , List < TeamCityBuildConfiguration > teamCityBuildConfigurations )
6286 {
0 commit comments