Move error types to mdbook-core
This moves Result and Error to mdbook-core with the anticipation of using them in user crates. For now, the internal APIs will be using anyhow directly, but the intent is to transition more of these to mdbook-core where it makes sense.
This commit is contained in:
parent
461884f109
commit
f51d89ba02
34 changed files with 67 additions and 65 deletions
4
Cargo.lock
generated
4
Cargo.lock
generated
|
|
@ -1297,6 +1297,9 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "mdbook-core"
|
||||
version = "0.5.0-alpha.1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mdbook-preprocessor"
|
||||
|
|
@ -1309,6 +1312,7 @@ dependencies = [
|
|||
name = "mdbook-remove-emphasis"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"mdbook",
|
||||
"pulldown-cmark 0.12.2",
|
||||
"pulldown-cmark-to-cmark",
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ repository = "https://github.com/rust-lang/mdBook"
|
|||
rust-version = "1.85.0" # Keep in sync with installation.md and .github/workflows/main.yml
|
||||
|
||||
[workspace.dependencies]
|
||||
anyhow = "1.0.98"
|
||||
mdbook-core = { path = "crates/mdbook-core" }
|
||||
|
||||
[package]
|
||||
|
|
@ -42,7 +43,7 @@ description = "Creates a book from markdown files"
|
|||
rust-version.workspace = true
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1.0.71"
|
||||
anyhow.workspace = true
|
||||
chrono = { version = "0.4.24", default-features = false, features = ["clock"] }
|
||||
clap = { version = "4.3.12", features = ["cargo", "wrap_help"] }
|
||||
clap_complete = "4.3.2"
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ repository.workspace = true
|
|||
rust-version.workspace = true
|
||||
|
||||
[dependencies]
|
||||
anyhow.workspace = true
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
|
|
|||
|
|
@ -5,3 +5,8 @@
|
|||
/// This is provided as a way for custom preprocessors and renderers to do
|
||||
/// compatibility checks.
|
||||
pub const MDBOOK_VERSION: &str = env!("CARGO_PKG_VERSION");
|
||||
|
||||
/// The error types used in mdbook.
|
||||
pub mod errors {
|
||||
pub use anyhow::{Error, Result};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
//! A basic example of a preprocessor that does nothing.
|
||||
|
||||
use crate::nop_lib::Nop;
|
||||
use anyhow::Error;
|
||||
use clap::{Arg, ArgMatches, Command};
|
||||
use mdbook::book::Book;
|
||||
use mdbook::errors::Error;
|
||||
use mdbook::preprocess::{CmdPreprocessor, Preprocessor, PreprocessorContext};
|
||||
use semver::{Version, VersionReq};
|
||||
use std::io;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ version = "0.1.0"
|
|||
edition.workspace = true
|
||||
|
||||
[dependencies]
|
||||
anyhow.workspace = true
|
||||
mdbook = { path = "../../.." }
|
||||
pulldown-cmark = { version = "0.12.2", default-features = false }
|
||||
pulldown-cmark-to-cmark = "18.0.0"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
//! This is a demonstration of an mdBook preprocessor which parses markdown
|
||||
//! and removes any instances of emphasis.
|
||||
|
||||
use anyhow::Error;
|
||||
use mdbook::BookItem;
|
||||
use mdbook::book::{Book, Chapter};
|
||||
use mdbook::errors::Error;
|
||||
use mdbook::preprocess::{CmdPreprocessor, Preprocessor, PreprocessorContext};
|
||||
use pulldown_cmark::{Event, Parser, Tag, TagEnd};
|
||||
use std::io;
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ use std::path::{Path, PathBuf};
|
|||
|
||||
use super::summary::{Link, SectionNumber, Summary, SummaryItem, parse_summary};
|
||||
use crate::config::BuildConfig;
|
||||
use crate::errors::*;
|
||||
use crate::utils::bracket_escape;
|
||||
use anyhow::{Context, Result};
|
||||
use log::debug;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@ use std::path::PathBuf;
|
|||
|
||||
use super::MDBook;
|
||||
use crate::config::Config;
|
||||
use crate::errors::*;
|
||||
use crate::theme;
|
||||
use crate::utils::fs::write_file;
|
||||
use anyhow::{Context, Result};
|
||||
use log::{debug, error, info, trace};
|
||||
|
||||
/// A helper for setting up a new book and its directory structure.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ pub use self::book::{Book, BookItem, BookItems, Chapter, load_book};
|
|||
pub use self::init::BookBuilder;
|
||||
pub use self::summary::{Link, SectionNumber, Summary, SummaryItem, parse_summary};
|
||||
|
||||
use anyhow::{Context, Error, Result, bail};
|
||||
use log::{debug, error, info, log_enabled, trace, warn};
|
||||
use std::ffi::OsString;
|
||||
use std::io::{IsTerminal, Write};
|
||||
|
|
@ -22,7 +23,6 @@ use tempfile::Builder as TempFileBuilder;
|
|||
use toml::Value;
|
||||
use topological_sort::TopologicalSort;
|
||||
|
||||
use crate::errors::*;
|
||||
use crate::preprocess::{
|
||||
CmdPreprocessor, IndexPreprocessor, LinkPreprocessor, Preprocessor, PreprocessorContext,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
use crate::errors::*;
|
||||
use anyhow::{Context, Error, Result, bail};
|
||||
use log::{debug, trace, warn};
|
||||
use memchr::Memchr;
|
||||
use pulldown_cmark::{DefaultBrokenLinkCallback, Event, HeadingLevel, Tag, TagEnd};
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
use super::command_prelude::*;
|
||||
use crate::{get_book_dir, open};
|
||||
use anyhow::Result;
|
||||
use mdbook::MDBook;
|
||||
use mdbook::errors::Result;
|
||||
use std::path::PathBuf;
|
||||
|
||||
// Create clap subcommand arguments
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
use super::command_prelude::*;
|
||||
use crate::get_book_dir;
|
||||
use anyhow::Context;
|
||||
use anyhow::Result;
|
||||
use mdbook::MDBook;
|
||||
use std::mem::take;
|
||||
use std::path::PathBuf;
|
||||
|
|
@ -15,7 +16,7 @@ pub fn make_subcommand() -> Command {
|
|||
}
|
||||
|
||||
// Clean command implementation
|
||||
pub fn execute(args: &ArgMatches) -> mdbook::errors::Result<()> {
|
||||
pub fn execute(args: &ArgMatches) -> Result<()> {
|
||||
let book_dir = get_book_dir(args);
|
||||
let book = MDBook::load(book_dir)?;
|
||||
|
||||
|
|
@ -47,7 +48,7 @@ pub struct Clean {
|
|||
}
|
||||
|
||||
impl Clean {
|
||||
fn new(dir: &PathBuf) -> mdbook::errors::Result<Clean> {
|
||||
fn new(dir: &PathBuf) -> Result<Clean> {
|
||||
let mut files = vec![dir.clone()];
|
||||
let mut children = Vec::new();
|
||||
let mut num_files_removed = 0;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
use crate::get_book_dir;
|
||||
use anyhow::Result;
|
||||
use clap::{ArgMatches, Command as ClapCommand, arg};
|
||||
use mdbook::MDBook;
|
||||
use mdbook::config;
|
||||
use mdbook::errors::Result;
|
||||
use std::io;
|
||||
use std::io::Write;
|
||||
use std::process::Command;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ use super::command_prelude::*;
|
|||
#[cfg(feature = "watch")]
|
||||
use super::watch;
|
||||
use crate::{get_book_dir, open};
|
||||
use anyhow::Result;
|
||||
use axum::Router;
|
||||
use axum::extract::ws::{Message, WebSocket, WebSocketUpgrade};
|
||||
use axum::routing::get;
|
||||
|
|
@ -9,7 +10,6 @@ use clap::builder::NonEmptyStringValueParser;
|
|||
use futures_util::StreamExt;
|
||||
use futures_util::sink::SinkExt;
|
||||
use mdbook::MDBook;
|
||||
use mdbook::errors::*;
|
||||
use mdbook::utils::fs::get_404_output_file;
|
||||
use std::net::{SocketAddr, ToSocketAddrs};
|
||||
use std::path::PathBuf;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
use super::command_prelude::*;
|
||||
use crate::get_book_dir;
|
||||
use anyhow::Result;
|
||||
use clap::ArgAction;
|
||||
use clap::builder::NonEmptyStringValueParser;
|
||||
use mdbook::MDBook;
|
||||
use mdbook::errors::Result;
|
||||
use std::path::PathBuf;
|
||||
|
||||
// Create clap subcommand arguments
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
use super::command_prelude::*;
|
||||
use crate::{get_book_dir, open};
|
||||
use anyhow::Result;
|
||||
use mdbook::MDBook;
|
||||
use mdbook::errors::Result;
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
mod native;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
//! # Examples
|
||||
//!
|
||||
//! ```rust
|
||||
//! # use mdbook::errors::*;
|
||||
//! # use anyhow::Result;
|
||||
//! use std::path::PathBuf;
|
||||
//! use std::str::FromStr;
|
||||
//! use mdbook::Config;
|
||||
|
|
@ -47,6 +47,8 @@
|
|||
//! # run().unwrap()
|
||||
//! ```
|
||||
|
||||
use crate::utils::{self, toml_ext::TomlExt};
|
||||
use anyhow::{Context, Error, Result, bail};
|
||||
use log::{debug, trace, warn};
|
||||
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||
use std::collections::HashMap;
|
||||
|
|
@ -58,9 +60,6 @@ use std::str::FromStr;
|
|||
use toml::Value;
|
||||
use toml::value::Table;
|
||||
|
||||
use crate::errors::*;
|
||||
use crate::utils::{self, toml_ext::TomlExt};
|
||||
|
||||
/// The overall configuration object for MDBook, essentially an in-memory
|
||||
/// representation of `book.toml`.
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
|
|
|
|||
|
|
@ -1,18 +1,16 @@
|
|||
#![allow(missing_docs)]
|
||||
|
||||
pub mod playground_editor;
|
||||
|
||||
pub mod fonts;
|
||||
|
||||
#[cfg(feature = "search")]
|
||||
pub mod searcher;
|
||||
|
||||
use anyhow::Result;
|
||||
use log::warn;
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
use crate::errors::*;
|
||||
use log::warn;
|
||||
pub mod fonts;
|
||||
pub mod playground_editor;
|
||||
#[cfg(feature = "search")]
|
||||
pub mod searcher;
|
||||
|
||||
pub static INDEX: &[u8] = include_bytes!("templates/index.hbs");
|
||||
pub static HEAD: &[u8] = include_bytes!("templates/head.hbs");
|
||||
pub static REDIRECT: &[u8] = include_bytes!("templates/redirect.hbs");
|
||||
|
|
|
|||
|
|
@ -93,9 +93,3 @@ pub use crate::book::MDBook;
|
|||
pub use crate::config::Config;
|
||||
pub use crate::renderer::Renderer;
|
||||
pub use mdbook_core::MDBOOK_VERSION;
|
||||
|
||||
/// The error types used through out this crate.
|
||||
pub mod errors {
|
||||
pub(crate) use anyhow::{Context, bail, ensure};
|
||||
pub use anyhow::{Error, Result};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
use super::{Preprocessor, PreprocessorContext};
|
||||
use crate::book::Book;
|
||||
use crate::errors::*;
|
||||
use anyhow::{Context, Result, bail, ensure};
|
||||
use log::{debug, trace, warn};
|
||||
use shlex::Shlex;
|
||||
use std::io::{self, Read, Write};
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ use std::{path::Path, sync::LazyLock};
|
|||
|
||||
use super::{Preprocessor, PreprocessorContext};
|
||||
use crate::book::{Book, BookItem};
|
||||
use crate::errors::*;
|
||||
use anyhow::Result;
|
||||
use log::warn;
|
||||
|
||||
/// A preprocessor for converting file name `README.md` to `index.md` since
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
use crate::errors::*;
|
||||
use crate::utils::{
|
||||
take_anchored_lines, take_lines, take_rustdoc_include_anchored_lines,
|
||||
take_rustdoc_include_lines,
|
||||
};
|
||||
use anyhow::{Context, Result};
|
||||
use regex::{CaptureMatches, Captures, Regex};
|
||||
use std::fs;
|
||||
use std::ops::{Bound, Range, RangeBounds, RangeFrom, RangeFull, RangeTo};
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ mod links;
|
|||
|
||||
use crate::book::Book;
|
||||
use crate::config::Config;
|
||||
use crate::errors::*;
|
||||
use anyhow::Result;
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::cell::RefCell;
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
use crate::book::{Book, BookItem};
|
||||
use crate::config::{BookConfig, Code, Config, HtmlConfig, Playground, RustEdition};
|
||||
use crate::errors::*;
|
||||
use crate::renderer::html_handlebars::StaticFiles;
|
||||
use crate::renderer::html_handlebars::helpers;
|
||||
use crate::renderer::{RenderContext, Renderer};
|
||||
use crate::theme::{self, Theme};
|
||||
use crate::utils;
|
||||
use crate::utils::fs::get_404_output_file;
|
||||
|
||||
use std::borrow::Cow;
|
||||
use std::collections::BTreeMap;
|
||||
|
|
@ -14,7 +14,7 @@ use std::fs::{self, File};
|
|||
use std::path::{Path, PathBuf};
|
||||
use std::sync::LazyLock;
|
||||
|
||||
use crate::utils::fs::get_404_output_file;
|
||||
use anyhow::{Context, Result, bail};
|
||||
use handlebars::Handlebars;
|
||||
use log::{debug, info, trace, warn};
|
||||
use regex::{Captures, Regex};
|
||||
|
|
|
|||
|
|
@ -3,17 +3,17 @@ use std::collections::{HashMap, HashSet};
|
|||
use std::path::{Path, PathBuf};
|
||||
use std::sync::LazyLock;
|
||||
|
||||
use anyhow::{Context, Result, bail};
|
||||
use elasticlunr::{Index, IndexBuilder};
|
||||
use log::{debug, warn};
|
||||
use pulldown_cmark::*;
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::book::{Book, BookItem, Chapter};
|
||||
use crate::config::{Search, SearchChapterSettings};
|
||||
use crate::errors::*;
|
||||
use crate::renderer::html_handlebars::StaticFiles;
|
||||
use crate::theme::searcher;
|
||||
use crate::utils;
|
||||
use log::{debug, warn};
|
||||
use serde::Serialize;
|
||||
|
||||
const MAX_WORD_LENGTH_TO_INDEX: usize = 80;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
//! Support for writing static files.
|
||||
|
||||
use anyhow::{Context, Result};
|
||||
use log::{debug, warn};
|
||||
|
||||
use crate::config::HtmlConfig;
|
||||
use crate::errors::*;
|
||||
use crate::renderer::html_handlebars::helpers::resources::ResourceHelper;
|
||||
use crate::theme::{self, Theme, playground_editor};
|
||||
use crate::utils;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
use crate::book::BookItem;
|
||||
use crate::errors::*;
|
||||
use crate::renderer::{RenderContext, Renderer};
|
||||
use crate::utils;
|
||||
use anyhow::{Context, Result};
|
||||
use log::trace;
|
||||
use std::fs;
|
||||
|
||||
|
|
|
|||
|
|
@ -11,26 +11,24 @@
|
|||
//! [For Developers]: https://rust-lang.github.io/mdBook/for_developers/index.html
|
||||
//! [RenderContext]: struct.RenderContext.html
|
||||
|
||||
pub use self::html_handlebars::HtmlHandlebars;
|
||||
pub use self::markdown_renderer::MarkdownRenderer;
|
||||
|
||||
mod html_handlebars;
|
||||
mod markdown_renderer;
|
||||
|
||||
use crate::book::Book;
|
||||
use crate::config::Config;
|
||||
use anyhow::{Context, Result, bail};
|
||||
use log::{error, info, trace, warn};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use shlex::Shlex;
|
||||
use std::collections::HashMap;
|
||||
use std::fs;
|
||||
use std::io::{self, ErrorKind, Read};
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::process::{Command, Stdio};
|
||||
|
||||
use crate::book::Book;
|
||||
use crate::config::Config;
|
||||
use crate::errors::*;
|
||||
use log::{error, info, trace, warn};
|
||||
use toml::Value;
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
pub use self::html_handlebars::HtmlHandlebars;
|
||||
pub use self::markdown_renderer::MarkdownRenderer;
|
||||
|
||||
mod html_handlebars;
|
||||
mod markdown_renderer;
|
||||
|
||||
/// An arbitrary `mdbook` backend.
|
||||
///
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
//! Filesystem utilities and helpers.
|
||||
|
||||
use crate::errors::*;
|
||||
use anyhow::{Context, Result};
|
||||
use log::{debug, trace};
|
||||
use std::fs::{self, File};
|
||||
use std::io::Write;
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
//! Various helpers and utilities.
|
||||
|
||||
pub mod fs;
|
||||
mod string;
|
||||
pub(crate) mod toml_ext;
|
||||
use crate::errors::Error;
|
||||
use anyhow::Error;
|
||||
use log::error;
|
||||
use pulldown_cmark::{CodeBlockKind, CowStr, Event, Options, Parser, Tag, TagEnd, html};
|
||||
use regex::Regex;
|
||||
|
||||
use std::borrow::Cow;
|
||||
use std::collections::HashMap;
|
||||
use std::fmt::Write;
|
||||
use std::path::Path;
|
||||
use std::sync::LazyLock;
|
||||
|
||||
pub mod fs;
|
||||
mod string;
|
||||
pub(crate) mod toml_ext;
|
||||
|
||||
pub use self::string::{
|
||||
take_anchored_lines, take_lines, take_rustdoc_include_anchored_lines,
|
||||
take_rustdoc_include_lines,
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
//! Tests for custom preprocessors.
|
||||
|
||||
use crate::prelude::*;
|
||||
use anyhow::Result;
|
||||
use mdbook::book::Book;
|
||||
use mdbook::errors::Result;
|
||||
use mdbook::preprocess::{CmdPreprocessor, Preprocessor, PreprocessorContext};
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
//! Tests for custom renderers.
|
||||
|
||||
use crate::prelude::*;
|
||||
use mdbook::errors::Result;
|
||||
use anyhow::Result;
|
||||
use mdbook::renderer::{RenderContext, Renderer};
|
||||
use snapbox::IntoData;
|
||||
use std::fs::File;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
use crate::prelude::*;
|
||||
use anyhow::Context;
|
||||
use mdbook::errors::*;
|
||||
use anyhow::Result;
|
||||
use select::document::Document;
|
||||
use select::predicate::{Attr, Class, Name, Predicate};
|
||||
use std::fs;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue