1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-27 11:07:44 +00:00

df: add thiserror (#7545)

* refactor: Add thiserror to df

* fix: Try fixing tests

* refactor(df): Move `df` to `thiserror`

* chore(df): Add back comment

* chore: Refactor column.rs correctly
This commit is contained in:
Chandra Kiran G 2025-04-02 13:49:19 +05:30 committed by GitHub
parent dd5517c1ff
commit 3a0b43bdf7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 9 additions and 13 deletions

1
Cargo.lock generated
View file

@ -2672,6 +2672,7 @@ version = "0.0.30"
dependencies = [
"clap",
"tempfile",
"thiserror 2.0.12",
"unicode-width 0.2.0",
"uucore",
]

View file

@ -20,6 +20,7 @@ path = "src/df.rs"
clap = { workspace = true }
uucore = { workspace = true, features = ["libc", "fsext"] }
unicode-width = { workspace = true }
thiserror = { workspace = true }
[dev-dependencies]
tempfile = { workspace = true }

View file

@ -5,6 +5,8 @@
// spell-checker:ignore itotal iused iavail ipcent pcent squashfs
use crate::{OPT_INODES, OPT_OUTPUT, OPT_PRINT_TYPE};
use clap::{ArgMatches, parser::ValueSource};
use thiserror::Error;
use uucore::display::Quotable;
/// The columns in the output table produced by `df`.
///
@ -56,9 +58,10 @@ pub(crate) enum Column {
}
/// An error while defining which columns to display in the output table.
#[derive(Debug)]
#[derive(Debug, Error)]
pub(crate) enum ColumnError {
/// If a column appears more than once in the `--output` argument.
#[error("{}", .0.quote())]
MultipleColumns(String),
}

View file

@ -19,10 +19,10 @@ use uucore::{format_usage, help_about, help_section, help_usage, show};
use clap::{Arg, ArgAction, ArgMatches, Command, parser::ValueSource};
use std::error::Error;
use std::ffi::OsString;
use std::fmt;
use std::path::Path;
use thiserror::Error;
use crate::blocks::{BlockSize, read_block_size};
use crate::columns::{Column, ColumnError};
@ -426,28 +426,19 @@ where
Ok(result)
}
#[derive(Debug)]
#[derive(Debug, Error)]
enum DfError {
/// A problem while parsing command-line options.
#[error("{}", .0)]
OptionsError(OptionsError),
}
impl Error for DfError {}
impl UError for DfError {
fn usage(&self) -> bool {
matches!(self, Self::OptionsError(OptionsError::ColumnError(_)))
}
}
impl fmt::Display for DfError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
Self::OptionsError(e) => e.fmt(f),
}
}
}
#[uucore::main]
pub fn uumain(args: impl uucore::Args) -> UResult<()> {
let matches = uu_app().try_get_matches_from(args)?;