@@ -19,6 +19,7 @@ protected function loadInternal(array $mergedConfig, ContainerBuilder $container
1919
2020 $ this ->registerEncryptionConfiguration ($ mergedConfig ['encryption ' ], $ container );
2121 $ this ->registerMetadataConfiguration ($ mergedConfig ['metadata ' ], $ container );
22+ $ this ->registerPackagesConfiguration ($ mergedConfig ['packages ' ], $ container );
2223
2324 $ container ->setParameter ('dirigent.security.public_access ' , $ mergedConfig ['security ' ]['public ' ]);
2425 $ container ->setParameter ('dirigent.security.registration_enabled ' , $ mergedConfig ['security ' ]['registration ' ]);
@@ -29,11 +30,6 @@ protected function loadInternal(array $mergedConfig, ContainerBuilder $container
2930 $ container ->setParameter ('dirigent.storage.path ' , $ mergedConfig ['storage ' ]['path ' ]);
3031 }
3132
32- $ container ->setParameter ('dirigent.packages.dynamic_updates ' , $ mergedConfig ['packages ' ]['dynamic_updates ' ]);
33- $ container ->setParameter ('dirigent.packages.dynamic_update_delay ' , $ mergedConfig ['packages ' ]['dynamic_update_delay ' ]);
34- $ container ->setParameter ('dirigent.packages.periodic_updates ' , $ mergedConfig ['packages ' ]['periodic_updates ' ]);
35- $ container ->setParameter ('dirigent.packages.periodic_update_interval ' , $ mergedConfig ['packages ' ]['periodic_update_interval ' ]);
36-
3733 $ container ->setParameter ('dirigent.dist_mirroring.enabled ' , $ mergedConfig ['dist_mirroring ' ]['enabled ' ]);
3834 $ container ->setParameter ('dirigent.dist_mirroring.preferred ' , $ mergedConfig ['dist_mirroring ' ]['preferred ' ]);
3935 $ container ->setParameter ('dirigent.dist_mirroring.dev_packages ' , $ mergedConfig ['dist_mirroring ' ]['dev_packages ' ]);
@@ -65,4 +61,36 @@ private function registerMetadataConfiguration(array $config, ContainerBuilder $
6561 {
6662 $ container ->setParameter ('dirigent.metadata.mirror_vcs_repositories ' , $ config ['mirror_vcs_repositories ' ]);
6763 }
64+
65+ /**
66+ * @param array{periodic_update_interval: string, periodic_updates: bool, dynamic_update_delay: string, dynamic_updates: bool} $config
67+ */
68+ private function registerPackagesConfiguration (array $ config , ContainerBuilder $ container ): void
69+ {
70+ $ dynamicUpdatesEnabled = $ config ['dynamic_updates ' ];
71+ $ dynamicUpdateDelay = $ dynamicUpdatesEnabled ? $ config ['dynamic_update_delay ' ] : null ;
72+ $ periodicUpdatesEnabled = $ config ['periodic_updates ' ];
73+ $ periodicUpdateInterval = $ periodicUpdatesEnabled ? $ config ['periodic_update_interval ' ] : null ;
74+
75+ if (null !== $ dynamicUpdateDelay ) {
76+ try {
77+ new \DateInterval ($ dynamicUpdateDelay );
78+ } catch (\DateMalformedIntervalStringException ) {
79+ throw new \LogicException ("Invalid dynamic update delay: ' $ dynamicUpdateDelay' is not a valid ISO 8601 duration. " );
80+ }
81+ }
82+
83+ if (null !== $ periodicUpdateInterval ) {
84+ try {
85+ new \DateInterval ($ periodicUpdateInterval );
86+ } catch (\DateMalformedIntervalStringException ) {
87+ throw new \LogicException ("Invalid periodic update interval: ' $ periodicUpdateInterval' is not a valid ISO 8601 duration. " );
88+ }
89+ }
90+
91+ $ container ->setParameter ('dirigent.packages.dynamic_updates ' , $ dynamicUpdatesEnabled );
92+ $ container ->setParameter ('dirigent.packages.dynamic_update_delay ' , $ dynamicUpdateDelay );
93+ $ container ->setParameter ('dirigent.packages.periodic_updates ' , $ periodicUpdatesEnabled );
94+ $ container ->setParameter ('dirigent.packages.periodic_update_interval ' , $ periodicUpdateInterval );
95+ }
6896}
0 commit comments