Symlinks now show the target they are pointing to

This commit is contained in:
Guilleag01
2023-11-10 08:07:04 +01:00
parent b9147c007c
commit bdf1b21bb0
3 changed files with 22 additions and 9 deletions

View File

@@ -1,2 +1,2 @@
# lsplus # lsplus
A better ls for linux systems, writter in rust A better ls for linux systems, written in rust

View File

@@ -1,4 +1,10 @@
use std::{fmt::Display, fs, os::unix::prelude::FileTypeExt, path::Path, time::SystemTime}; use std::{
fmt::Display,
fs::{self, read_link},
os::unix::prelude::FileTypeExt,
path::Path,
time::SystemTime,
};
use crate::utils::get_icon_file_type; use crate::utils::get_icon_file_type;
@@ -44,15 +50,22 @@ impl Element {
t = TypeOfFile::File; t = TypeOfFile::File;
} }
let mut name = path_built
.file_name()
.unwrap()
.to_str()
.unwrap()
.to_string();
if symlink_metadata.is_symlink() {
name.push_str(" -> ");
name.push_str(read_link(path_built).unwrap().to_str().unwrap())
}
Self { Self {
path: path_str.to_string(), path: path_str.to_string(),
file_type: t, file_type: t,
name: path_built name,
.file_name()
.unwrap()
.to_str()
.unwrap()
.to_string(),
perms: metadata.permissions(), perms: metadata.permissions(),
size: metadata.len(), size: metadata.len(),
creation: metadata.created().unwrap(), creation: metadata.created().unwrap(),

View File

@@ -5,7 +5,7 @@ pub fn list(mut elements: Vec<Element>) {
elements.sort_unstable_by_key(|a: &Element| a.get_name()); elements.sort_unstable_by_key(|a: &Element| a.get_name());
let width = term_size::dimensions().unwrap().0; let width = term_size::dimensions().unwrap().0;
// ╭──────────────╼ File name ╾──────────────┬─╼ Size ╾─┬──╼ Creation ╾──╮ // ╭──────────────╼ File name ╾──────────────┬─╼ Size ╾─┬──╼ Creation ╾──╮
// │ // │ some_example_file420.69 G │ 01-01-70 00:00
// ╰─────────────────────────────────────────┴──────────┴────────────────╯ // ╰─────────────────────────────────────────┴──────────┴────────────────╯
let mut name_max_len = 0; let mut name_max_len = 0;
for e in &elements { for e in &elements {