@@ -41,6 +41,10 @@ public function __construct(
4141 private bool $ retainStaleRevisionsTagged ,
4242 #[Autowire(param: 'dirigent.metadata.retain_stale_revisions.dev_versions ' )]
4343 private bool $ retainStaleRevisionsDev ,
44+ #[Autowire(param: 'dirigent.metadata.retain_pruned_versions.tagged_versions ' )]
45+ private bool $ retainPrunedVersionsTagged ,
46+ #[Autowire(param: 'dirigent.metadata.retain_pruned_versions.dev_versions ' )]
47+ private bool $ retainPrunedVersionsDev ,
4448 ) {
4549 }
4650
@@ -209,7 +213,15 @@ private function updatePackage(Package $package, array $composerPackages, ?VcsDr
209213
210214 // Remove outdated versions
211215 foreach ($ existingVersionMetadata as $ version ) {
212- $ this ->entityManager ->remove ($ version );
216+ $ removeVersion = $ version ->isDevelopment () ? !$ this ->retainPrunedVersionsDev : !$ this ->retainPrunedVersionsTagged ;
217+ if ($ removeVersion ) {
218+ $ this ->entityManager ->remove ($ version );
219+ } elseif (!$ version ->isPruned ()) {
220+ $ version ->setPruned (true );
221+ $ version ->setUpdatedAt (new \DateTimeImmutable ());
222+
223+ $ this ->entityManager ->persist ($ version );
224+ }
213225 }
214226
215227 $ package ->setUpdatedAt (new \DateTimeImmutable ());
@@ -234,6 +246,7 @@ private function updateVersion(Version $version, CompletePackageInterface $data,
234246 }
235247
236248 $ version ->setDefaultBranch ($ data ->isDefaultBranch ());
249+ $ version ->setPruned (false );
237250 $ version ->setUpdatedAt (new \DateTimeImmutable ());
238251
239252 $ this ->entityManager ->persist ($ version );
0 commit comments