From 92577f7fefad637192c463472848d5e3008948eb Mon Sep 17 00:00:00 2001 From: Jane Lusby Date: Wed, 5 Feb 2020 08:04:00 -0800 Subject: [PATCH 1/9] Initial commit --- .gitignore | 2 ++ Cargo.toml | 21 +++++++++++++ README.md | 52 ++++++++++++++++++++++++++++++++ rust-toolchain | 1 + src/lib.rs | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 158 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.toml create mode 100644 README.md create mode 100644 rust-toolchain create mode 100644 src/lib.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..96ef6c0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +Cargo.lock diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..da23a6b --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "simple-eyre" +version = "0.1.0" +authors = ["Jane Lusby "] +edition = "2018" +license = "MIT OR Apache-2.0" +readme = "README.md" +repository = "https://github.com/yaahc/simple-eyre" +homepage = "https://github.com/yaahc/simple-eyre" +documentation = "https://docs.rs/simple-eyre" +keywords = ["error"] +description = """ +One of the simplest error types one can build ontop of eyre, including only an +inner error boxed as a trait object and a context with only a Backtrace +""" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +eyre-impl = "0.1.0" +thiserror = "1.0.10" diff --git a/README.md b/README.md new file mode 100644 index 0000000..a68085a --- /dev/null +++ b/README.md @@ -0,0 +1,52 @@ +Simple-Eyre +=========== + +[![Latest Version](https://img.shields.io/crates/v/simple-eyre.svg)](https://crates.io/crates/simple-eyre) +[![Rust Documentation](https://img.shields.io/badge/api-rustdoc-blue.svg)](https://docs.rs/simple-eyre) + +```toml +[dependencies] +simple-eyre = "0.1" +``` + +
+ +## Example + +```rust +fn eyre::ErrReport; + +fn find_git_root() -> Result { + find_dir_in_ancestors(".git")?; +} +``` + +
+ +## Details + +- This library is meant to be used as a minimal example of how to use + `eyre-impl`. It implements the absolute minimum necessary to function as a + dynamic error wrapper that associates some context with it. In this case the + context is only a Backtrace. + +
+ +#### License + + +Licensed under either of Apache License, Version +2.0 or MIT license at your option. + + +
+ + +Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in this crate by you, as defined in the Apache-2.0 license, shall +be dual licensed as above, without any additional terms or conditions. + + + + + diff --git a/rust-toolchain b/rust-toolchain new file mode 100644 index 0000000..bf867e0 --- /dev/null +++ b/rust-toolchain @@ -0,0 +1 @@ +nightly diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..d049493 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,82 @@ +#![feature(backtrace)] +use eyre_impl::{ErrorReporter, Indented}; +use std::backtrace::{Backtrace, BacktraceStatus}; +use std::fmt::{self, Write as _}; + +#[derive(Debug)] +pub struct BoxError(Box); + +impl std::error::Error for BoxError { + fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { + self.0.source() + } +} + +impl fmt::Display for BoxError { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Display::fmt(&self.0, f) + } +} + +pub struct Context { + backtrace: Backtrace, +} + +impl Default for Context { + fn default() -> Self { + Self { + backtrace: Backtrace::capture(), + } + } +} + +pub struct ErrReport(ErrorReporter); + +impl From for ErrReport +where + E: std::error::Error + Send + Sync + 'static, +{ + fn from(err: E) -> Self { + ErrReport(ErrorReporter::from(BoxError(Box::new(err)))) + } +} + +impl fmt::Debug for ErrReport { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let error = &self.0.error; + + if f.alternate() { + return fmt::Debug::fmt(error, f); + } + + let errors = self.0.chain().rev().enumerate(); + + writeln!(f)?; + + for (n, error) in errors { + write!(Indented::numbered(f, n), "{}", error)?; + writeln!(f)?; + } + + let backtrace = &self.0.context.backtrace; + if let BacktraceStatus::Captured = backtrace.status() { + write!(f, "\n\n{}", backtrace)?; + } + + Ok(()) + } +} + +impl fmt::Display for ErrReport { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "{}", self.0.error)?; + + if f.alternate() { + for cause in self.0.chain().skip(1) { + write!(f, ": {}", cause)?; + } + } + + Ok(()) + } +} From 01e30fd4d6d9358273003ab4d5dacb875c342391 Mon Sep 17 00:00:00 2001 From: Jane Lusby Date: Mon, 18 May 2020 08:28:02 -0700 Subject: [PATCH 2/9] switch from using eyre prototype to actual eyre (#1) - add ci - update docs - set default lints - bump version for new release --- .github/workflows/ci.yml | 121 ++++++++++++++++++++++++++++ Cargo.toml | 11 +-- README.md | 28 +++---- src/lib.rs | 166 +++++++++++++++++++++++---------------- 4 files changed, 239 insertions(+), 87 deletions(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..f6a7b52 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,121 @@ +on: + push: + branches: + - master + pull_request: {} + +name: Continuous integration + +jobs: + check: + name: Check + runs-on: ubuntu-latest + strategy: + matrix: + rust: + - stable + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.rust }} + override: true + - uses: actions-rs/cargo@v1 + with: + command: check + + test-features: + name: Test Suite + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - uses: actions-rs/cargo@v1 + with: + command: test + - uses: actions-rs/cargo@v1 + with: + command: test + args: --all-features + - uses: actions-rs/cargo@v1 + with: + command: test + args: --no-default-features + + test-versions: + name: Test Suite + runs-on: ubuntu-latest + strategy: + matrix: + rust: + - stable + - beta + - nightly + - 1.39.0 + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.rust }} + override: true + - uses: actions-rs/cargo@v1 + with: + command: test + + test-os: + name: Test Suite + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macOS-latest] + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + profile: minimal + - uses: actions-rs/cargo@v1 + with: + command: test + + fmt: + name: Rustfmt + runs-on: ubuntu-latest + strategy: + matrix: + rust: + - stable + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.rust }} + override: true + - run: rustup component add rustfmt + - uses: actions-rs/cargo@v1 + with: + command: fmt + args: --all -- --check + + clippy: + name: Clippy + runs-on: ubuntu-latest + strategy: + matrix: + rust: + - stable + steps: + - uses: actions/checkout@v1 + - uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.rust }} + override: true + - run: rustup component add clippy + - uses: actions-rs/cargo@v1 + with: + command: clippy + args: --all-targets --all-features -- -D warnings diff --git a/Cargo.toml b/Cargo.toml index da23a6b..656d278 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "simple-eyre" -version = "0.1.0" +version = "0.2.0" authors = ["Jane Lusby "] edition = "2018" license = "MIT OR Apache-2.0" @@ -10,12 +10,9 @@ homepage = "https://github.com/yaahc/simple-eyre" documentation = "https://docs.rs/simple-eyre" keywords = ["error"] description = """ -One of the simplest error types one can build ontop of eyre, including only an -inner error boxed as a trait object and a context with only a Backtrace +One of the simplest error reporters one can build ontop of eyre, defining only an error report """ -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [dependencies] -eyre-impl = "0.1.0" -thiserror = "1.0.10" +eyre = "0.4.2" +indenter = "0.3.0" diff --git a/README.md b/README.md index a68085a..523f8c9 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,14 @@ Simple-Eyre [![Latest Version](https://img.shields.io/crates/v/simple-eyre.svg)](https://crates.io/crates/simple-eyre) [![Rust Documentation](https://img.shields.io/badge/api-rustdoc-blue.svg)](https://docs.rs/simple-eyre) +This library provides a custom [`eyre::EyreContext`] type for usage with +[`eyre`] that provides a minimal error report with no additional context. +Essentially the minimal implementation of an error reporter. + ```toml [dependencies] -simple-eyre = "0.1" +eyre = "0.4" +simple-eyre = "0.2" ```
@@ -14,22 +19,18 @@ simple-eyre = "0.1" ## Example ```rust -fn eyre::ErrReport; +use eyre::{eyre, WrapErr}; +use simple_eyre::Report; -fn find_git_root() -> Result { - find_dir_in_ancestors(".git")?; +fn main() -> Result<(), Report> { + let e: Report = eyre!("oh no this program is just bad!"); + + Err(e).wrap_err("usage example successfully experienced a failure") } ```
-## Details - -- This library is meant to be used as a minimal example of how to use - `eyre-impl`. It implements the absolute minimum necessary to function as a - dynamic error wrapper that associates some context with it. In this case the - context is only a Backtrace. -
#### License @@ -47,6 +48,5 @@ for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. - - - +[`eyre::EyreContext`]: https://docs.rs/eyre/*/eyre/trait.EyreContext.html +[`eyre`]: https://docs.rs/eyre diff --git a/src/lib.rs b/src/lib.rs index d049493..c418f08 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,82 +1,116 @@ -#![feature(backtrace)] -use eyre_impl::{ErrorReporter, Indented}; -use std::backtrace::{Backtrace, BacktraceStatus}; -use std::fmt::{self, Write as _}; +//! This library provides a custom [`eyre::EyreContext`] type for usage with [`eyre`] that provides +//! a minimal error report with no additional context. Essentially the minimal implementation of an +//! error reporter. +//! +//! # Example +//! +//! ```rust,should_panic +//! use eyre::{eyre, WrapErr}; +//! use simple_eyre::Report; +//! +//! fn main() -> Result<(), Report> { +//! let e: Report = eyre!("oh no this program is just bad!"); +//! +//! Err(e).wrap_err("usage example successfully experienced a failure") +//! } +//! ``` +//! +//! [`eyre::EyreContext`]: https://docs.rs/eyre/*/eyre/trait.EyreContext.html +//! [`eyre`]: https://docs.rs/eyre +#![doc(html_root_url = "https://docs.rs/simple-eyre/0.2.0")] +#![warn( + missing_debug_implementations, + missing_docs, + missing_doc_code_examples, + rust_2018_idioms, + unreachable_pub, + bad_style, + const_err, + dead_code, + improper_ctypes, + non_shorthand_field_patterns, + no_mangle_generic_items, + overflowing_literals, + path_statements, + patterns_in_fns_without_body, + private_in_public, + unconditional_recursion, + unused, + unused_allocation, + unused_comparisons, + unused_parens, + while_true +)] +use eyre::Chain; +use eyre::EyreContext; +use indenter::indented; +use std::error::Error; +/// A custom context type for minimal error reporting via `eyre` #[derive(Debug)] -pub struct BoxError(Box); +pub struct Context; -impl std::error::Error for BoxError { - fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { - self.0.source() +impl EyreContext for Context { + #[allow(unused_variables)] + fn default(error: &(dyn Error + 'static)) -> Self { + Self } -} -impl fmt::Display for BoxError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - fmt::Display::fmt(&self.0, f) - } -} - -pub struct Context { - backtrace: Backtrace, -} - -impl Default for Context { - fn default() -> Self { - Self { - backtrace: Backtrace::capture(), - } - } -} - -pub struct ErrReport(ErrorReporter); - -impl From for ErrReport -where - E: std::error::Error + Send + Sync + 'static, -{ - fn from(err: E) -> Self { - ErrReport(ErrorReporter::from(BoxError(Box::new(err)))) - } -} - -impl fmt::Debug for ErrReport { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let error = &self.0.error; + fn debug( + &self, + error: &(dyn Error + 'static), + f: &mut core::fmt::Formatter<'_>, + ) -> core::fmt::Result { + use core::fmt::Write as _; if f.alternate() { - return fmt::Debug::fmt(error, f); + return core::fmt::Debug::fmt(error, f); } - let errors = self.0.chain().rev().enumerate(); + write!(f, "{}", error)?; - writeln!(f)?; - - for (n, error) in errors { - write!(Indented::numbered(f, n), "{}", error)?; - writeln!(f)?; - } - - let backtrace = &self.0.context.backtrace; - if let BacktraceStatus::Captured = backtrace.status() { - write!(f, "\n\n{}", backtrace)?; - } - - Ok(()) - } -} - -impl fmt::Display for ErrReport { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "{}", self.0.error)?; - - if f.alternate() { - for cause in self.0.chain().skip(1) { - write!(f, ": {}", cause)?; + if let Some(cause) = error.source() { + write!(f, "\n\nCaused by:")?; + let multiple = cause.source().is_some(); + for (n, error) in Chain::new(cause).enumerate() { + writeln!(f)?; + if multiple { + write!(indented(f).ind(n), "{}", error)?; + } else { + write!(indented(f), "{}", error)?; + } } } Ok(()) } } + +/// A type alias for `eyre::Report` +/// +/// # Example +/// +/// ```rust +/// use simple_eyre::Report; +/// +/// # struct Config; +/// fn try_thing(path: &str) -> Result { +/// // ... +/// # Ok(Config) +/// } +/// ``` +pub type Report = eyre::Report; + +/// A type alias for `Result` +/// +/// # Example +/// +///``` +/// fn main() -> simple_eyre::Result<()> { +/// +/// // ... +/// +/// Ok(()) +/// } +/// ``` +pub type Result = core::result::Result; From 758d7a65c7e0ac30b462ac0066052e1883e8858c Mon Sep 17 00:00:00 2001 From: Jane Lusby Date: Mon, 18 May 2020 08:31:59 -0700 Subject: [PATCH 3/9] remove rust-toolchain file --- rust-toolchain | 1 - 1 file changed, 1 deletion(-) delete mode 100644 rust-toolchain diff --git a/rust-toolchain b/rust-toolchain deleted file mode 100644 index bf867e0..0000000 --- a/rust-toolchain +++ /dev/null @@ -1 +0,0 @@ -nightly From 29b78043929f0970fa87474d30bc7ff0cb212c00 Mon Sep 17 00:00:00 2001 From: Jane Lusby Date: Mon, 18 May 2020 08:32:46 -0700 Subject: [PATCH 4/9] remove br from readme --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index 523f8c9..87c45b8 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,6 @@ eyre = "0.4" simple-eyre = "0.2" ``` -
- ## Example ```rust @@ -29,10 +27,6 @@ fn main() -> Result<(), Report> { } ``` -
- -
- #### License From d7dec31aa740c5dac2393ea706802314ef6f50f1 Mon Sep 17 00:00:00 2001 From: Jane Lusby Date: Mon, 13 Jul 2020 11:45:43 -0700 Subject: [PATCH 5/9] release new version of simple-eyre --- Cargo.toml | 4 +-- README.md | 33 +++++++++++++---------- src/lib.rs | 79 ++++++++++++++++++++++++++++-------------------------- 3 files changed, 62 insertions(+), 54 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 656d278..9b76f37 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "simple-eyre" -version = "0.2.0" +version = "0.3.0" authors = ["Jane Lusby "] edition = "2018" license = "MIT OR Apache-2.0" @@ -14,5 +14,5 @@ One of the simplest error reporters one can build ontop of eyre, defining only a """ [dependencies] -eyre = "0.4.2" +eyre = "0.6.0" indenter = "0.3.0" diff --git a/README.md b/README.md index 87c45b8..466f644 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,40 @@ -Simple-Eyre -=========== +## simple-eyre [![Latest Version](https://img.shields.io/crates/v/simple-eyre.svg)](https://crates.io/crates/simple-eyre) [![Rust Documentation](https://img.shields.io/badge/api-rustdoc-blue.svg)](https://docs.rs/simple-eyre) -This library provides a custom [`eyre::EyreContext`] type for usage with -[`eyre`] that provides a minimal error report with no additional context. -Essentially the minimal implementation of an error reporter. +This library provides a custom [`eyre::EyreHandler`] type for usage with [`eyre`] that provides +a minimal error report with no additional context. Essentially the minimal implementation of an +error reporter. + +## Setup + +Add the following to your toml file: ```toml [dependencies] -eyre = "0.4" -simple-eyre = "0.2" +simple-eyre = "0.3" ``` -## Example +Then install the hook handler before constructing any `eyre::Report` types. -```rust -use eyre::{eyre, WrapErr}; -use simple_eyre::Report; +# Example + +```rust,should_panic +use simple_eyre::eyre::{eyre, WrapErr, Report}; fn main() -> Result<(), Report> { + simple_eyre::install()?; + let e: Report = eyre!("oh no this program is just bad!"); Err(e).wrap_err("usage example successfully experienced a failure") } ``` +[`eyre::EyreHandler`]: https://docs.rs/eyre/*/eyre/trait.EyreHandler.html +[`eyre`]: https://docs.rs/eyre + #### License @@ -41,6 +49,3 @@ Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. - -[`eyre::EyreContext`]: https://docs.rs/eyre/*/eyre/trait.EyreContext.html -[`eyre`]: https://docs.rs/eyre diff --git a/src/lib.rs b/src/lib.rs index c418f08..7db068f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,21 +1,33 @@ -//! This library provides a custom [`eyre::EyreContext`] type for usage with [`eyre`] that provides +//! This library provides a custom [`eyre::EyreHandler`] type for usage with [`eyre`] that provides //! a minimal error report with no additional context. Essentially the minimal implementation of an //! error reporter. //! +//! ## Setup +//! +//! Add the following to your toml file: +//! +//! ```toml +//! [dependencies] +//! simple-eyre = "0.3" +//! ``` +//! +//! Then install the hook handler before constructing any `eyre::Report` types. +//! //! # Example //! //! ```rust,should_panic -//! use eyre::{eyre, WrapErr}; -//! use simple_eyre::Report; +//! use simple_eyre::eyre::{eyre, WrapErr, Report}; //! //! fn main() -> Result<(), Report> { +//! simple_eyre::install()?; +//! //! let e: Report = eyre!("oh no this program is just bad!"); //! //! Err(e).wrap_err("usage example successfully experienced a failure") //! } //! ``` //! -//! [`eyre::EyreContext`]: https://docs.rs/eyre/*/eyre/trait.EyreContext.html +//! [`eyre::EyreHandler`]: https://docs.rs/eyre/*/eyre/trait.EyreHandler.html //! [`eyre`]: https://docs.rs/eyre #![doc(html_root_url = "https://docs.rs/simple-eyre/0.2.0")] #![warn( @@ -41,21 +53,19 @@ unused_parens, while_true )] -use eyre::Chain; -use eyre::EyreContext; +pub use eyre; +#[doc(hidden)] +pub use eyre::{Report, Result}; + +use eyre::EyreHandler; use indenter::indented; use std::error::Error; /// A custom context type for minimal error reporting via `eyre` #[derive(Debug)] -pub struct Context; - -impl EyreContext for Context { - #[allow(unused_variables)] - fn default(error: &(dyn Error + 'static)) -> Self { - Self - } +pub struct Handler; +impl EyreHandler for Handler { fn debug( &self, error: &(dyn Error + 'static), @@ -71,9 +81,13 @@ impl EyreContext for Context { if let Some(cause) = error.source() { write!(f, "\n\nCaused by:")?; + let multiple = cause.source().is_some(); - for (n, error) in Chain::new(cause).enumerate() { + let errors = std::iter::successors(Some(cause), |e| e.source()); + + for (n, error) in errors.enumerate() { writeln!(f)?; + if multiple { write!(indented(f).ind(n), "{}", error)?; } else { @@ -86,31 +100,20 @@ impl EyreContext for Context { } } -/// A type alias for `eyre::Report` +/// Install the `simple-eyre` hook as the global error report hook. /// -/// # Example +/// # Details /// -/// ```rust -/// use simple_eyre::Report; +/// This function must be called to enable the customization of `eyre::Report` +/// provided by `simple-eyre`. This function should be called early, ideally +/// before any errors could be encountered. /// -/// # struct Config; -/// fn try_thing(path: &str) -> Result { -/// // ... -/// # Ok(Config) -/// } -/// ``` -pub type Report = eyre::Report; +/// Only the first install will succeed. Calling this function after another +/// report handler has been installed will cause an error. **Note**: This +/// function _must_ be called before any `eyre::Report`s are constructed to +/// prevent the default handler from being installed. +pub fn install() -> Result<()> { + crate::eyre::set_hook(Box::new(move |_| Box::new(Handler)))?; -/// A type alias for `Result` -/// -/// # Example -/// -///``` -/// fn main() -> simple_eyre::Result<()> { -/// -/// // ... -/// -/// Ok(()) -/// } -/// ``` -pub type Result = core::result::Result; + Ok(()) +} From 14ce120664139fc834ee47700a336e3a9b5f6efd Mon Sep 17 00:00:00 2001 From: "William D. Jones" Date: Thu, 22 Apr 2021 13:28:46 -0400 Subject: [PATCH 6/9] Clone error in closure to prevent compiler lifetime errors. (#3) * Clone error in closure to prevent compiler lifetime errors. * Change clone to explicit deref. Co-authored-by: Jane Lusby --- src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 7db068f..5877161 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -83,7 +83,7 @@ impl EyreHandler for Handler { write!(f, "\n\nCaused by:")?; let multiple = cause.source().is_some(); - let errors = std::iter::successors(Some(cause), |e| e.source()); + let errors = std::iter::successors(Some(cause), |e| (*e).source()); for (n, error) in errors.enumerate() { writeln!(f)?; From ddfe8d9e4543fa8c2f9209f898458b575c947ced Mon Sep 17 00:00:00 2001 From: Jane Lusby Date: Thu, 24 Jun 2021 15:39:24 -0700 Subject: [PATCH 7/9] prep for new release --- CHANGELOG.md | 15 +++++++++++++++ Cargo.toml | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..76201e6 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,15 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + + + +## [Unreleased] - ReleaseDate +# Fixed +- Fixed lifetime inference error caused by recent `std` change. + + + +[0.3.1]: https://github.com/yaahc/displaydoc/releases/tag/v0.3.1 diff --git a/Cargo.toml b/Cargo.toml index 9b76f37..ac7341a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,3 +16,46 @@ One of the simplest error reporters one can build ontop of eyre, defining only a [dependencies] eyre = "0.6.0" indenter = "0.3.0" + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = ["--cfg", "docsrs"] + +[package.metadata.release] +no-dev-version = true + +[[package.metadata.release.pre-release-replacements]] +file = "CHANGELOG.md" +search = "Unreleased" +replace="{{version}}" + +[[package.metadata.release.pre-release-replacements]] +file = "src/lib.rs" +search = "#!\\[doc\\(html_root_url.*" +replace = "#![doc(html_root_url = \"https://docs.rs/{{crate_name}}/{{version}}\")]" +exactly = 1 + +[[package.metadata.release.pre-release-replacements]] +file = "CHANGELOG.md" +search = "ReleaseDate" +replace="{{date}}" + +[[package.metadata.release.pre-release-replacements]] +file="CHANGELOG.md" +search="" +replace="\n\n## [Unreleased] - ReleaseDate" +exactly=1 + +# Disable this replacement on the very first release +# [[package.metadata.release.pre-release-replacements]] +# file = "CHANGELOG.md" +# search = "\\.\\.\\.HEAD" +# replace="...{{tag_name}}" +# exactly = 1 +# END SECTION, do not comment out the replacement below this, and do not reorder them + +[[package.metadata.release.pre-release-replacements]] +file="CHANGELOG.md" +search="" +replace="\n[Unreleased]: https://github.com/yaahc/{{crate_name}}/compare/{{tag_name}}...HEAD" +exactly=1 From 013da740a1c879c0bc3d6634091d812e61d8cfd3 Mon Sep 17 00:00:00 2001 From: Jane Lusby Date: Thu, 24 Jun 2021 15:48:55 -0700 Subject: [PATCH 8/9] (cargo-release) version 0.3.1 --- CHANGELOG.md | 3 +++ Cargo.toml | 2 +- src/lib.rs | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76201e6..36d49a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] - ReleaseDate + +## [0.3.1] - 2021-06-24 # Fixed - Fixed lifetime inference error caused by recent `std` change. +[Unreleased]: https://github.com/yaahc/simple-eyre/compare/v0.3.1...HEAD [0.3.1]: https://github.com/yaahc/displaydoc/releases/tag/v0.3.1 diff --git a/Cargo.toml b/Cargo.toml index ac7341a..69ef31c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "simple-eyre" -version = "0.3.0" +version = "0.3.1" authors = ["Jane Lusby "] edition = "2018" license = "MIT OR Apache-2.0" diff --git a/src/lib.rs b/src/lib.rs index 5877161..e9c9e24 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -29,7 +29,7 @@ //! //! [`eyre::EyreHandler`]: https://docs.rs/eyre/*/eyre/trait.EyreHandler.html //! [`eyre`]: https://docs.rs/eyre -#![doc(html_root_url = "https://docs.rs/simple-eyre/0.2.0")] +#![doc(html_root_url = "https://docs.rs/simple-eyre/0.3.1")] #![warn( missing_debug_implementations, missing_docs, From 93603ea33a0046c74fd32127016479ea4be91d1c Mon Sep 17 00:00:00 2001 From: Jane Lusby Date: Thu, 24 Jun 2021 15:49:36 -0700 Subject: [PATCH 9/9] prep for future releases --- Cargo.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 69ef31c..6ffb84e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,11 +47,11 @@ replace="\n\n## [Unreleased] - ReleaseDate" exactly=1 # Disable this replacement on the very first release -# [[package.metadata.release.pre-release-replacements]] -# file = "CHANGELOG.md" -# search = "\\.\\.\\.HEAD" -# replace="...{{tag_name}}" -# exactly = 1 +[[package.metadata.release.pre-release-replacements]] +file = "CHANGELOG.md" +search = "\\.\\.\\.HEAD" +replace="...{{tag_name}}" +exactly = 1 # END SECTION, do not comment out the replacement below this, and do not reorder them [[package.metadata.release.pre-release-replacements]]