diff options
Diffstat (limited to 'src/output/colours.rs')
-rw-r--r-- | src/output/colours.rs | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/src/output/colours.rs b/src/output/colours.rs new file mode 100644 index 0000000..97ccd87 --- /dev/null +++ b/src/output/colours.rs @@ -0,0 +1,166 @@ +use ansi_term::Style; +use ansi_term::Colour::{Red, Green, Yellow, Blue, Cyan, Purple, Fixed}; + + +#[derive(Clone, Copy, Debug, Default, PartialEq)] +pub struct Colours { + pub filetypes: FileTypes, + pub perms: Permissions, + pub size: Size, + pub users: Users, + pub links: Links, + pub git: Git, + + pub punctuation: Style, + pub date: Style, + pub inode: Style, + pub blocks: Style, + pub header: Style, + + pub symlink_path: Style, + pub broken_arrow: Style, + pub broken_filename: Style, +} + +#[derive(Clone, Copy, Debug, Default, PartialEq)] +pub struct FileTypes { + pub normal: Style, + pub directory: Style, + pub symlink: Style, + pub special: Style, + pub executable: Style, + pub image: Style, + pub video: Style, + pub music: Style, + pub lossless: Style, + pub crypto: Style, + pub document: Style, + pub compressed: Style, + pub temp: Style, + pub immediate: Style, + pub compiled: Style, +} + +#[derive(Clone, Copy, Debug, Default, PartialEq)] +pub struct Permissions { + pub user_read: Style, + pub user_write: Style, + pub user_execute_file: Style, + pub user_execute_other: Style, + + pub group_read: Style, + pub group_write: Style, + pub group_execute: Style, + + pub other_read: Style, + pub other_write: Style, + pub other_execute: Style, + + pub attribute: Style, +} + +#[derive(Clone, Copy, Debug, Default, PartialEq)] +pub struct Size { + pub numbers: Style, + pub unit: Style, +} + +#[derive(Clone, Copy, Debug, Default, PartialEq)] +pub struct Users { + pub user_you: Style, + pub user_someone_else: Style, + pub group_yours: Style, + pub group_not_yours: Style, +} + +#[derive(Clone, Copy, Debug, Default, PartialEq)] +pub struct Links { + pub normal: Style, + pub multi_link_file: Style, +} + +#[derive(Clone, Copy, Debug, Default, PartialEq)] +pub struct Git { + pub new: Style, + pub modified: Style, + pub deleted: Style, + pub renamed: Style, + pub typechange: Style, +} + +impl Colours { + pub fn plain() -> Colours { + Colours::default() + } + + pub fn colourful() -> Colours { + Colours { + filetypes: FileTypes { + normal: Style::default(), + directory: Blue.bold(), + symlink: Cyan.normal(), + special: Yellow.normal(), + executable: Green.bold(), + image: Fixed(133).normal(), + video: Fixed(135).normal(), + music: Fixed(92).normal(), + lossless: Fixed(93).normal(), + crypto: Fixed(109).normal(), + document: Fixed(105).normal(), + compressed: Red.normal(), + temp: Fixed(244).normal(), + immediate: Yellow.bold().underline(), + compiled: Fixed(137).normal(), + }, + + perms: Permissions { + user_read: Yellow.bold(), + user_write: Red.bold(), + user_execute_file: Green.bold().underline(), + user_execute_other: Green.bold(), + group_read: Yellow.normal(), + group_write: Red.normal(), + group_execute: Green.normal(), + other_read: Yellow.normal(), + other_write: Red.normal(), + other_execute: Green.normal(), + attribute: Style::default(), + }, + + size: Size { + numbers: Green.bold(), + unit: Green.normal(), + }, + + users: Users { + user_you: Yellow.bold(), + user_someone_else: Style::default(), + group_yours: Yellow.bold(), + group_not_yours: Style::default(), + }, + + links: Links { + normal: Red.bold(), + multi_link_file: Red.on(Yellow), + }, + + git: Git { + new: Green.normal(), + modified: Blue.normal(), + deleted: Red.normal(), + renamed: Yellow.normal(), + typechange: Purple.normal(), + }, + + punctuation: Fixed(244).normal(), + date: Blue.normal(), + inode: Purple.normal(), + blocks: Cyan.normal(), + header: Style::default().underline(), + + symlink_path: Cyan.normal(), + broken_arrow: Red.normal(), + broken_filename: Red.underline() + } + } +} |