|
|
@@ -71,18 +71,25 @@ impl Colours {
|
|
|
}
|
|
|
|
|
|
let scale = matches.has_where(|f| f.matches(&flags::COLOR_SCALE) || f.matches(&flags::COLOUR_SCALE))?;
|
|
|
- let mut c = Colours::colourful(scale.is_some());
|
|
|
+ let mut colours = Colours::colourful(scale.is_some());
|
|
|
|
|
|
if let Some(lsc) = vars.get("LS_COLORS") {
|
|
|
let lsc = lsc.to_string_lossy();
|
|
|
let lsc = LSColors::parse(lsc.as_ref());
|
|
|
|
|
|
- if let Some(dir) = lsc.get("di") {
|
|
|
- c.filekinds.directory = dir;
|
|
|
- }
|
|
|
+ if let Some(c) = lsc.get("di") { colours.filekinds.directory = c; }
|
|
|
+ if let Some(c) = lsc.get("ex") { colours.filekinds.executable = c; }
|
|
|
+ if let Some(c) = lsc.get("fi") { colours.filekinds.normal = c; }
|
|
|
+ if let Some(c) = lsc.get("pi") { colours.filekinds.pipe = c; }
|
|
|
+ if let Some(c) = lsc.get("so") { colours.filekinds.socket = c; }
|
|
|
+ if let Some(c) = lsc.get("bd") { colours.filekinds.device = c; }
|
|
|
+ if let Some(c) = lsc.get("cd") { colours.filekinds.device = c; }
|
|
|
+ if let Some(c) = lsc.get("ln") { colours.filekinds.symlink = c; }
|
|
|
+ if let Some(c) = lsc.get("or") { colours.broken_arrow = c; }
|
|
|
+ if let Some(c) = lsc.get("mi") { colours.broken_filename = c; }
|
|
|
}
|
|
|
|
|
|
- Ok(c)
|
|
|
+ Ok(colours)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -270,5 +277,14 @@ mod customs_test {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- test!(override_1: ls "di=34", exa "" => |c: &mut Colours| { c.filekinds.directory = Blue.normal(); });
|
|
|
+ test!(ls_di: ls "di=31", exa "" => |c: &mut Colours| { c.filekinds.directory = Red.normal(); }); // Directory
|
|
|
+ test!(ls_ex: ls "ex=32", exa "" => |c: &mut Colours| { c.filekinds.executable = Green.normal(); }); // Executable file
|
|
|
+ test!(ls_fi: ls "fi=33", exa "" => |c: &mut Colours| { c.filekinds.normal = Yellow.normal(); }); // Regular file
|
|
|
+ test!(ls_pi: ls "pi=34", exa "" => |c: &mut Colours| { c.filekinds.pipe = Blue.normal(); }); // FIFO
|
|
|
+ test!(ls_so: ls "so=35", exa "" => |c: &mut Colours| { c.filekinds.socket = Purple.normal(); }); // Socket
|
|
|
+ test!(ls_bd: ls "bd=36", exa "" => |c: &mut Colours| { c.filekinds.device = Cyan.normal(); }); // Block device
|
|
|
+ test!(ls_cd: ls "cd=35", exa "" => |c: &mut Colours| { c.filekinds.device = Purple.normal(); }); // Character device
|
|
|
+ test!(ls_ln: ls "ln=34", exa "" => |c: &mut Colours| { c.filekinds.symlink = Blue.normal(); }); // Symlink
|
|
|
+ test!(ls_or: ls "or=33", exa "" => |c: &mut Colours| { c.broken_arrow = Yellow.normal(); }); // Broken link
|
|
|
+ test!(ls_mi: ls "mi=32", exa "" => |c: &mut Colours| { c.broken_filename = Green.normal(); }); // Broken link target
|
|
|
}
|