Skip to content

Commit

Permalink
Simplify CliError enum (#726)
Browse files Browse the repository at this point in the history
  • Loading branch information
nwagner84 authored Dec 8, 2023
1 parent 0eaee09 commit 5316238
Show file tree
Hide file tree
Showing 21 changed files with 60 additions and 96 deletions.
1 change: 1 addition & 0 deletions crates/pica-toolkit/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
strsim = { version = "0.10" }
termcolor = { version = "1.4" }
thiserror = { workspace = true }
toml = { workspace = true }
unicode-normalization = { version = "0.1" }

Expand Down
2 changes: 1 addition & 1 deletion crates/pica-toolkit/src/commands/cat.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ use pica_record::ByteRecord;
use serde::{Deserialize, Serialize};

use crate::config::Config;
use crate::error::CliResult;
use crate::progress::Progress;
use crate::util::CliResult;
use crate::{gzip_flag, skip_invalid_flag};

#[derive(Debug, Deserialize, Serialize)]
Expand Down
2 changes: 1 addition & 1 deletion crates/pica-toolkit/src/commands/completions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use std::io::{self, Write};
use clap::{Command, Parser};
use clap_complete::{generate, Shell};

use crate::util::CliResult;
use crate::error::CliResult;

#[derive(Parser, Debug)]
pub(crate) struct Completions {
Expand Down
2 changes: 1 addition & 1 deletion crates/pica-toolkit/src/commands/convert/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ use self::import::ImportWriter;
use self::json::JsonWriter;
use self::plain::PlainWriter;
use self::xml::XmlWriter;
use crate::error::CliError;
use crate::progress::Progress;
use crate::util::CliError;
use crate::{skip_invalid_flag, CliResult, Config};

#[derive(Debug, Deserialize, Serialize)]
Expand Down
2 changes: 1 addition & 1 deletion crates/pica-toolkit/src/commands/count.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ use pica_record::io::{ReaderBuilder, RecordsIterator};
use serde::{Deserialize, Serialize};

use crate::config::Config;
use crate::error::CliResult;
use crate::progress::Progress;
use crate::skip_invalid_flag;
use crate::util::CliResult;

#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "kebab-case")]
Expand Down
2 changes: 1 addition & 1 deletion crates/pica-toolkit/src/commands/explode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ use pica_utils::NormalizationForm;
use serde::{Deserialize, Serialize};

use crate::config::Config;
use crate::error::CliResult;
use crate::progress::Progress;
use crate::util::CliResult;
use crate::{gzip_flag, skip_invalid_flag};

#[derive(Debug, Deserialize, Serialize)]
Expand Down
2 changes: 1 addition & 1 deletion crates/pica-toolkit/src/commands/filter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ use pica_record::io::{ReaderBuilder, RecordsIterator, WriterBuilder};
use pica_utils::{FilterList, NormalizationForm};
use serde::{Deserialize, Serialize};

use crate::error::{CliError, CliResult};
use crate::progress::Progress;
use crate::util::{CliError, CliResult};
use crate::{gzip_flag, skip_invalid_flag, Config};

#[derive(Debug, Deserialize, Serialize)]
Expand Down
2 changes: 1 addition & 1 deletion crates/pica-toolkit/src/commands/frequency.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ use pica_utils::NormalizationForm;
use serde::{Deserialize, Serialize};

use crate::config::Config;
use crate::error::CliResult;
use crate::progress::Progress;
use crate::skip_invalid_flag;
use crate::util::CliResult;

#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "kebab-case")]
Expand Down
2 changes: 1 addition & 1 deletion crates/pica-toolkit/src/commands/hash.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ use pica_record::io::{ReaderBuilder, RecordsIterator};
use serde::{Deserialize, Serialize};

use crate::config::Config;
use crate::error::CliResult;
use crate::progress::Progress;
use crate::skip_invalid_flag;
use crate::util::CliResult;

#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "kebab-case")]
Expand Down
2 changes: 1 addition & 1 deletion crates/pica-toolkit/src/commands/invalid.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ use pica_record::io::{ReadPicaError, ReaderBuilder, RecordsIterator};
use pica_record::ParsePicaError;

use crate::config::Config;
use crate::error::CliResult;
use crate::progress::Progress;
use crate::util::CliResult;

/// Write input lines, which can't be decoded as normalized PICA+
///
Expand Down
2 changes: 1 addition & 1 deletion crates/pica-toolkit/src/commands/partition.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ use pica_record::io::{
use serde::{Deserialize, Serialize};

use crate::config::Config;
use crate::error::CliResult;
use crate::progress::Progress;
use crate::util::CliResult;
use crate::{gzip_flag, skip_invalid_flag, template_opt};

#[derive(Debug, Deserialize, Serialize)]
Expand Down
2 changes: 1 addition & 1 deletion crates/pica-toolkit/src/commands/print.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ use termcolor::{
};

use crate::config::Config;
use crate::error::{CliError, CliResult};
use crate::progress::Progress;
use crate::skip_invalid_flag;
use crate::util::{CliError, CliResult};

#[derive(Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "kebab-case")]
Expand Down
2 changes: 1 addition & 1 deletion crates/pica-toolkit/src/commands/sample.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ use rand::{thread_rng, Rng, SeedableRng};
use serde::{Deserialize, Serialize};

use crate::config::Config;
use crate::error::CliResult;
use crate::progress::Progress;
use crate::util::CliResult;
use crate::{gzip_flag, skip_invalid_flag};

#[derive(Debug, Deserialize, Serialize)]
Expand Down
2 changes: 1 addition & 1 deletion crates/pica-toolkit/src/commands/select.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ use pica_utils::{FilterList, NormalizationForm};
use serde::{Deserialize, Serialize};

use crate::config::Config;
use crate::error::CliResult;
use crate::progress::Progress;
use crate::skip_invalid_flag;
use crate::util::CliResult;

#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "kebab-case")]
Expand Down
2 changes: 1 addition & 1 deletion crates/pica-toolkit/src/commands/slice.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ use pica_record::io::{ReaderBuilder, RecordsIterator, WriterBuilder};
use serde::{Deserialize, Serialize};

use crate::config::Config;
use crate::error::CliResult;
use crate::progress::Progress;
use crate::util::CliResult;
use crate::{gzip_flag, skip_invalid_flag};

#[derive(Debug, Deserialize, Serialize)]
Expand Down
2 changes: 1 addition & 1 deletion crates/pica-toolkit/src/commands/split.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ use pica_record::io::{ReaderBuilder, RecordsIterator, WriterBuilder};
use serde::{Deserialize, Serialize};

use crate::config::Config;
use crate::error::CliResult;
use crate::progress::Progress;
use crate::util::CliResult;
use crate::{gzip_flag, skip_invalid_flag, template_opt};

#[derive(Debug, Deserialize, Serialize)]
Expand Down
30 changes: 30 additions & 0 deletions crates/pica-toolkit/src/error.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
use std::io;

pub(crate) type CliResult<T> = Result<T, CliError>;

#[derive(Debug, thiserror::Error)]
pub(crate) enum CliError {
#[error(transparent)]
Io(#[from] io::Error),

#[error(transparent)]
Csv(#[from] csv::Error),

#[error(transparent)]
ParsePica(#[from] pica_record::ParsePicaError),

#[error(transparent)]
ReadPica(#[from] pica_record::io::ReadPicaError),

#[error(transparent)]
ParsePath(#[from] pica_path::ParsePathError),

#[error(transparent)]
ParseMatcher(#[from] pica_matcher::ParseMatcherError),

#[error(transparent)]
ParseQuery(#[from] pica_select::ParseQueryError),

#[error("{0}")]
Other(String),
}
20 changes: 12 additions & 8 deletions crates/pica-toolkit/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ extern crate termcolor;

mod commands;
mod config;
mod error;
mod macros;
mod progress;
mod util;

use std::path::PathBuf;
use std::{io, process};
Expand All @@ -19,7 +19,7 @@ use commands::{
Invalid, Partition, Print, Sample, Select, Slice, Split,
};
use config::Config;
use util::{CliError, CliResult};
use error::{CliError, CliResult};

#[derive(Debug, Parser)]
#[clap(version, author, infer_subcommands = true, max_term_width = 72)]
Expand Down Expand Up @@ -88,27 +88,31 @@ fn main() {
process::exit(0); // no-coverage
}
Err(CliError::ParsePica(err)) => {
eprintln!("Parse Pica Error: {err}");
eprintln!("error: {err}");
process::exit(1);
}
Err(CliError::ReadPica(err)) => {
eprintln!("error: {err}");
process::exit(1);
}
Err(CliError::ParsePath(err)) => {
eprintln!("Parse Path Error: {err}");
eprintln!("error: {err}");
process::exit(1);
}
Err(CliError::ParseMatcher(err)) => {
eprintln!("Parse Matcher Error: {err}");
eprintln!("error: {err}");
process::exit(1);
}
Err(CliError::ParseQuery(err)) => {
eprintln!("Parse Query Error: {err}");
eprintln!("error: {err}");
process::exit(1);
}
Err(CliError::Io(err)) => {
eprintln!("IO Error: {err}");
eprintln!("error: {err}");
process::exit(1);
}
Err(CliError::Csv(err)) => {
eprintln!("CSV Error: {err}");
eprintln!("error: {err}");
process::exit(1);
}
Err(CliError::Other(err)) => {
Expand Down
71 changes: 0 additions & 71 deletions crates/pica-toolkit/src/util.rs

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ bin.name = "pica"
args = "frequency \"002@.!\""
status = "failed"
stdout = ""
stderr = "Parse Query Error: invalid query, got `002@.!`\n"
stderr = "error: invalid query, got `002@.!`\n"
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
bin.name = "pica"
args = "select \"[email protected], 'foo, [email protected]\""
status = "failed"
stderr = "Parse Query Error: invalid query, got `[email protected], 'foo, [email protected]`\n"
stderr = "error: invalid query, got `[email protected], 'foo, [email protected]`\n"
stdout = ""

0 comments on commit 5316238

Please sign in to comment.