@@ -410,6 +410,7 @@ public async Task<Template<ApiTemplateResources>> GenerateApiTemplateAsync(
410410 if ( apiTemplate ? . HasResources ( ) == true )
411411 {
412412 apiTemplate . TypedResources . FileName = FileNameGenerator . GenerateExtractorAPIFileName ( singleApiName , this . extractorParameters . FileNames . BaseFileName ) ;
413+ apiTemplate . TypedResources . ParametersFileName = FileNameGenerator . GenerateExtractorAPIParametersFileName ( singleApiName ) ;
413414
414415 await FileWriter . SaveAsJsonAsync (
415416 apiTemplate ,
@@ -459,6 +460,79 @@ await FileWriter.SaveAsJsonAsync(
459460 return templateParameters ;
460461 }
461462
463+ public async Task GenerateResourceParametersFiles (
464+ string baseFilesGenerationDirectory ,
465+ Template mainParametersTemplate ,
466+ Template < ApiTemplateResources > apiTemplate = null ,
467+ Template < PolicyTemplateResources > policyTemplate = null ,
468+ Template < ApiVersionSetTemplateResources > apiVersionSetTemplate = null ,
469+ Template < ProductTemplateResources > productsTemplate = null ,
470+ Template < ProductApiTemplateResources > productApisTemplate = null ,
471+ Template < TagApiTemplateResources > apiTagsTemplate = null ,
472+ Template < LoggerTemplateResources > loggersTemplate = null ,
473+ Template < BackendTemplateResources > backendsTemplate = null ,
474+ Template < AuthorizationServerTemplateResources > authorizationServersTemplate = null ,
475+ Template < NamedValuesResources > namedValuesTemplate = null ,
476+ Template < TagTemplateResources > tagTemplate = null ,
477+ Template < GroupTemplateResources > groupTemplate = null ,
478+ Template < IdentityProviderResources > identityProviderTemplate = null ,
479+ Template < SchemaTemplateResources > schemaTemplate = null ,
480+ Template < OpenIdConnectProviderResources > openIdConnectProviderTemplate = null ,
481+ Template < PolicyFragmentsResources > policyFragmentsTemplate = null )
482+ {
483+ this . RenameExistingParametersDirectory ( baseFilesGenerationDirectory ) ;
484+
485+ await this . GenerateResourceParametersFile ( baseFilesGenerationDirectory , apiTemplate ? . TypedResources . ParametersFileName , apiTemplate , mainParametersTemplate ) ;
486+ await this . GenerateResourceParametersFile ( baseFilesGenerationDirectory , this . extractorParameters . FileNames . GlobalServicePolicyParameters , policyTemplate , mainParametersTemplate ) ;
487+ await this . GenerateResourceParametersFile ( baseFilesGenerationDirectory , this . extractorParameters . FileNames . ApiVersionSetsParameters , apiVersionSetTemplate , mainParametersTemplate ) ;
488+ await this . GenerateResourceParametersFile ( baseFilesGenerationDirectory , this . extractorParameters . FileNames . ProductsParameters , productsTemplate , mainParametersTemplate ) ;
489+ await this . GenerateResourceParametersFile ( baseFilesGenerationDirectory , this . extractorParameters . FileNames . ProductAPIsParameters , productApisTemplate , mainParametersTemplate ) ;
490+ await this . GenerateResourceParametersFile ( baseFilesGenerationDirectory , this . extractorParameters . FileNames . TagApiParameters , apiTagsTemplate , mainParametersTemplate ) ;
491+ await this . GenerateResourceParametersFile ( baseFilesGenerationDirectory , this . extractorParameters . FileNames . LoggersParameters , loggersTemplate , mainParametersTemplate ) ;
492+ await this . GenerateResourceParametersFile ( baseFilesGenerationDirectory , this . extractorParameters . FileNames . BackendsParameters , backendsTemplate , mainParametersTemplate ) ;
493+ await this . GenerateResourceParametersFile ( baseFilesGenerationDirectory , this . extractorParameters . FileNames . AuthorizationServersParameters , authorizationServersTemplate , mainParametersTemplate ) ;
494+ await this . GenerateResourceParametersFile ( baseFilesGenerationDirectory , this . extractorParameters . FileNames . NamedValuesParameters , namedValuesTemplate , mainParametersTemplate ) ;
495+ await this . GenerateResourceParametersFile ( baseFilesGenerationDirectory , this . extractorParameters . FileNames . TagsParameters , tagTemplate , mainParametersTemplate ) ;
496+ await this . GenerateResourceParametersFile ( baseFilesGenerationDirectory , this . extractorParameters . FileNames . GroupsParameters , groupTemplate , mainParametersTemplate ) ;
497+ await this . GenerateResourceParametersFile ( baseFilesGenerationDirectory , this . extractorParameters . FileNames . IdentityProvidersParameters , identityProviderTemplate , mainParametersTemplate ) ;
498+ await this . GenerateResourceParametersFile ( baseFilesGenerationDirectory , this . extractorParameters . FileNames . SchemaParameters , schemaTemplate , mainParametersTemplate ) ;
499+ await this . GenerateResourceParametersFile ( baseFilesGenerationDirectory , this . extractorParameters . FileNames . OpenIdConnectProvidersParameters , openIdConnectProviderTemplate , mainParametersTemplate ) ;
500+ await this . GenerateResourceParametersFile ( baseFilesGenerationDirectory , this . extractorParameters . FileNames . PolicyFragmentsParameters , policyFragmentsTemplate , mainParametersTemplate ) ;
501+ }
502+
503+ public async Task GenerateResourceParametersFile < TTemplateResource > ( string baseFilesGenerationDirectory , string fileName , Template < TTemplateResource > resourceTemplate , Template mainParametersTemplate ) where TTemplateResource : ITemplateResources , new ( )
504+ {
505+ if ( string . IsNullOrEmpty ( fileName ) || string . IsNullOrEmpty ( baseFilesGenerationDirectory ) )
506+ {
507+ this . logger . LogWarning ( "Filename or directory for parameters file generation is null or empty, skipping the generation" ) ;
508+ return ;
509+ }
510+
511+ if ( resourceTemplate ? . TypedResources ? . HasContent ( ) == true )
512+ {
513+ var parametersTemplate = this . parametersExtractor . CreateResourceTemplateParameterTemplate ( resourceTemplate , mainParametersTemplate ) ;
514+
515+ if ( ! parametersTemplate . Parameters . IsNullOrEmpty ( ) )
516+ {
517+ await FileWriter . SaveAsJsonAsync (
518+ parametersTemplate ,
519+ directory : Path . Combine ( baseFilesGenerationDirectory , this . extractorParameters . FileNames . ParametersDirectory ) ,
520+ fileName : fileName ) ;
521+ }
522+ }
523+ }
524+
525+ void RenameExistingParametersDirectory ( string baseDirectoryLocation )
526+ {
527+ var parametersLocation = Path . Combine ( baseDirectoryLocation , this . extractorParameters . FileNames . ParametersDirectory ) ;
528+ if ( Directory . Exists ( parametersLocation ) )
529+ {
530+ var creationDateTime = Directory . GetCreationTime ( parametersLocation ) . ToString ( "yyyyMMddHHmmss" ) ;
531+ var newParameterDirectory = $ "{ this . extractorParameters . FileNames . ParametersDirectory } { creationDateTime } ";
532+ Directory . Move ( parametersLocation , Path . Combine ( baseDirectoryLocation , newParameterDirectory ) ) ;
533+ }
534+ }
535+
462536 public async Task < Template < MasterTemplateResources > > GenerateMasterTemplateAsync (
463537 string baseFilesGenerationDirectory ,
464538 ApiTemplateResources apiTemplateResources = null ,
@@ -1035,8 +1109,28 @@ async Task GenerateTemplates(
10351109 await this . GenerateGatewayTemplateAsync ( singleApiName , baseFilesGenerationDirectory ) ;
10361110 await this . GenerateGatewayApiTemplateAsync ( singleApiName , multipleApiNames , baseFilesGenerationDirectory ) ;
10371111 await this . GenerateApiManagementServiceTemplate ( baseFilesGenerationDirectory ) ;
1038- await this . GenerateParametersTemplateAsync ( apisToExtract , loggerTemplate . TypedResources , backendTemplate . TypedResources , namedValueTemplate . TypedResources , identityProviderTemplate . TypedResources , openIdConnectProviderTemplate . TypedResources , baseFilesGenerationDirectory ) ;
1112+ var parametersTemplate = await this . GenerateParametersTemplateAsync ( apisToExtract , loggerTemplate . TypedResources , backendTemplate . TypedResources , namedValueTemplate . TypedResources , identityProviderTemplate . TypedResources , openIdConnectProviderTemplate . TypedResources , baseFilesGenerationDirectory ) ;
10391113
1114+ await this . GenerateResourceParametersFiles (
1115+ baseFilesGenerationDirectory ,
1116+ parametersTemplate ,
1117+ apiTemplate : apiTemplate ,
1118+ policyTemplate : globalServicePolicyTemplate ,
1119+ productApisTemplate : productApiTemplate ,
1120+ productsTemplate : productTemplate ,
1121+ apiVersionSetTemplate : apiVersionSetTemplate ,
1122+ authorizationServersTemplate : authorizationServerTemplate ,
1123+ tagTemplate : tagTemplate ,
1124+ apiTagsTemplate : apiTagTemplate ,
1125+ loggersTemplate : loggerTemplate ,
1126+ namedValuesTemplate : namedValueTemplate ,
1127+ backendsTemplate : backendTemplate ,
1128+ groupTemplate : groupTemplate ,
1129+ identityProviderTemplate : identityProviderTemplate ,
1130+ openIdConnectProviderTemplate : openIdConnectProviderTemplate ,
1131+ schemaTemplate : schemasTempate ,
1132+ policyFragmentsTemplate : policyFragmentTemplate ) ;
1133+
10401134 await this . GenerateMasterTemplateAsync (
10411135 baseFilesGenerationDirectory ,
10421136 apiTemplateResources : apiTemplate . TypedResources ,
0 commit comments