feat: 🎸 Kernel

This commit is contained in:
Atsukoro1 2022-12-01 12:38:31 +01:00
parent 028330ab92
commit 2858d3a7d8
7 changed files with 89 additions and 25 deletions

31
ponies/celestia.txt Normal file
View file

@ -0,0 +1,31 @@
,'/
. / ___
___/\ / /'`_ `'.
__ _ .-' :v :u/ /-'` \ )
.-'`` \` \ .'.') ) /\ / / : |
.'` .--. ) .)/ / /-'__\// / | |
.'` .-'` .| .'.|: @_-'`` \ \/\..--. | ( _.-._
,' .'` |' | |'| ( /. '-.__\ ) ( `''.-'` `.
.'.-` | .| | | \ ) \__. | | `---`` )
.' (_.' | |'.| | ('` ,_ `. : .--. /
.' / . | | |' ( \ `\-.-' \ .-'` | \
- . (_.-' | | | \ |\ \ __ `` | `''--.,
.` .' . / / | | : \| `-._ \.'` '. .--. `-..-'``'. )
'-'/ / ( / | : ( |'-, `-.)\ \ .' ) __ ) )
/ / /``( .' ( ( '..-':' `-, A ) \_.' (_ .---: )| /
/ / / '`' . \ '---''` \ V )`-. .-` '.((( |
' / / / `'`(_. `'' .'` )-' `-..___..-'` \ ``.' |
( / / / / / / / ,'-` | | \ ''` |
'`/ / / / / /.''`.' | : \ |
/ / / / /`-' / ..---. | '. \ |
( // / /(_/ _ /. . , )/|. '. \ |
`-'( / / .-'` ( -(_)- / '| '. (\ |
`-'`--' /` \' ' ` .' |. ('.` \ ,.---. |
(_ `--''`````\ '| .-` \.-'`_ \ |
/ ___ / '..''``''`` `\ . |
(``''''`` \ `--'` \ | ..--. |
\ (__,..-'` ___ ( '\ .-`__\ \ .--. |
'-..----.., ,.-'`` `-. \__.'''` ,' ``--`` '.' |
\ .-'` __ .--.-''. .-'``''` |
\.-'` .-' `\`'`.'` \_.-' |
'.__________.-'` `'`

10
src/helpers/file.rs Normal file
View file

@ -0,0 +1,10 @@
use std::{fs::File, io::Read};
pub fn file_open(path: &str) -> String {
let mut temp_buf: String = String::new();
let mut file = File::open(path).unwrap();
file.read_to_string(&mut temp_buf).unwrap();
temp_buf
}

1
src/helpers/mod.rs Normal file
View file

@ -0,0 +1 @@
pub mod file;

View file

@ -1,5 +1,6 @@
mod helpers;
mod system; mod system;
fn main() { fn main() {
println!("{}", system::host::get_shell()); println!("{}", system::specs::get_kernel());
} }

View file

@ -1,13 +1,10 @@
use crate::helpers::file::file_open;
use std::{fs::File, io::Read}; use std::{fs::File, io::Read};
use std::process::Command; use std::process::Command;
#[cfg(target_os = "linux")] #[cfg(target_os = "linux")]
pub fn get_hostname() -> String { pub fn get_hostname() -> String {
let mut hostname = String::new(); let mut hostname = file_open("/etc/hostname");
let mut f = File::open("/etc/hostname").unwrap();
f.read_to_string(&mut hostname).unwrap();
hostname.pop(); hostname.pop();
hostname hostname
@ -63,12 +60,12 @@ pub fn get_distro() -> String {
#[cfg(target_os = "linux")] #[cfg(target_os = "linux")]
pub fn get_uptime() -> String { pub fn get_uptime() -> String {
let mut temp_buf: String = String::new(); let mut temp_buf: String = file_open("/proc/uptime");
let mut file = File::open("/proc/uptime").unwrap(); let uptime: u128 = temp_buf.split(".")
file.read_to_string(&mut temp_buf).unwrap(); .collect::<Vec<&str>>()[0]
.parse()
let uptime: u128 = temp_buf.split(".").collect::<Vec<&str>>()[0].parse().unwrap(); .unwrap();
let days = uptime / 86400; let days = uptime / 86400;
let hours = (uptime % 86400) / 3600; let hours = (uptime % 86400) / 3600;
@ -80,11 +77,8 @@ pub fn get_uptime() -> String {
#[cfg(target_os = "linux")] #[cfg(target_os = "linux")]
pub fn get_shell() -> String { pub fn get_shell() -> String {
let temp_buf: String = file_open("/etc/passwd");
let mut final_str = String::new(); let mut final_str = String::new();
let mut temp_buf: String = String::new();
let mut f = File::open("/etc/passwd").unwrap();
f.read_to_string(&mut temp_buf).unwrap();
let lines: &Vec<&str> = &temp_buf.lines().collect(); let lines: &Vec<&str> = &temp_buf.lines().collect();
@ -96,5 +90,28 @@ pub fn get_shell() -> String {
} }
}); });
final_str
}
#[cfg(target_os = "linux")]
pub fn get_resolution() -> String {
let mut final_str = String::new();
let output = Command::new("xrandr")
.output()
.expect("Failed to execute xrandr");
let output = String::from_utf8(output.stdout).unwrap();
let lines: &Vec<&str> = &output.lines().collect();
lines.into_iter().for_each(|line| {
if line.contains(" connected") {
final_str = line.split(" ")
.collect::<Vec<&str>>()[2]
.to_string();
}
});
final_str final_str
} }

View file

@ -1,4 +1,3 @@
use std::{fs::File, io::Read};
use std::process::Command; use std::process::Command;
use std::sync::Mutex; use std::sync::Mutex;
@ -6,12 +5,10 @@ use std::sync::Mutex;
pub fn get_ipaddr() -> String { pub fn get_ipaddr() -> String {
use std::ops::Add; use std::ops::Add;
let mut final_str: Mutex<String> = Mutex::new(String::new()); use crate::helpers::file::file_open;
let mut f = File::open("/proc/net/route").unwrap(); let final_str: Mutex<String> = Mutex::new(String::new());
let mut intr = String::new(); let intr = file_open("/proc/net/route");
f.read_to_string(&mut intr).unwrap();
let lines: &Vec<&str> = &intr.lines().collect(); let lines: &Vec<&str> = &intr.lines().collect();
let mut interface = String::new(); let mut interface = String::new();

View file

@ -1,3 +1,4 @@
use crate::helpers::file::file_open;
use std::fs::File; use std::fs::File;
use std::io::Read; use std::io::Read;
use std::rc::Rc; use std::rc::Rc;
@ -27,10 +28,7 @@ pub fn get_cpu() -> String {
#[cfg(target_os = "linux")] #[cfg(target_os = "linux")]
pub fn get_ram_used() -> String { pub fn get_ram_used() -> String {
let mut temp_buf: String = String::new(); let temp_buf: String = file_open("/proc/meminfo");
let mut file = File::open("/proc/meminfo").unwrap();
file.read_to_string(&mut temp_buf).unwrap();
let lines: &Vec<&str> = &temp_buf.lines().collect(); let lines: &Vec<&str> = &temp_buf.lines().collect();
@ -63,4 +61,13 @@ fn eval_ram(line: String) -> u128 {
.unwrap(); .unwrap();
(kbs / 1000) (kbs / 1000)
}
#[cfg(target_os = "linux")]
pub fn get_kernel() -> String {
let temp_buf: String = file_open("/proc/version");
temp_buf.split(" ")
.collect::<Vec<&str>>()[2]
.to_string()
} }