From 2f3751f968cc242cd1220738aa3585be755e3694 Mon Sep 17 00:00:00 2001 From: Thomas Forgione Date: Fri, 12 Jul 2019 15:23:03 +0200 Subject: [PATCH] Initial commit --- .gitignore | 2 ++ Cargo.lock | 6 ++++++ Cargo.toml | 9 +++++++++ src/lib.rs | 19 +++++++++++++++++++ src/logos/archlinux.rs | 20 ++++++++++++++++++++ src/logos/mod.rs | 1 + src/main.rs | 32 ++++++++++++++++++++++++++++++++ 7 files changed, 89 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 src/lib.rs create mode 100644 src/logos/archlinux.rs create mode 100644 src/logos/mod.rs create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..53eaa21 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +**/*.rs.bk diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..bfec4fc --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,6 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "tfetch" +version = "0.1.0" + diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..f5e3ec0 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "tfetch" +version = "0.1.0" +authors = ["Thomas Forgione "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..e642991 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,19 @@ +pub mod logos; + +pub enum Os { + ArchLinux, +} + +impl Os { + pub fn ascii_logo(self) -> &'static str { + match self { + Os::ArchLinux => logos::archlinux::ASCII_LOGO, + } + } + + pub fn name(self) -> &'static str { + match self { + Os::ArchLinux => "Arch Linux", + } + } +} diff --git a/src/logos/archlinux.rs b/src/logos/archlinux.rs new file mode 100644 index 0000000..47283f4 --- /dev/null +++ b/src/logos/archlinux.rs @@ -0,0 +1,20 @@ +pub const ASCII_LOGO: &'static str = " \x1B[36;1m-`\x1B[0m \ +\n \x1B[36;1m.o+`\x1B[0m \ +\n \x1B[36;1m`ooo/\x1B[0m \ +\n \x1B[36;1m`+oooo:\x1B[0m \ +\n \x1B[36;1m`+oooooo:\x1B[0m \ +\n \x1B[36;1m-+oooooo+:\x1B[0m \ +\n \x1B[36;1m`/:-:++oooo+:\x1B[0m \ +\n \x1B[36;1m`/++++/+++++++:\x1B[0m \ +\n \x1B[36;1m`/++++++++++++++:\x1B[0m \ +\n \x1B[36;1m`/+++o\x1B[0;36moooooooo\x1B[1moooo/`\x1B[0m \ +\n \x1B[36;1m./\x1B[0;36mooosssso++osssssso\x1B[1m+`\x1B[0m \ +\n \x1B[36m.oossssso-````/ossssss+`\x1B[0m \ +\n \x1B[36m-osssssso. :ssssssso.\x1B[0m \ +\n \x1B[36m:osssssss/ osssso+++.\x1B[0m \ +\n \x1B[36m/ossssssss/ +ssssooo/-\x1B[0m \ +\n \x1B[36m`/ossssso+/:- -:/+osssso+-\x1B[0m \ +\n \x1B[36m`+sso+:-` `.-/+oso:\x1B[0m \ +\n\x1B[36m`++:. `-/+/\x1B[0m\ +\n\x1B[36m.` `/\x1B[0m"; + diff --git a/src/logos/mod.rs b/src/logos/mod.rs new file mode 100644 index 0000000..cb334e4 --- /dev/null +++ b/src/logos/mod.rs @@ -0,0 +1 @@ +pub mod archlinux; diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..2bb9eb8 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,32 @@ +use std::env::var; +use std::fs::File; +use std::io::Read; + +use tfetch::Os; + +pub fn main() { + + let mut hostname = String::new(); + let mut hostname_file = File::open("/etc/hostname").unwrap(); + hostname_file.read_to_string(&mut hostname).unwrap(); + + let username = format!("\x1B[36;1m{}\x1B[0m@\x1B[36;1m{}\x1B[0m", var("USER").unwrap(), hostname); + let osname = format!("\x1B[36;1mOS:\x1B[0m {}\n", Os::ArchLinux.name()); + + let info = [ + String::from("\n"), + username, + osname, + ]; + + let mut logo_iterator = Os::ArchLinux.ascii_logo().lines(); + let mut info_iterator = info.iter(); + + loop { + match (logo_iterator.next(), info_iterator.next()) { + (Some(logo), Some(info)) => print!("{} {}", logo, info), + (Some(logo), None) => println!("{}", logo), + _ => break, + } + } +}