@@ -140,7 +140,7 @@ public function statistics(string $packageName): Response
140140
141141 #[Route('/dashboard/packages/add-mirroring ' , name: 'dashboard_packages_add_mirroring ' )]
142142 #[IsGranted('ROLE_ADMIN ' )]
143- public function addMirror (Request $ request ): Response
143+ public function addMirroring (Request $ request ): Response
144144 {
145145 $ form = $ this ->createForm (PackageAddMirroringFormType::class);
146146
@@ -149,25 +149,43 @@ public function addMirror(Request $request): Response
149149 if ($ form ->isSubmitted () && $ form ->isValid ()) {
150150 $ registry = $ form ->get ('registry ' )->getData ();
151151
152- $ packageNames = explode ( PHP_EOL , $ form ->get ('packages ' )->getData () );
153- $ packageNames = array_map ( ' trim ' , $ packageNames );
152+ $ packageNamesInput = $ form ->get ('packages ' )->getData ();
153+ $ packageNames = preg_split ( ' #(\s|,)+# ' , $ packageNamesInput );
154154
155155 $ results = [];
156156
157157 foreach ($ packageNames as $ packageName ) {
158- if (null !== $ this -> packageRepository -> findOneBy ([ ' name ' => $ packageName] )) {
158+ if (! preg_match ( ' #[a-z0-9_.-]+/[a-z0-9_.-]+# ' , $ packageName )) {
159159 $ results [] = [
160+ 'packageName ' => $ packageName ,
161+ 'registryName ' => null ,
162+ 'created ' => false ,
160163 'error ' => true ,
161- 'message ' => "The package $ packageName already exists and was skipped " ,
164+ 'message ' => "The package name $ packageName is invalid. " ,
165+ ];
166+
167+ continue ;
168+ }
169+
170+ if (null !== $ this ->packageRepository ->findOneBy (['name ' => $ packageName ])) {
171+ $ results [] = [
172+ 'packageName ' => $ packageName ,
173+ 'registryName ' => null ,
174+ 'created ' => false ,
175+ 'error ' => false ,
176+ 'message ' => "The package $ packageName already exists and was skipped. " ,
162177 ];
163178
164179 continue ;
165180 }
166181
167182 if (!$ this ->metadataResolver ->provides ($ packageName , $ registry )) {
168183 $ results [] = [
184+ 'packageName ' => $ packageName ,
185+ 'registryName ' => $ registry ->getName (),
186+ 'created ' => false ,
169187 'error ' => true ,
170- 'message ' => "The package $ packageName could not be found and was skipped " ,
188+ 'message ' => "The package $ packageName could not be found and was skipped. " ,
171189 ];
172190
173191 continue ;
@@ -183,14 +201,17 @@ public function addMirror(Request $request): Response
183201 $ this ->messenger ->dispatch (new UpdatePackage ($ package ->getId ()));
184202
185203 $ results [] = [
204+ 'packageName ' => $ packageName ,
205+ 'registryName ' => $ registry ->getName (),
206+ 'created ' => true ,
186207 'error ' => false ,
187- 'message ' => "The package $ packageName was created successfully " ,
208+ 'message ' => "The package $ packageName was created successfully. " ,
188209 ];
189210
190211 $ this ->entityManager ->flush ();
191212 }
192213
193- return $ this ->render ( ' dashboard/packages/add_mirroring_results.html.twig ' , [
214+ return $ this ->json ( [
194215 'results ' => $ results ,
195216 ]);
196217 }
0 commit comments