feat: Add --skip-confirmation flag

This commit is contained in:
Jeevitha Kannan K S 2024-10-15 22:18:37 +05:30
parent 79eb752552
commit a5e24a7148
No known key found for this signature in database
GPG Key ID: 5904C34A2F7CE333
2 changed files with 21 additions and 9 deletions

View File

@ -30,6 +30,12 @@ struct Args {
#[arg(default_value_t = Theme::Default)]
#[arg(help = "Set the theme to use in the application")]
theme: Theme,
#[arg(
short = 'y',
long,
help = "Skip confirmation prompt before executing commands"
)]
skip_confirmation: bool,
#[arg(long, default_value_t = false)]
#[clap(help = "Show all available options, disregarding compatibility checks (UNSAFE)")]
override_validation: bool,
@ -38,7 +44,7 @@ struct Args {
fn main() -> io::Result<()> {
let args = Args::parse();
let mut state = AppState::new(args.theme, args.override_validation);
let mut state = AppState::new(args.theme, args.override_validation, args.skip_confirmation);
stdout().execute(EnterAlternateScreen)?;
enable_raw_mode()?;

View File

@ -62,6 +62,7 @@ pub struct AppState {
drawable: bool,
#[cfg(feature = "tips")]
tip: &'static str,
skip_confirmation: bool,
}
pub enum Focus {
@ -79,7 +80,7 @@ pub struct ListEntry {
}
impl AppState {
pub fn new(theme: Theme, override_validation: bool) -> Self {
pub fn new(theme: Theme, override_validation: bool, skip_confirmation: bool) -> Self {
let (temp_dir, tabs) = linutil_core::get_tabs(!override_validation);
let root_id = tabs[0].tree.root().id();
@ -97,6 +98,7 @@ impl AppState {
drawable: false,
#[cfg(feature = "tips")]
tip: get_random_tip(),
skip_confirmation,
};
state.update_items();
@ -678,6 +680,9 @@ impl AppState {
}
}
if self.skip_confirmation {
self.handle_confirm_command();
} else {
let cmd_names = self
.selected_commands
.iter()
@ -686,6 +691,7 @@ impl AppState {
let prompt = ConfirmPrompt::new(&cmd_names[..]);
self.focus = Focus::ConfirmationPrompt(Float::new(Box::new(prompt), 40, 40));
}
} else {
self.go_to_selected_dir();
}