@@ -24,16 +24,18 @@ export async function updateCaretakerTeamViaPrompt() {
24
24
25
25
/** The list of current members in the group. */
26
26
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
+ ] ) ;
32
31
33
32
/** 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):' ,
37
39
validate : ( value ) => {
38
40
if ( value . length !== 2 ) {
39
41
return 'Please select exactly 2 caretakers for the upcoming rotation.' ;
@@ -42,6 +44,19 @@ export async function updateCaretakerTeamViaPrompt() {
42
44
} ,
43
45
} ) ;
44
46
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
+
45
60
/** Whether the user positively confirmed the selected made. */
46
61
const confirmation = await Prompt . confirm ( {
47
62
default : true ,
@@ -53,13 +68,16 @@ export async function updateCaretakerTeamViaPrompt() {
53
68
return ;
54
69
}
55
70
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 ) ) {
57
75
Log . info ( green ( ' ✔ Caretaker group already up to date.' ) ) ;
58
76
return ;
59
77
}
60
78
61
79
try {
62
- await setCaretakerGroup ( caretakerGroup , selected ) ;
80
+ await setCaretakerGroup ( caretakerGroup , selectedSorted ) ;
63
81
} catch {
64
82
Log . error ( ' ✘ Failed to update caretaker group.' ) ;
65
83
return ;
0 commit comments