Made uid and gid nil on Windows and added ownership option for linemode

This commit is contained in:
AidanV 2024-06-30 18:37:14 -04:00 committed by sxyazi
parent 3c88edbc4d
commit 5501436953
No known key found for this signature in database
3 changed files with 24 additions and 4 deletions

View File

@ -88,6 +88,7 @@ keymap = [
{ on = [ "m", "s" ], run = "linemode size", desc = "Set linemode to size" },
{ on = [ "m", "p" ], run = "linemode permissions", desc = "Set linemode to permissions" },
{ on = [ "m", "m" ], run = "linemode mtime", desc = "Set linemode to mtime" },
{ on = [ "m", "o" ], run = "linemode owner", desc = "Set linemode to owner" },
{ on = [ "m", "n" ], run = "linemode none", desc = "Set linemode to none" },
# Copy

View File

@ -21,6 +21,14 @@ function Folder:linemode(area, files)
spans[#spans + 1] = ui.Span(time and os.date("%y-%m-%d %H:%M", time // 1) or "")
elseif mode == "permissions" then
spans[#spans + 1] = ui.Span(f.cha:permissions() or "")
elseif mode == "owner" then
if f.cha.uid and f.cha.gid then
local user = ya.user_name(f.cha.uid)
local group = ya.user_name(f.cha.uid)
if user and group then
spans[#spans + 1] = ui.Span(user .. ":" .. group)
end
end
end
spans[#spans + 1] = ui.Span(" ")

View File

@ -1,6 +1,6 @@
use std::time::{Duration, SystemTime, UNIX_EPOCH};
use mlua::{AnyUserData, ExternalError, Lua, Table, UserDataFields, UserDataMethods, UserDataRef};
use mlua::{AnyUserData, ExternalError, Lua, Table, UserDataFields, UserDataMethods, UserDataRef, Value::Nil};
use yazi_shared::fs::ChaKind;
use crate::bindings::Cast;
@ -23,10 +23,20 @@ impl Cha {
reg.add_field_method_get("is_exec", |_, me| Ok(me.is_exec()));
reg.add_field_method_get("is_sticky", |_, me| Ok(me.is_sticky()));
#[cfg(unix)]
#[allow(unused_variables)]
{
reg.add_field_method_get("uid", |_, me| Ok(me.uid));
reg.add_field_method_get("gid", |_, me| Ok(me.gid));
reg.add_field_method_get("uid", |_, me| {
#[cfg(unix)]
return Ok(me.uid);
#[cfg(windows)]
return Ok(Nil);
});
reg.add_field_method_get("gid", |_, me| {
#[cfg(unix)]
return Ok(me.gid);
#[cfg(windows)]
return Ok(Nil);
});
}
reg.add_field_method_get("length", |_, me| Ok(me.len));
@ -39,6 +49,7 @@ impl Cha {
reg.add_field_method_get("accessed", |_, me| {
Ok(me.accessed.and_then(|t| t.duration_since(UNIX_EPOCH).map(|d| d.as_secs_f64()).ok()))
});
#[allow(unused_variables)]
reg.add_method("permissions", |_, me, ()| {
Ok(
#[cfg(unix)]