From dc9668c8d6a896d19cf714d290fb65cb71058d92 Mon Sep 17 00:00:00 2001 From: Ben S Date: Sat, 3 May 2014 11:30:37 +0100 Subject: [PATCH] Initial commit --- .gitignore | 2 ++ colours.rs | 86 +++++++++++++++++++++++++++++++++++++++++++++++++ exa.rs | 86 +++++++++++++++++++++++++++++++++++++++++++++++++ screenshot.png | Bin 0 -> 48869 bytes 4 files changed, 174 insertions(+) create mode 100644 .gitignore create mode 100644 colours.rs create mode 100644 exa.rs create mode 100644 screenshot.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2c76ef6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +exa +*~ diff --git a/colours.rs b/colours.rs new file mode 100644 index 0000000..bf89287 --- /dev/null +++ b/colours.rs @@ -0,0 +1,86 @@ +#![allow(dead_code)] + +pub enum Colour { + Black = 30, Red = 31, Green = 32, Yellow = 33, Blue = 34, Purple = 35, Cyan = 36, White = 37, +} + +pub enum Style { + Plain, + Foreground(Colour), + Style(StyleStruct), +} + +struct StyleStruct { + foreground: Colour, + background: Option, + bold: bool, + underline: bool, +} + +impl Style { + pub fn paint(&self, input: ~str) -> ~str { + match *self { + Plain => input, + Foreground(c) => c.paint(input), + Style(s) => match s { + StyleStruct { foreground, background, bold, underline } => { + let bg: ~str = match background { + Some(c) => format!("{};", c as int + 10), + None => ~"", + }; + let bo: ~str = if bold { ~"1;" } else { ~"" }; + let un: ~str = if underline { ~"4;" } else { ~"" }; + format!("\x1B[{}{}{}{}m{}\x1B[0m", bo, un, bg, foreground as int, input) + } + } + } + } +} + +impl Style { + pub fn bold(&self) -> Style { + match *self { + Plain => Style(StyleStruct { foreground: White, background: None, bold: true, underline: false }), + Foreground(c) => Style(StyleStruct { foreground: c, background: None, bold: true, underline: false }), + Style(st) => Style(StyleStruct { foreground: st.foreground, background: st.background, bold: true, underline: false }), + } + } + + pub fn underline(&self) -> Style { + match *self { + Plain => Style(StyleStruct { foreground: White, background: None, bold: false, underline: true }), + Foreground(c) => Style(StyleStruct { foreground: c, background: None, bold: false, underline: true }), + Style(st) => Style(StyleStruct { foreground: st.foreground, background: st.background, bold: false, underline: true }), + } + } + + pub fn on(&self, background: Colour) -> Style { + match *self { + Plain => Style(StyleStruct { foreground: White, background: Some(background), bold: false, underline: false }), + Foreground(c) => Style(StyleStruct { foreground: c, background: Some(background), bold: false, underline: false }), + Style(st) => Style(StyleStruct { foreground: st.foreground, background: Some(background), bold: false, underline: false }), + } + } +} + +impl Colour { + pub fn paint(&self, input: &str) -> ~str { + format!("\x1B[{}m{}\x1B[0m", *self as int, input) + } + + pub fn underline(&self) -> Style { + Style(StyleStruct { foreground: *self, background: None, bold: false, underline: true }) + } + + pub fn bold(&self) -> Style { + Style(StyleStruct { foreground: *self, background: None, bold: true, underline: false }) + } + + pub fn normal(&self) -> Style { + Style(StyleStruct { foreground: *self, background: None, bold: false, underline: false }) + } + + pub fn on(&self, background: Colour) -> Style { + Style(StyleStruct { foreground: *self, background: Some(background), bold: false, underline: false }) + } +} diff --git a/exa.rs b/exa.rs new file mode 100644 index 0000000..4e9fecf --- /dev/null +++ b/exa.rs @@ -0,0 +1,86 @@ +use std::io::fs; +use std::io; +use std::os; + +use colours::{Plain, Style, Black, Red, Green, Yellow, Blue, Purple, Cyan}; +mod colours; + +fn main() { + match os::args().as_slice() { + [] => unreachable!(), + [_] => { list(Path::new(".")) }, + [_, ref p] => { list(Path::new(p.as_slice())) }, + _ => { fail!("args?") }, + } +} + +fn list(path: Path) { + let mut files = match fs::readdir(&path) { + Ok(files) => files, + Err(e) => fail!("readdir: {}", e), + }; + files.sort_by(|a, b| a.filename_str().cmp(&b.filename_str())); + for file in files.iter() { + let filename: &str = file.filename_str().unwrap(); + + // We have to use lstat here instad of file.stat(), as it + // doesn't follow symbolic links. Otherwise, the stat() call + // will fail if it encounters a link that's target is + // non-existent. + let stat: io::FileStat = match fs::lstat(file) { + Ok(stat) => stat, + Err(e) => fail!("Couldn't stat {}: {}", filename, e), + }; + + let colour = file_colour(&stat, filename); + + println!("{} {}", perm_str(&stat), colour.paint(filename.to_owned())); + } +} + +fn file_colour(stat: &io::FileStat, filename: &str) -> Style { + if stat.kind == io::TypeDirectory { + Blue.normal() + } else if stat.perm & io::UserExecute == io::UserExecute { + Green.normal() + } else if filename.ends_with("~") { + Black.bold() + } else { + Plain + } +} + +fn perm_str(stat: &io::FileStat) -> ~str { + let bits = stat.perm; + return format!("{}{}{}{}{}{}{}{}{}{}", + type_char(stat.kind), + bit(bits, io::UserRead, ~"r", Yellow.bold()), + bit(bits, io::UserWrite, ~"w", Red.bold()), + bit(bits, io::UserExecute, ~"x", Green.bold().underline()), + bit(bits, io::GroupRead, ~"r", Yellow.normal()), + bit(bits, io::GroupWrite, ~"w", Red.normal()), + bit(bits, io::GroupExecute, ~"x", Green.normal()), + bit(bits, io::OtherRead, ~"r", Yellow.normal()), + bit(bits, io::OtherWrite, ~"w", Red.normal()), + bit(bits, io::OtherExecute, ~"x", Green.normal()), + ); +} + +fn bit(bits: u32, bit: u32, other: ~str, style: Style) -> ~str { + if bits & bit == bit { + style.paint(other) + } else { + Black.bold().paint(~"-") + } +} + +fn type_char(t: io::FileType) -> ~str { + return match t { + io::TypeFile => ~".", + io::TypeDirectory => Blue.paint("d"), + io::TypeNamedPipe => Yellow.paint("|"), + io::TypeBlockSpecial => Purple.paint("s"), + io::TypeSymlink => Cyan.paint("l"), + _ => ~"?", + } +} diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..9a6e296ead914621a45e523203941a9693bdaeb5 GIT binary patch literal 48869 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