@@ -358,55 +358,63 @@ function version_requirements( ReleaseDocument $release ) {
358358 */
359359function get_unmet_requirements ( array $ requirements ) : array {
360360 $ unmet = [];
361- foreach ( $ requirements as $ pkg => $ req ) {
362- $ req = trim ( $ req );
363- $ comp_spn = strspn ( $ req , '<>=! ' );
364- if ( $ comp_spn === 0 ) {
365- // Invalid requirement, for now.
366- continue ;
367- }
368-
369- $ comp = trim ( substr ( $ req , 0 , $ comp_spn ) );
370- $ ver = trim ( substr ( $ req , $ comp_spn ) );
371-
372- switch ( true ) {
373- case $ pkg === 'env:wp ' :
374- // From is_wp_version_compatible()
375- // We use our own copy to allow passing $comp
376- if (
377- defined ( 'WP_RUN_CORE_TESTS ' )
378- && WP_RUN_CORE_TESTS
379- && isset ( $ GLOBALS ['_wp_tests_wp_version ' ] )
380- ) {
381- $ wp_version = $ GLOBALS ['_wp_tests_wp_version ' ];
382- } else {
383- $ wp_version = wp_get_wp_version ();
384- }
385-
386- $ valid = version_compare ( $ wp_version , $ ver , $ comp );
387- if ( ! $ valid ) {
388- $ unmet [ $ pkg ] = $ req ;
389- }
390- break ;
391-
392- case $ pkg === 'env:php ' :
393- $ valid = version_compare ( PHP_VERSION , $ ver , $ comp );
394- if ( ! $ valid ) {
395- $ unmet [ $ pkg ] = $ req ;
396- }
397- break ;
398-
399- case str_starts_with ( $ pkg , 'env:php- ' ):
400- // todo: check extensions.
401- break ;
402-
403- case str_starts_with ( $ pkg , 'env: ' ):
404- // todo: check other env, or fail.
405- break ;
361+ foreach ( $ requirements as $ pkg => $ req_list ) {
362+ $ req_parts = explode ( ', ' , $ req_list );
363+ $ req_unmet = [];
364+ foreach ( $ req_parts as $ req ) {
365+ $ req = trim ( $ req );
366+ $ comp_spn = strspn ( $ req , '<>=! ' );
367+ if ( $ comp_spn === 0 ) {
368+ // Invalid requirement, for now.
369+ continue ;
370+ }
406371
407- default :
408- // todo: check packages.
409- break ;
372+ $ comp = trim ( substr ( $ req , 0 , $ comp_spn ) );
373+ $ ver = trim ( substr ( $ req , $ comp_spn ) );
374+
375+ switch ( true ) {
376+ case $ pkg === 'env:wp ' :
377+ // From is_wp_version_compatible()
378+ // We use our own copy to allow passing $comp
379+ if (
380+ defined ( 'WP_RUN_CORE_TESTS ' )
381+ && WP_RUN_CORE_TESTS
382+ && isset ( $ GLOBALS ['_wp_tests_wp_version ' ] )
383+ ) {
384+ $ wp_version = $ GLOBALS ['_wp_tests_wp_version ' ];
385+ } else {
386+ $ wp_version = wp_get_wp_version ();
387+ }
388+
389+ $ valid = version_compare ( $ wp_version , $ ver , $ comp );
390+ if ( ! $ valid ) {
391+ $ req_unmet [] = $ req ;
392+ }
393+ break ;
394+
395+ case $ pkg === 'env:php ' :
396+ $ valid = version_compare ( PHP_VERSION , $ ver , $ comp );
397+ var_dump ( sprintf ( '%s %s %s ' , PHP_VERSION , $ comp , $ ver ), $ valid );
398+ if ( ! $ valid ) {
399+ $ req_unmet [] = $ req ;
400+ }
401+ break ;
402+
403+ case str_starts_with ( $ pkg , 'env:php- ' ):
404+ // todo: check extensions.
405+ break ;
406+
407+ case str_starts_with ( $ pkg , 'env: ' ):
408+ // todo: check other env, or fail.
409+ break ;
410+
411+ default :
412+ // todo: check packages.
413+ break ;
414+ }
415+ }
416+ if ( ! empty ( $ req_unmet ) ) {
417+ $ unmet [ $ pkg ] = implode ( ', ' , $ req_unmet );
410418 }
411419 }
412420
0 commit comments