File tree Expand file tree Collapse file tree 2 files changed +47
-5
lines changed Expand file tree Collapse file tree 2 files changed +47
-5
lines changed Original file line number Diff line number Diff line change 77 */
88
99import { Argv , CommandModule } from 'yargs' ;
10-
1110import { addGithubTokenOption } from '../../utils/git/github-yargs.js' ;
12-
1311import { updateCaretakerTeamViaPrompt } from './update-github-team.js' ;
14-
15- export interface CaretakerHandoffOptions { }
12+ import { assertValidGithubConfig , getConfig } from '../../utils/config.js' ;
13+ import { verifyMergeMode } from './verify-merge-mode.js' ;
1614
1715/** Builds the command. */
1816function builder ( argv : Argv ) {
@@ -21,11 +19,15 @@ function builder(argv: Argv) {
2119
2220/** Handles the command. */
2321async function handler ( ) {
22+ const { mergeMode} = ( await getConfig ( [ assertValidGithubConfig ] ) ) . github ;
23+ if ( ! ( await verifyMergeMode ( mergeMode ) ) ) {
24+ return ;
25+ }
2426 await updateCaretakerTeamViaPrompt ( ) ;
2527}
2628
2729/** yargs command module for assisting in handing off caretaker. */
28- export const HandoffModule : CommandModule < { } , CaretakerHandoffOptions > = {
30+ export const HandoffModule : CommandModule < { } , { } > = {
2931 handler,
3032 builder,
3133 command : 'handoff' ,
Original file line number Diff line number Diff line change 1+ /**
2+ * @license
3+ * Copyright Google LLC
4+ *
5+ * Use of this source code is governed by an MIT-style license that can be
6+ * found in the LICENSE file at https://angular.io/license
7+ */
8+
9+ import { RepositoryMergeModes } from '../../utils/config' ;
10+ import { bold , green , Log , red } from '../../utils/logging' ;
11+ import { Prompt } from '../../utils/prompt' ;
12+ import { getCurrentMergeMode , setRepoMergeMode } from '../../utils/git/repository-merge-mode' ;
13+
14+ export async function verifyMergeMode ( expectedMode : RepositoryMergeModes ) : Promise < boolean > {
15+ const mode = await getCurrentMergeMode ( ) ;
16+ if ( mode === expectedMode ) {
17+ return true ;
18+ }
19+
20+ Log . info ( `The repository merge-mode is currently ${ bold ( mode ) } and must be reset before handoff` ) ;
21+ if (
22+ await Prompt . confirm ( {
23+ message : `Would you like to reset this to ${ expectedMode } ` ,
24+ default : true ,
25+ } )
26+ ) {
27+ try {
28+ await setRepoMergeMode ( expectedMode ) ;
29+ Log . info ( `${ green ( '✔' ) } Successfuly set merge-mode to ${ expectedMode } ` ) ;
30+ return true ;
31+ } catch ( err ) {
32+ Log . info ( `${ red ( '✘' ) } Failed to update merge-mode` ) ;
33+ Log . info ( err ) ;
34+ return false ;
35+ }
36+ }
37+ // User chose not to reset merge-mode
38+ Log . info ( 'Aborting...' ) ;
39+ return false ;
40+ }
You can’t perform that action at this time.
0 commit comments