Skip to content

Commit

Permalink
Always open index page with serve --open
Browse files Browse the repository at this point in the history
  • Loading branch information
ISSOtm committed Jul 1, 2022
1 parent a10a57e commit 42129c6
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 35 deletions.
16 changes: 6 additions & 10 deletions src/cmd/build.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
use crate::{first_chapter, get_book_dir, open};
use crate::{get_book_dir, open};
use clap::{arg, App, Arg, ArgMatches};
use mdbook::errors::Result;
use mdbook::MDBook;
use std::path::Path;

// Create clap subcommand arguments
pub fn make_subcommand<'help>() -> App<'help> {
Expand Down Expand Up @@ -39,15 +38,12 @@ pub fn execute(args: &ArgMatches) -> Result<()> {

if args.is_present("open") {
// FIXME: What's the right behaviour if we don't use the HTML renderer?
match first_chapter(&book)
.map(|path| book.build_dir_for("html").join(path).with_extension("html"))
{
Some(path) if Path::new(&path).exists() => open(path),
_ => {
error!("No chapter available to open");
std::process::exit(1)
}
let path = book.build_dir_for("html").join("index.html");
if !path.exists() {
error!("No chapter available to open");
std::process::exit(1)
}
open(path);
}

Ok(())
Expand Down
7 changes: 2 additions & 5 deletions src/cmd/serve.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#[cfg(feature = "watch")]
use super::watch;
use crate::{first_chapter, get_book_dir, open};
use crate::{get_book_dir, open};
use clap::{arg, App, Arg, ArgMatches};
use futures_util::sink::SinkExt;
use futures_util::StreamExt;
Expand Down Expand Up @@ -103,10 +103,7 @@ pub fn execute(args: &ArgMatches) -> Result<()> {
});

if open_browser {
let serving_url = match first_chapter(&book).map(|path| path.with_extension("html")) {
Some(path) => format!("http://{}/{}", address, path.display()),
_ => format!("http://{}", address),
};
let serving_url = format!("http://{}", address);
info!("Serving on: {}", serving_url);
open(serving_url);
}
Expand Down
11 changes: 5 additions & 6 deletions src/cmd/watch.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
use crate::first_chapter;
use crate::{get_book_dir, open};
use clap::{arg, App, Arg, ArgMatches};
use mdbook::errors::Result;
Expand Down Expand Up @@ -46,12 +45,12 @@ pub fn execute(args: &ArgMatches) -> Result<()> {

if args.is_present("open") {
book.build()?;
match first_chapter(&book)
.map(|path| book.build_dir_for("html").join(path).with_extension("html"))
{
Some(path) if Path::new(&path).exists() => open(path),
_ => warn!("No chapter available to open"),
let path = book.build_dir_for("html").join("index.html");
if !path.exists() {
error!("No chapter available to open");
std::process::exit(1)
}
open(path);
}

trigger_on_change(&book, |paths, book_dir| {
Expand Down
14 changes: 0 additions & 14 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,7 @@ use clap::{App, AppSettings, Arg, ArgMatches};
use clap_complete::Shell;
use env_logger::Builder;
use log::LevelFilter;
use mdbook::book::Chapter;
use mdbook::utils;
use mdbook::BookItem;
use mdbook::MDBook;
use std::env;
use std::ffi::OsStr;
use std::io::Write;
Expand Down Expand Up @@ -140,17 +137,6 @@ fn get_book_dir(args: &ArgMatches) -> PathBuf {
}
}

// Return the first displayable chapter of the given book, or None if no displayable
// chapter is found (i.e. only drafts).
fn first_chapter(book: &MDBook) -> Option<&PathBuf> {
book.iter().find_map(|item| match item {
BookItem::Chapter(Chapter {
path: Some(path), ..
}) => Some(path),
_ => None,
})
}

fn open<P: AsRef<OsStr>>(path: P) {
info!("Opening web browser");
if let Err(e) = opener::open(path) {
Expand Down

0 comments on commit 42129c6

Please sign in to comment.