@@ -77,12 +77,20 @@ private function get_bundle_release_notes( $source, $format ) {
7777 ) as $ repo
7878 ) {
7979 $ milestones = GitHub::get_project_milestones ( $ repo );
80- // Cheap way to get the latest milestone
81- $ milestone = array_shift ( $ milestones );
80+ $ milestone = array_reduce (
81+ $ milestones ,
82+ function ( $ latest , $ milestone ) {
83+ return version_compare ( $ milestone ->title , $ latest , '> ' ) ? $ milestone : $ latest ;
84+ }
85+ );
86+
8287 if ( ! $ milestone ) {
88+ WP_CLI ::debug ( "No milestone found for repo ' {$ repo }' " , 'release-notes ' );
8389 continue ;
8490 }
8591
92+ WP_CLI ::debug ( "Using milestone ' {$ milestone ->title }' for repo ' {$ repo }' " , 'release-notes ' );
93+
8694 WP_CLI ::log ( $ this ->repo_heading ( $ repo , $ format ) );
8795
8896 $ this ->get_repo_release_notes (
@@ -95,21 +103,21 @@ private function get_bundle_release_notes( $source, $format ) {
95103
96104 // Identify all command dependencies and their release notes
97105
98- // TODO: Bundle repo needs to be switched to `wp-cli/wp-cli-bundle` for next release.
99- $ bundle = 'wp-cli/wp-cli ' ;
106+ $ bundle = 'wp-cli/wp-cli-bundle ' ;
100107
101108 $ milestones = GitHub::get_project_milestones (
102- ' wp-cli/wp-cli ' ,
109+ $ bundle ,
103110 array ( 'state ' => 'closed ' )
104111 );
105- // Cheap way to get the latest closed milestone
106- $ milestone = array_shift ( $ milestones );
107- $ tag = is_object ( $ milestone ) ? "v {$ milestone ->title }" : 'master ' ;
108112
109- // TODO: Only needed for switch from v1 to v2.
110- if ( 'wp-cli/wp-cli ' === $ bundle ) {
111- $ tag = 'v1.5.1 ' ;
112- }
113+ $ milestone = array_reduce (
114+ $ milestones ,
115+ function ( $ tag , $ milestone ) {
116+ return version_compare ( $ milestone ->title , $ tag , '> ' ) ? $ milestone ->title : $ tag ;
117+ }
118+ );
119+
120+ $ tag = ! empty ( $ milestone ) ? "v {$ milestone }" : 'master ' ;
113121
114122 $ composer_lock_url = sprintf ( 'https://raw.githubusercontent.com/%s/%s/composer.lock ' ,
115123 $ bundle , $ tag );
@@ -120,11 +128,6 @@ private function get_bundle_release_notes( $source, $format ) {
120128 }
121129 $ composer_json = json_decode ( $ response ->body , true );
122130
123- // TODO: Only need for initial v2.
124- $ composer_json ['packages ' ][] = array (
125- 'name ' => 'wp-cli/i18n-command ' ,
126- 'version ' => 'v2 ' ,
127- );
128131 usort ( $ composer_json ['packages ' ], function ( $ a , $ b ) {
129132 return $ a ['name ' ] < $ b ['name ' ] ? - 1 : 1 ;
130133 } );
@@ -213,6 +216,9 @@ private function get_repo_release_notes(
213216
214217 $ entries = array ();
215218 foreach ( $ milestones as $ milestone ) {
219+
220+ WP_CLI ::debug ( "Using milestone ' {$ milestone ->title }' for repo ' {$ repo }' " , 'release-notes ' );
221+
216222 switch ( $ source ) {
217223 case 'release ' :
218224 $ tag = 0 === strpos ( $ milestone ->title , 'v ' )
0 commit comments