12
12
13
13
namespace App \Package ;
14
14
15
+ use App \Entity \ConflictLink ;
15
16
use App \Entity \Dependent ;
17
+ use App \Entity \DevRequireLink ;
16
18
use App \Entity \PackageFreezeReason ;
19
+ use App \Entity \ProvideLink ;
20
+ use App \Entity \ReplaceLink ;
21
+ use App \Entity \RequireLink ;
17
22
use App \HtmlSanitizer \ReadmeImageSanitizer ;
18
23
use App \HtmlSanitizer \ReadmeLinkSanitizer ;
19
24
use App \Util \HttpDownloaderOptionsFactory ;
@@ -63,24 +68,34 @@ class Updater
63
68
64
69
private const SUPPORTED_LINK_TYPES = [
65
70
'require ' => [
66
- 'method ' => 'getRequires ' ,
67
- 'entity ' => 'RequireLink ' ,
71
+ 'composer-getter ' => 'getRequires ' ,
72
+ 'getter ' => 'getRequire ' ,
73
+ 'setter ' => 'addRequireLink ' ,
74
+ 'entity ' => RequireLink::class,
68
75
],
69
76
'conflict ' => [
70
- 'method ' => 'getConflicts ' ,
71
- 'entity ' => 'ConflictLink ' ,
77
+ 'composer-getter ' => 'getConflicts ' ,
78
+ 'getter ' => 'getConflict ' ,
79
+ 'setter ' => 'addConflictLink ' ,
80
+ 'entity ' => ConflictLink::class,
72
81
],
73
82
'provide ' => [
74
- 'method ' => 'getProvides ' ,
75
- 'entity ' => 'ProvideLink ' ,
83
+ 'composer-getter ' => 'getProvides ' ,
84
+ 'getter ' => 'getProvide ' ,
85
+ 'setter ' => 'addProvideLink ' ,
86
+ 'entity ' => ProvideLink::class,
76
87
],
77
88
'replace ' => [
78
- 'method ' => 'getReplaces ' ,
79
- 'entity ' => 'ReplaceLink ' ,
89
+ 'composer-getter ' => 'getReplaces ' ,
90
+ 'getter ' => 'getReplace ' ,
91
+ 'setter ' => 'addReplaceLink ' ,
92
+ 'entity ' => ReplaceLink::class,
80
93
],
81
94
'devRequire ' => [
82
- 'method ' => 'getDevRequires ' ,
83
- 'entity ' => 'DevRequireLink ' ,
95
+ 'composer-getter ' => 'getDevRequires ' ,
96
+ 'getter ' => 'getDevRequire ' ,
97
+ 'setter ' => 'addDevRequireLink ' ,
98
+ 'entity ' => DevRequireLink::class,
84
99
],
85
100
];
86
101
@@ -510,9 +525,9 @@ private function updateInformation(IOInterface $io, VersionRepository $versionRe
510
525
}
511
526
512
527
// handle links
513
- foreach (self ::SUPPORTED_LINK_TYPES as $ linkType => $ opts ) {
528
+ foreach (self ::SUPPORTED_LINK_TYPES as $ opts ) {
514
529
$ links = [];
515
- foreach ($ data ->{$ opts ['method ' ]}() as $ link ) {
530
+ foreach ($ data ->{$ opts ['composer-getter ' ]}() as $ link ) {
516
531
$ constraint = $ link ->getPrettyConstraint ();
517
532
if (false !== strpos ($ constraint , ', ' ) && false !== strpos ($ constraint , '@ ' )) {
518
533
$ constraint = Preg::replaceCallbackStrictGroups ('{([><]=?\s*[^@]+?)@([a-z]+)}i ' , static function ($ matches ) {
@@ -527,10 +542,10 @@ private function updateInformation(IOInterface $io, VersionRepository $versionRe
527
542
$ links [$ link ->getTarget ()] = $ constraint ;
528
543
}
529
544
530
- foreach ($ version ->{' get ' . $ linkType }() as $ link ) {
545
+ foreach ($ version ->{$ opts [ ' getter ' ] }() as $ link ) {
531
546
// clear links that have changed/disappeared (for updates)
532
547
if (!isset ($ links [$ link ->getPackageName ()]) || $ links [$ link ->getPackageName ()] !== $ link ->getPackageVersion ()) {
533
- $ version ->{' get ' . $ linkType }()->removeElement ($ link );
548
+ $ version ->{$ opts [ ' getter ' ] }()->removeElement ($ link );
534
549
$ em ->remove ($ link );
535
550
} else {
536
551
// clear those that are already set
@@ -539,11 +554,11 @@ private function updateInformation(IOInterface $io, VersionRepository $versionRe
539
554
}
540
555
541
556
foreach ($ links as $ linkPackageName => $ linkPackageVersion ) {
542
- $ class = ' App\Entity \\' . $ opts ['entity ' ];
557
+ $ class = $ opts ['entity ' ];
543
558
$ link = new $ class ;
544
559
$ link ->setPackageName ((string ) $ linkPackageName );
545
560
$ link ->setPackageVersion ($ linkPackageVersion );
546
- $ version ->{' add ' . $ linkType . ' Link ' }($ link );
561
+ $ version ->{$ opts [ ' setter ' ] }($ link );
547
562
$ link ->setVersion ($ version );
548
563
$ em ->persist ($ link );
549
564
}
0 commit comments