mirror of https://github.com/zkat/miette.git
feat(deps): move fancy reporter (and its deps) to a feature
BREAKING CHANGE: The default fancy reporter is no longer available unless you enable the "fancy" feature. This also means you will not be pulling in a bunch of deps if you are using miette for a library Fixes: https://github.com/zkat/miette/issues/25
This commit is contained in:
parent
4c2463f9ae
commit
247e8f8b39
33
Cargo.toml
33
Cargo.toml
|
|
@ -15,15 +15,16 @@ exclude = ["images/", "tests/", "miette-derive/"]
|
||||||
thiserror = "1.0.26"
|
thiserror = "1.0.26"
|
||||||
miette-derive = { path = "miette-derive", version = "=2.2.1-alpha.0"}
|
miette-derive = { path = "miette-derive", version = "=2.2.1-alpha.0"}
|
||||||
once_cell = "1.8.0"
|
once_cell = "1.8.0"
|
||||||
owo-colors = "2.0.0"
|
|
||||||
atty = "0.2.14"
|
owo-colors = { version = "2.0.0", optional = true }
|
||||||
ci_info = "0.14.2"
|
atty = { version = "0.2.14", optional = true }
|
||||||
textwrap = "0.14.2"
|
ci_info = { version = "0.14.2", optional = true }
|
||||||
term_size = "0.3.2"
|
textwrap = { version = "0.14.2", optional = true }
|
||||||
unicode-width = "0.1.8"
|
term_size = { version = "0.3.2", optional = true }
|
||||||
supports-hyperlinks = "1.1.0"
|
unicode-width = { version = "0.1.8", optional = true }
|
||||||
supports-color = "1.0.2"
|
supports-hyperlinks = { version = "1.1.0", optional = true }
|
||||||
supports-unicode = "1.0.0"
|
supports-color = { version = "1.0.2", optional = true }
|
||||||
|
supports-unicode = { version = "1.0.0", optional = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
semver = "1.0.4"
|
semver = "1.0.4"
|
||||||
|
|
@ -35,5 +36,19 @@ rustversion = "1.0"
|
||||||
trybuild = { version = "1.0.19", features = ["diff"] }
|
trybuild = { version = "1.0.19", features = ["diff"] }
|
||||||
syn = { version = "1.0", features = ["full"] }
|
syn = { version = "1.0", features = ["full"] }
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = []
|
||||||
|
fancy = [
|
||||||
|
"owo-colors",
|
||||||
|
"atty",
|
||||||
|
"ci_info",
|
||||||
|
"textwrap",
|
||||||
|
"term_size",
|
||||||
|
"unicode-width",
|
||||||
|
"supports-hyperlinks",
|
||||||
|
"supports-color",
|
||||||
|
"supports-unicode"
|
||||||
|
]
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
members = ["miette-derive"]
|
members = ["miette-derive"]
|
||||||
|
|
|
||||||
14
README.md
14
README.md
|
|
@ -66,6 +66,12 @@ Using [`cargo-edit`](https://crates.io/crates/cargo-edit):
|
||||||
$ cargo add miette
|
$ cargo add miette
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If you want to use the fancy printer in all these screenshots:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ cargo add miette --features fancy
|
||||||
|
```
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
|
|
@ -240,6 +246,14 @@ fn pretend_this_is_main() -> Result<()> {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Please note: in order to get fancy diagnostic rendering with all the pretty
|
||||||
|
colors and arrows, you should install `miette` with the `fancy` feature
|
||||||
|
enabled:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
miette = { version = "X.Y.Z", features = ["fancy"] }
|
||||||
|
```
|
||||||
|
|
||||||
### ... diagnostic code URLs
|
### ... diagnostic code URLs
|
||||||
|
|
||||||
`miette` supports providing a URL for individual diagnostics. This URL will be
|
`miette` supports providing a URL for individual diagnostics. This URL will be
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,12 @@ pub use ReportHandler as EyreContext;
|
||||||
#[allow(unreachable_pub)]
|
#[allow(unreachable_pub)]
|
||||||
pub use WrapErr as Context;
|
pub use WrapErr as Context;
|
||||||
|
|
||||||
use crate::{Diagnostic, MietteHandler};
|
use crate::Diagnostic;
|
||||||
|
#[cfg(feature = "fancy")]
|
||||||
|
use crate::MietteHandler;
|
||||||
|
#[cfg(not(feature = "fancy"))]
|
||||||
|
use crate::NarratableReportHandler;
|
||||||
|
|
||||||
use error::ErrorImpl;
|
use error::ErrorImpl;
|
||||||
|
|
||||||
mod context;
|
mod context;
|
||||||
|
|
@ -87,7 +92,10 @@ fn capture_handler(error: &(dyn Diagnostic + 'static)) -> Box<dyn ReportHandler>
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_default_printer(_err: &(dyn Diagnostic + 'static)) -> Box<dyn ReportHandler + 'static> {
|
fn get_default_printer(_err: &(dyn Diagnostic + 'static)) -> Box<dyn ReportHandler + 'static> {
|
||||||
Box::new(MietteHandler::new())
|
#[cfg(feature = "fancy")]
|
||||||
|
return Box::new(MietteHandler::new());
|
||||||
|
#[cfg(not(feature = "fancy"))]
|
||||||
|
return Box::new(NarratableReportHandler::new());
|
||||||
}
|
}
|
||||||
|
|
||||||
impl dyn ReportHandler {
|
impl dyn ReportHandler {
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,16 @@ Reporters included with `miette`.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#[allow(unreachable_pub)]
|
#[allow(unreachable_pub)]
|
||||||
|
#[cfg(feature = "fancy")]
|
||||||
pub use graphical::*;
|
pub use graphical::*;
|
||||||
#[allow(unreachable_pub)]
|
#[allow(unreachable_pub)]
|
||||||
pub use narratable::*;
|
pub use narratable::*;
|
||||||
#[allow(unreachable_pub)]
|
#[allow(unreachable_pub)]
|
||||||
|
#[cfg(feature = "fancy")]
|
||||||
pub use theme::*;
|
pub use theme::*;
|
||||||
|
|
||||||
|
#[cfg(feature = "fancy")]
|
||||||
mod graphical;
|
mod graphical;
|
||||||
mod narratable;
|
mod narratable;
|
||||||
|
#[cfg(feature = "fancy")]
|
||||||
mod theme;
|
mod theme;
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ pub use miette_derive::*;
|
||||||
|
|
||||||
pub use error::*;
|
pub use error::*;
|
||||||
pub use eyreish::*;
|
pub use eyreish::*;
|
||||||
|
#[cfg(feature = "fancy")]
|
||||||
pub use handler::*;
|
pub use handler::*;
|
||||||
pub use handlers::*;
|
pub use handlers::*;
|
||||||
pub use named_source::*;
|
pub use named_source::*;
|
||||||
|
|
@ -14,6 +15,7 @@ pub use protocol::*;
|
||||||
mod chain;
|
mod chain;
|
||||||
mod error;
|
mod error;
|
||||||
mod eyreish;
|
mod eyreish;
|
||||||
|
#[cfg(feature = "fancy")]
|
||||||
mod handler;
|
mod handler;
|
||||||
mod handlers;
|
mod handlers;
|
||||||
mod named_source;
|
mod named_source;
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,18 @@
|
||||||
use miette::{
|
use miette::{
|
||||||
Diagnostic, GraphicalReportHandler, GraphicalTheme, MietteError, NamedSource,
|
Diagnostic, MietteError, NamedSource,
|
||||||
NarratableReportHandler, Report, SourceSpan,
|
NarratableReportHandler, Report, SourceSpan,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#[cfg(feature = "fancy")]
|
||||||
|
use miette::{GraphicalReportHandler, GraphicalTheme};
|
||||||
|
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
fn fmt_report(diag: Report) -> String {
|
fn fmt_report(diag: Report) -> String {
|
||||||
let mut out = String::new();
|
let mut out = String::new();
|
||||||
// Mostly for dev purposes.
|
// Mostly for dev purposes.
|
||||||
if std::env::var("STYLE").is_ok() {
|
if cfg!(feature = "fancy") && std::env::var("STYLE").is_ok() {
|
||||||
|
#[cfg(feature = "fancy")]
|
||||||
GraphicalReportHandler::new_themed(GraphicalTheme::unicode())
|
GraphicalReportHandler::new_themed(GraphicalTheme::unicode())
|
||||||
.render_report(&mut out, diag.as_ref())
|
.render_report(&mut out, diag.as_ref())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
#![cfg(feature = "fancy")]
|
||||||
|
|
||||||
use miette::{
|
use miette::{
|
||||||
Diagnostic, GraphicalReportHandler, GraphicalTheme, MietteError, NamedSource,
|
Diagnostic, GraphicalReportHandler, GraphicalTheme, MietteError, NamedSource,
|
||||||
NarratableReportHandler, Report, SourceSpan,
|
NarratableReportHandler, Report, SourceSpan,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue