1extern crate skim;
2use skim::{prelude::*, reader::CommandCollector};
3
4pub fn main() {
5 env_logger::init();
6
7 let glogm = Some(String::from("git log --oneline --color=always | head -n10"));
8
9 let options = SkimOptionsBuilder::default()
10 .height(String::from("50%"))
11 .cmd(glogm)
12 .preview(Some(String::from("echo {}")))
13 .multi(true)
14 .reverse(true)
15 .cmd_collector(Rc::new(RefCell::new(SkimItemReader::new(
16 SkimItemReaderOption::default().ansi(true),
17 ))) as Rc<RefCell<dyn CommandCollector>>)
18 .build()
19 .unwrap();
20
21 log::debug!("Options: ansi {}", options.ansi);
22
23 let selected_items = Skim::run_with(options, None)
24 .map(|out| out.selected_items)
25 .unwrap_or_default();
26
27 for item in selected_items.iter() {
28 print!("selected: {}{}", item.output(), "\n");
29 }
30}