@@ -9,11 +9,12 @@ use rc_core::{Error, Result};
99use serde:: Serialize ;
1010use serde_json:: Value ;
1111use std:: fs:: File ;
12- use std:: io:: { BufRead , IsTerminal , Read , Write } ;
12+ use std:: io:: Read ;
1313use std:: path:: { Path , PathBuf } ;
1414use zeroize:: Zeroizing ;
1515
1616use super :: { emit_observability_error, get_admin_client} ;
17+ use crate :: confirm:: { Confirmation , confirm} ;
1718use crate :: exit_code:: ExitCode ;
1819use crate :: output:: Formatter ;
1920
@@ -554,35 +555,19 @@ async fn prepare_and_delete(
554555}
555556
556557fn confirm_delete ( provider : & OidcProvider , yes : bool , formatter : & Formatter ) -> Result < ( ) > {
557- if yes {
558- return Ok ( ( ) ) ;
559- }
560- if formatter. is_json ( ) || !std:: io:: stdin ( ) . is_terminal ( ) {
561- return Err ( Error :: InvalidPath (
562- "OIDC provider deletion requires --yes in non-interactive or JSON mode" . to_string ( ) ,
563- ) ) ;
564- }
565-
566- let mut stderr = std:: io:: stderr ( ) . lock ( ) ;
567- write ! (
568- stderr,
569- "Delete OIDC provider '{}'? [y/N] " ,
558+ let prompt = format ! (
559+ "Delete OIDC provider '{}'? [y/N]" ,
570560 safe( & provider. provider_id, formatter)
561+ ) ;
562+ confirm (
563+ & Confirmation {
564+ prompt : & prompt,
565+ requires_yes : "OIDC provider deletion requires --yes in non-interactive or JSON mode" ,
566+ declined : "OIDC provider deletion was declined" ,
567+ } ,
568+ yes,
569+ formatter,
571570 )
572- . map_err ( Error :: Io ) ?;
573- stderr. flush ( ) . map_err ( Error :: Io ) ?;
574- let mut answer = String :: new ( ) ;
575- std:: io:: stdin ( )
576- . lock ( )
577- . read_line ( & mut answer)
578- . map_err ( Error :: Io ) ?;
579- if matches ! ( answer. trim( ) . to_ascii_lowercase( ) . as_str( ) , "y" | "yes" ) {
580- Ok ( ( ) )
581- } else {
582- Err ( Error :: Interrupted (
583- "OIDC provider deletion was declined" . to_string ( ) ,
584- ) )
585- }
586571}
587572
588573async fn prepare_and_apply_mutation (
0 commit comments