ea_command/commands/
list.rs1use atty;
2use crate::archive;
3use crate::Location;
4
5fn colored_location(index: &usize, location: &Location) -> String {
6 let mut output = format!("[\x1b[0m\x1b[31m{}\x1b[0m] {}", index + 1, location.path);
7
8 if let Some(line_number) = location.line {
9 output = format!("{}\x1b[2m:\x1b[0m\x1b[32m{}\x1b[0m", output, &line_number);
10 if let Some(column_number) = location.column {
11 output = format!("{}\x1b[2m:{}\x1b[0m", output, column_number);
12 }
13 }
14
15 output
16}
17
18fn uncolored_location(index: &usize, location: &Location) -> String {
19 let mut output = format!("[{}] {}", index + 1, location.path);
20 if let Some(line_number) = location.line {
21 output = format!("{}:{}", output, &line_number);
22 if let Some(column_number) = location.column {
23 output = format!("{}:{}", output, column_number);
24 }
25 }
26
27 output
28}
29
30pub fn list() {
31 for (idx, location) in archive::read().iter().enumerate() {
32 if atty::is(atty::Stream::Stdout) {
33 println!("{}", colored_location(&idx, location));
34 } else {
35 println!("{}", uncolored_location(&idx, location));
36 }
37 }
38}