@@ -24,16 +24,18 @@ export async function updateCaretakerTeamViaPrompt() {
2424
2525 /** The list of current members in the group. */
2626 const current = new Set ( await getGroupMembers ( caretakerGroup ) ) ;
27- /** The list of members able to be added to the group as defined by a separate roster group. */
28- const roster = ( await getGroupMembers ( `${ caretakerGroup } -roster` ) ) . map ( ( member ) => ( {
29- value : member ,
30- checked : current . has ( member ) ,
31- } ) ) ;
27+ const [ roster , emeaRoster ] = await Promise . all ( [
28+ getGroupMembers ( `${ caretakerGroup } -roster` ) ,
29+ getGroupMembers ( `${ caretakerGroup } -roster-emea` ) ,
30+ ] ) ;
3231
3332 /** The list of users selected to be members of the caretaker group. */
34- const selected = await Prompt . checkbox ( {
35- choices : roster ,
36- message : 'Select 2 caretakers for the upcoming rotation:' ,
33+ const selectedPrimaryAndSecondary = await Prompt . checkbox < string > ( {
34+ choices : roster . map ( ( member ) => ( {
35+ value : member ,
36+ checked : current . has ( member ) ,
37+ } ) ) ,
38+ message : 'Select 2 caretakers for the upcoming rotation (primary and secondary):' ,
3739 validate : ( value ) => {
3840 if ( value . length !== 2 ) {
3941 return 'Please select exactly 2 caretakers for the upcoming rotation.' ;
@@ -42,6 +44,19 @@ export async function updateCaretakerTeamViaPrompt() {
4244 } ,
4345 } ) ;
4446
47+ const emeaOptions = emeaRoster
48+ // Do not show members that are already selected as primary/secondary.
49+ . filter ( ( m ) => ! selectedPrimaryAndSecondary . includes ( m ) )
50+ . map ( ( member ) => ( {
51+ value : member ,
52+ name : `${ member } (EMEA)` ,
53+ checked : current . has ( member ) ,
54+ } ) ) ;
55+ const selectedEmea = await Prompt . select < string > ( {
56+ choices : emeaOptions ,
57+ message : 'Select EMEA caretaker' ,
58+ } ) ;
59+
4560 /** Whether the user positively confirmed the selected made. */
4661 const confirmation = await Prompt . confirm ( {
4762 default : true ,
@@ -53,13 +68,16 @@ export async function updateCaretakerTeamViaPrompt() {
5368 return ;
5469 }
5570
56- if ( JSON . stringify ( selected ) === JSON . stringify ( current ) ) {
71+ const selectedSorted = [ ...selectedPrimaryAndSecondary , selectedEmea ] . sort ( ) ;
72+ const currentSorted = Array . from ( current ) . sort ( ) ;
73+
74+ if ( JSON . stringify ( selectedSorted ) === JSON . stringify ( currentSorted ) ) {
5775 Log . info ( green ( ' ✔ Caretaker group already up to date.' ) ) ;
5876 return ;
5977 }
6078
6179 try {
62- await setCaretakerGroup ( caretakerGroup , selected ) ;
80+ await setCaretakerGroup ( caretakerGroup , selectedSorted ) ;
6381 } catch {
6482 Log . error ( ' ✘ Failed to update caretaker group.' ) ;
6583 return ;
0 commit comments