summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-03-07 17:31:30 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-03-07 17:31:30 +0100
commit00aa4df88edae1d5eeb3fb365af05f95bd0de3b4 (patch)
tree8e5bd3e4aa512fde4da1449ff3a578f084db5953
parent10a7049639136cdcce0fad2209e631a21d00b595 (diff)
parent587af0ff0590307897a6d8c662c90a6e8b782212 (diff)
Merge branch 'cleanup-libimagerror'
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--lib/core/libimagerror/src/exit.rs10
-rw-r--r--lib/core/libimagerror/src/io.rs62
-rw-r--r--lib/core/libimagerror/src/iter.rs130
-rw-r--r--lib/core/libimagerror/src/lib.rs3
-rw-r--r--lib/core/libimagerror/src/str.rs31
5 files changed, 0 insertions, 236 deletions
diff --git a/lib/core/libimagerror/src/exit.rs b/lib/core/libimagerror/src/exit.rs
index dd3c653b..3df64b2b 100644
--- a/lib/core/libimagerror/src/exit.rs
+++ b/lib/core/libimagerror/src/exit.rs
@@ -55,13 +55,3 @@ impl Error for ExitCode {
}
}
-pub trait ExitUnwrap<T> {
- fn unwrap_or_exit(self) -> T;
-}
-
-impl<T, E: Into<ExitCode>> ExitUnwrap<T> for Result<T, E> {
- fn unwrap_or_exit(self) -> T {
- self.map_err(Into::into).unwrap_or_else(|e| ::std::process::exit(e.0))
- }
-}
-
diff --git a/lib/core/libimagerror/src/io.rs b/lib/core/libimagerror/src/io.rs
deleted file mode 100644
index 753fff6e..00000000
--- a/lib/core/libimagerror/src/io.rs
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-// imag - the personal information management suite for the commandline
-// Copyright (C) 2015-2020 the imag contributors
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; version
-// 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-//
-
-use std::io::ErrorKind;
-
-use crate::exit::ExitCode;
-
-pub enum Settings {
- Ignore(ErrorKind),
- IgnoreAny(Vec<ErrorKind>),
-}
-
-pub trait ToExitCode<T> {
- fn to_exit_code(self) -> Result<T, ExitCode>;
- fn to_exit_code_with(self, _: Settings) -> Result<T, ExitCode>;
-}
-
-impl<T> ToExitCode<T> for Result<T, ::std::io::Error> {
-
- /// Returns an exit code of 0 if the error was a broken pipe, else 1
- fn to_exit_code(self) -> Result<T, ExitCode> {
- self.to_exit_code_with(Settings::Ignore(ErrorKind::BrokenPipe))
- }
-
- /// Returns an exit code depending on the settings
- ///
- /// Via the settings, errors can be ignores (translates to exit code zero). All other errors
- /// are translated into exit code 1
- ///
- fn to_exit_code_with(self, settings: Settings) -> Result<T, ExitCode> {
- self.map_err(move |e| match settings {
- Settings::Ignore(kind) => if e.kind() == kind {
- 0
- } else {
- 1
- },
- Settings::IgnoreAny(v) => if v.iter().any(|el| e.kind() == *el) {
- 0
- } else {
- 1
- },
- })
- .map_err(ExitCode::from)
- }
-
-}
diff --git a/lib/core/libimagerror/src/iter.rs b/lib/core/libimagerror/src/iter.rs
deleted file mode 100644
index fa6fec1a..00000000
--- a/lib/core/libimagerror/src/iter.rs
+++ /dev/null
@@ -1,130 +0,0 @@
-//
-// imag - the personal information management suite for the commandline
-// Copyright (C) 2015-2020 the imag contributors
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; version
-// 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-//
-
-use failure::Error;
-
-/// An iterator that unwraps the `Ok` items of `iter`, while passing the `Err` items to its
-/// closure `f`.
-///
-/// This `struct` is created by the `unwrap_with()` method on `TraceIterator`. See its
-/// documentation for more information.
-#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
-#[derive(Clone)]
-pub struct UnwrapWith<I, F>{
- iter: I,
- f: F
-}
-
-impl<I, F, T> Iterator for UnwrapWith<I, F>
- where
- I: Iterator<Item = Result<T, Error>>,
- F: FnMut(Error)
-{
- type Item = T;
-
- #[inline]
- fn next(&mut self) -> Option<Self::Item> {
- loop {
- match self.iter.next() {
- Some(Err(e)) => { (self.f)(e); },
- Some(Ok(item)) => return Some(item),
- None => return None,
- }
- }
- }
-}
-
-
-
-/// Iterator helper for Unwrap with exiting on error
-pub struct UnwrapExit<I, T>(I)
- where I: Iterator<Item = Result<T, Error>>;
-
-impl<I, T> Iterator for UnwrapExit<I, T>
- where I: Iterator<Item = Result<T, Error>>,
-{
- type Item = T;
-
- fn next(&mut self) -> Option<Self::Item> {
- use crate::trace::MapErrTrace;
- self.0.next().map(|e| e.map_err_trace_exit_unwrap())
- }
-}
-
-impl<I, T> DoubleEndedIterator for UnwrapExit<I, T>
- where I: DoubleEndedIterator<Item = Result<T, Error>>,
-{
- fn next_back(&mut self) -> Option<Self::Item> {
- use crate::trace::MapErrTrace;
- self.0.next_back().map(|e| e.map_err_trace_exit_unwrap())
- }
-}
-
-/// This trait provides methods that make it easier to work with iterators that yield a `Result`.
-pub trait TraceIterator<T> : Iterator<Item = Result<T, Error>> + Sized {
- /// Creates an iterator that yields the item in each `Ok` item, while filtering out the
- /// `Err`
- /// items. Each filtered `Err` will be trace-logged with [`::trace::trace_error`].
- ///
- /// As with all iterators, the processing is lazy. If you do not use the result of this method,
- /// nothing will be passed to `::trace::trace_error`, no matter how many `Err` items might
- /// be present.
- #[inline]
- fn trace_unwrap(self) -> UnwrapWith<Self, fn(Error)> {
- #[inline]
- fn trace_error(err: Error) {
- err.iter_chain().for_each(|cause| {
- eprintln!("{}", cause);
- });
- }
-
- self.unwrap_with(trace_error)
- }
-
- /// Creates an iterator that yields the item in each `Ok` item.
- ///
- /// The first `Err(_)` element is traced using `::trace::trace_error_exit`.
- ///
- /// As with all iterators, the processing is lazy. If you do not use the result of this method,
- /// nothing will be passed to `::trace::trace_error_exit`, no matter how many `Err` items might
- /// be present.
- #[inline]
- fn trace_unwrap_exit(self) -> UnwrapExit<Self, T> {
- UnwrapExit(self)
- }
-
-
- /// Takes a closure and creates an iterator that will yield the items inside all `Ok` items
- /// yielded by the original iterator. All `Err` items will be filtered out, and the contents
- /// of each `Err` will be passed to the closure.
- ///
- /// As with all iterators, the processing is lazy. The result of this method must be evaluated
- /// for the closure to be called.
- #[inline]
- fn unwrap_with<F>(self, f: F) -> UnwrapWith<Self, F>
- where F: FnMut(Error)
- {
- UnwrapWith { iter: self, f }
- }
-}
-
-impl<I, T> TraceIterator<T> for I where
- I: Iterator<Item = Result<T, Error>>
-{}
-
diff --git a/lib/core/libimagerror/src/lib.rs b/lib/core/libimagerror/src/lib.rs
index 2358316c..55d045a6 100644
--- a/lib/core/libimagerror/src/lib.rs
+++ b/lib/core/libimagerror/src/lib.rs
@@ -42,8 +42,5 @@ extern crate failure;
pub mod errors;
pub mod exit;
-pub mod io;
-pub mod iter;
-pub mod str;
pub mod trace;
diff --git a/lib/core/libimagerror/src/str.rs b/lib/core/libimagerror/src/str.rs
deleted file mode 100644
index 05842d6b..00000000
--- a/lib/core/libimagerror/src/str.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-//
-// imag - the personal information management suite for the commandline
-// Copyright (C) 2015-2020 the imag contributors
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; version
-// 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-//
-
-use std::error::Error;
-
-pub trait ErrFromStr<T> {
- fn err_from_str(self) -> Result<T, String>;
-}
-
-impl<T, E: Error> ErrFromStr<T> for Result<T, E> {
- fn err_from_str(self) -> Result<T, String> {
- self.map_err(|e| e.description().to_string())
- }
-}
-