Skip to content

Commit

Permalink
feat: add some dependency version information to yazi --debug (#1112)
Browse files Browse the repository at this point in the history
Co-authored-by: sxyazi <sxyazi@gmail.com>
  • Loading branch information
omagdy7 and sxyazi authored Jun 3, 2024
1 parent 162218c commit 2c84c48
Show file tree
Hide file tree
Showing 12 changed files with 61 additions and 34 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Yazi (means "duck") is a terminal file manager written in Rust, based on non-blo
- 💫 Vim-like input/select/which/notify component, auto-completion for cd paths
- 🏷️ Multi-Tab Support, Cross-directory selection, Scrollable Preview (for videos, PDFs, archives, directories, code, etc.)
- 🔄 Bulk Renaming, Visual Mode, File Chooser
- 🎨 Theme System, Custom Layouts, Trash Bin, CSI u
- 🎨 Theme System, Mouse Support, Trash Bin, Custom Layouts, CSI u
- ... and more!

https://github.com/sxyazi/yazi/assets/17523360/92ff23fa-0cd5-4f04-b387-894c12265cc7
Expand Down
2 changes: 1 addition & 1 deletion nix/yazi-unwrapped.nix
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
# Resize logo
for RES in 16 24 32 48 64 128 256; do
mkdir -p $out/share/icons/hicolor/"$RES"x"$RES"/apps
convert assets/logo.png -resize "$RES"x"$RES" $out/share/icons/hicolor/"$RES"x"$RES"/apps/yazi.png
magick assets/logo.png -resize "$RES"x"$RES" $out/share/icons/hicolor/"$RES"x"$RES"/apps/yazi.png
done
mkdir -p $out/share/applications
Expand Down
1 change: 1 addition & 0 deletions yazi-boot/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ homepage = "https://yazi-rs.github.io"
repository = "https://github.com/sxyazi/yazi"

[dependencies]
regex = "1.10.4"
yazi-adaptor = { path = "../yazi-adaptor", version = "0.2.5" }
yazi-config = { path = "../yazi-config", version = "0.2.5" }
yazi-shared = { path = "../yazi-shared", version = "0.2.5" }
Expand Down
71 changes: 48 additions & 23 deletions yazi-boot/src/boot.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use std::{collections::HashSet, env, ffi::OsString, fmt::Write, path::{Path, PathBuf}, process};
use std::{collections::HashSet, env, ffi::{OsStr, OsString}, fmt::Write, path::{Path, PathBuf}, process};

use clap::Parser;
use regex::Regex;
use serde::Serialize;
use yazi_config::PREVIEW;
use yazi_shared::{fs::{current_cwd, expand_path}, Xdg};
Expand Down Expand Up @@ -37,6 +38,22 @@ impl Boot {
(parent.unwrap().to_owned(), Some(entry.file_name().unwrap().to_owned()))
}

fn process_output(name: impl AsRef<OsStr>, arg: impl AsRef<OsStr>) -> String {
match std::process::Command::new(name.as_ref()).arg(arg).output() {
Ok(out) if out.status.success() => {
let line =
String::from_utf8_lossy(&out.stdout).trim().lines().next().unwrap_or_default().to_owned();
Regex::new(r"\d+\.\d+(\.\d+-\d+|\.\d+|\b)")
.unwrap()
.find(&line)
.map(|m| m.as_str().to_owned())
.unwrap_or(line)
}
Ok(out) => format!("{:?}, {:?}", out.status, String::from_utf8_lossy(&out.stderr)),
Err(e) => format!("{e}"),
}
}

fn action_version() -> String {
format!(
"{} ({} {})",
Expand All @@ -47,29 +64,29 @@ impl Boot {
}

fn action_debug() -> Result<String, std::fmt::Error> {
use std::{env::consts::{ARCH, FAMILY, OS}, process::Command};
use std::env::consts::{ARCH, FAMILY, OS};
let mut s = String::new();

writeln!(s, "\nYazi")?;
writeln!(s, " Version: {}", Self::action_version())?;
writeln!(s, " OS: {}-{} ({})", OS, ARCH, FAMILY)?;
writeln!(s, " Debug: {}", cfg!(debug_assertions))?;
writeln!(s, " Debug : {}", cfg!(debug_assertions))?;
writeln!(s, " OS : {}-{} ({})", OS, ARCH, FAMILY)?;

writeln!(s, "\nYa")?;
writeln!(s, " Version: {:?}", Command::new("ya").arg("--version").output())?;
writeln!(s, " Version: {}", Self::process_output("ya", "--version"))?;

writeln!(s, "\nEmulator")?;
writeln!(s, " Emulator.via_env: {:?}", yazi_adaptor::Emulator::via_env())?;
writeln!(s, " Emulator.via_csi: {:?}", yazi_adaptor::Emulator::via_csi())?;
writeln!(s, " Emulator.detect: {:?}", yazi_adaptor::Emulator::detect())?;
writeln!(s, " Emulator.detect : {:?}", yazi_adaptor::Emulator::detect())?;

writeln!(s, "\nAdaptor")?;
writeln!(s, " Adaptor.matches: {:?}", yazi_adaptor::Adaptor::matches())?;

writeln!(s, "\nDesktop")?;
writeln!(s, " XDG_SESSION_TYPE: {:?}", env::var_os("XDG_SESSION_TYPE"))?;
writeln!(s, " WAYLAND_DISPLAY: {:?}", env::var_os("WAYLAND_DISPLAY"))?;
writeln!(s, " DISPLAY: {:?}", env::var_os("DISPLAY"))?;
writeln!(s, " WAYLAND_DISPLAY : {:?}", env::var_os("WAYLAND_DISPLAY"))?;
writeln!(s, " DISPLAY : {:?}", env::var_os("DISPLAY"))?;

writeln!(s, "\nSSH")?;
writeln!(s, " shared.in_ssh_connection: {:?}", yazi_shared::in_ssh_connection())?;
Expand All @@ -82,32 +99,40 @@ impl Boot {
)?;

writeln!(s, "\nVariables")?;
writeln!(s, " SHELL: {:?}", env::var_os("SHELL"))?;
writeln!(s, " EDITOR: {:?}", env::var_os("EDITOR"))?;
writeln!(s, " SHELL : {:?}", env::var_os("SHELL"))?;
writeln!(s, " EDITOR : {:?}", env::var_os("EDITOR"))?;
writeln!(s, " ZELLIJ_SESSION_NAME: {:?}", env::var_os("ZELLIJ_SESSION_NAME"))?;
writeln!(s, " YAZI_FILE_ONE: {:?}", env::var_os("YAZI_FILE_ONE"))?;
writeln!(s, " YAZI_CONFIG_HOME: {:?}", env::var_os("YAZI_CONFIG_HOME"))?;

writeln!(s, "\nfile(1)")?;
writeln!(
s,
" Version: {:?}",
Command::new(env::var_os("YAZI_FILE_ONE").unwrap_or("file".into())).arg("--version").output()
)?;
writeln!(s, " YAZI_FILE_ONE : {:?}", env::var_os("YAZI_FILE_ONE"))?;
writeln!(s, " YAZI_CONFIG_HOME : {:?}", env::var_os("YAZI_CONFIG_HOME"))?;

writeln!(s, "\nText Opener")?;
writeln!(
s,
" default: {:?}",
yazi_config::OPEN.openers("f75a.txt", "text/plain").and_then(|a| a.first().cloned())
)?;
writeln!(s, " block: {:?}", yazi_config::OPEN.block_opener("bulk.txt", "text/plain"))?;
writeln!(s, " block : {:?}", yazi_config::OPEN.block_opener("bulk.txt", "text/plain"))?;

writeln!(s, "\ntmux")?;
writeln!(s, " TMUX: {:?}", *yazi_adaptor::TMUX)?;
writeln!(s, " TMUX : {:?}", *yazi_adaptor::TMUX)?;
writeln!(s, " Version: {}", Self::process_output("tmux", "-V"))?;

writeln!(s, "\nUeberzug++")?;
writeln!(s, " Version: {:?}", Command::new("ueberzugpp").arg("--version").output())?;
writeln!(s, "\nDependencies")?;
writeln!(
s,
" file : {}",
Self::process_output(env::var_os("YAZI_FILE_ONE").unwrap_or("file".into()), "--version")
)?;
writeln!(s, " ueberzugpp : {}", Self::process_output("ueberzugpp", "--version"))?;
writeln!(s, " ffmpegthumbnailer: {}", Self::process_output("ffmpegthumbnailer", "-v"))?;
writeln!(s, " magick : {}", Self::process_output("magick", "--version"))?;
writeln!(s, " fzf : {}", Self::process_output("fzf", "--version"))?;
writeln!(s, " fd : {}", Self::process_output("fd", "--version"))?;
writeln!(s, " rg : {}", Self::process_output("rg", "--version"))?;
writeln!(s, " chafa : {}", Self::process_output("chafa", "--version"))?;
writeln!(s, " zoxide : {}", Self::process_output("zoxide", "--version"))?;
writeln!(s, " unar : {}", Self::process_output("unar", "--version"))?;
writeln!(s, " jq : {}", Self::process_output("jq", "--version"))?;

writeln!(s, "\n\n--------------------------------------------------")?;
writeln!(
Expand Down
2 changes: 1 addition & 1 deletion yazi-fm/src/components/current.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use yazi_plugin::{bindings::{Cast, MouseEvent}, LUA};
pub(crate) struct Current;

impl Current {
pub fn mouse(event: crossterm::event::MouseEvent) -> mlua::Result<()> {
pub(crate) fn mouse(event: crossterm::event::MouseEvent) -> mlua::Result<()> {
let evt = MouseEvent::cast(&LUA, event)?;
let comp: Table = LUA.globals().raw_get("Current")?;

Expand Down
2 changes: 1 addition & 1 deletion yazi-fm/src/components/header.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ impl Widget for Header {
}

impl Header {
pub fn mouse(event: crossterm::event::MouseEvent) -> mlua::Result<()> {
pub(crate) fn mouse(event: crossterm::event::MouseEvent) -> mlua::Result<()> {
let evt = MouseEvent::cast(&LUA, event)?;
let comp: Table = LUA.globals().raw_get("Header")?;

Expand Down
2 changes: 1 addition & 1 deletion yazi-fm/src/components/parent.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use yazi_plugin::{bindings::{Cast, MouseEvent}, LUA};
pub(crate) struct Parent;

impl Parent {
pub fn mouse(event: crossterm::event::MouseEvent) -> mlua::Result<()> {
pub(crate) fn mouse(event: crossterm::event::MouseEvent) -> mlua::Result<()> {
let evt = MouseEvent::cast(&LUA, event)?;
let comp: Table = LUA.globals().raw_get("Parent")?;

Expand Down
2 changes: 1 addition & 1 deletion yazi-fm/src/components/preview.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ impl<'a> Preview<'a> {
#[inline]
pub(crate) fn new(cx: &'a Ctx) -> Self { Self { cx } }

pub fn mouse(event: crossterm::event::MouseEvent) -> mlua::Result<()> {
pub(crate) fn mouse(event: crossterm::event::MouseEvent) -> mlua::Result<()> {
let evt = MouseEvent::cast(&LUA, event)?;
let comp: Table = LUA.globals().raw_get("Preview")?;

Expand Down
2 changes: 1 addition & 1 deletion yazi-fm/src/components/status.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ impl Widget for Status {
}

impl Status {
pub fn mouse(event: crossterm::event::MouseEvent) -> mlua::Result<()> {
pub(crate) fn mouse(event: crossterm::event::MouseEvent) -> mlua::Result<()> {
let evt = MouseEvent::cast(&LUA, event)?;
let comp: Table = LUA.globals().raw_get("Status")?;

Expand Down
4 changes: 2 additions & 2 deletions yazi-plugin/preset/plugins/font.lua
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ function M:preload()
return 1
end

local child, code = Command("convert"):args({
local child, code = Command("magick"):args({
"-size",
"800x560",
"-gravity",
Expand All @@ -41,7 +41,7 @@ function M:preload()
}):spawn()

if not child then
ya.err("spawn `convert` command returns " .. tostring(code))
ya.err("spawn `magick` command returns " .. tostring(code))
return 0
end

Expand Down
4 changes: 2 additions & 2 deletions yazi-plugin/preset/plugins/magick.lua
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ function M:preload()
return 1
end

local child, code = Command("convert"):args({
local child, code = Command("magick"):args({
"-density",
"200",
"-resize",
Expand All @@ -32,7 +32,7 @@ function M:preload()
}):spawn()

if not child then
ya.err("spawn `convert` command returns " .. tostring(code))
ya.err("spawn `magick` command returns " .. tostring(code))
return 0
end

Expand Down

0 comments on commit 2c84c48

Please sign in to comment.