use std::io::{self, stdout};
use std::process;
use crossterm::{
event::{read, Event, KeyCode},
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
ExecutableCommand,
};
use ratatui::prelude::*;
use fpicker::{FileExplorer, Theme};
fn main() -> io::Result<()> {
enable_raw_mode()?;
stdout().execute(EnterAlternateScreen)?;
let mut terminal = Terminal::new(CrosstermBackend::new(stdout()))?;
let theme = Theme::default().add_default_title();
let mut file_explorer = FileExplorer::with_theme(theme)?;
let mut selected_paths = vec![];
loop {
terminal.draw(|f| {
f.render_widget(&file_explorer.widget(), f.area());
})?;
let event = read()?;
if let Event::Key(key) = event {
if key.code == KeyCode::Char('q') {
selected_paths = file_explorer
.selected_files()
.iter()
.map(|file| file.path().display().to_string())
.collect();
break;
}
}
file_explorer.handle(&event)?;
}
disable_raw_mode()?;
stdout().execute(LeaveAlternateScreen)?;
for path in selected_paths {
println!("{}", path);
}
process::exit(0);
}