Made git-repository-url optional
parent
9660612724
commit
78606b8e67
37
src/lib.rs
37
src/lib.rs
|
@ -21,27 +21,27 @@ impl Preprocessor for LastChanged {
|
||||||
log::debug!("Src root: {}", src_root.display());
|
log::debug!("Src root: {}", src_root.display());
|
||||||
log::debug!("Git root: {}", git_root.display());
|
log::debug!("Git root: {}", git_root.display());
|
||||||
|
|
||||||
let repository_url = match ctx.config.get("output.html.git-repository-url") {
|
let repository_string: Option<&str> = match ctx.config.get("output.html.git-repository-url") {
|
||||||
None => {
|
Some(val) => {
|
||||||
log::error!("mdbook-last-changed was called, but no `output.html.git-repository-url` configured. Book is left unchanged.");
|
let url = match val {
|
||||||
return Ok(book);
|
|
||||||
}
|
|
||||||
Some(url) => url,
|
|
||||||
};
|
|
||||||
let repository_url = match repository_url {
|
|
||||||
toml::Value::String(s) => s,
|
toml::Value::String(s) => s,
|
||||||
_ => {
|
_ => {
|
||||||
log::trace!("git-repository-url is not a string: {repository_url:?}");
|
log::trace!("git-repository-url is not a string: {val:?}");
|
||||||
return Ok(book);
|
return Ok(book);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
log::debug!("Repository URL: {}", repository_url);
|
log::debug!("Repository URL: {}", url);
|
||||||
|
|
||||||
if !repository_url.contains("github.com") {
|
if !url.contains("github.com") {
|
||||||
log::trace!("git-repository-url is not a GitHub URL: {repository_url:?}");
|
log::trace!("git-repository-url is not a GitHub URL: {url:?}");
|
||||||
return Ok(book);
|
return Ok(book);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Some(&url)
|
||||||
|
}
|
||||||
|
None => None,
|
||||||
|
};
|
||||||
|
|
||||||
let mut res = None;
|
let mut res = None;
|
||||||
book.for_each_mut(|item: &mut BookItem| {
|
book.for_each_mut(|item: &mut BookItem| {
|
||||||
if let Some(Err(_)) = res {
|
if let Some(Err(_)) = res {
|
||||||
|
@ -51,7 +51,7 @@ impl Preprocessor for LastChanged {
|
||||||
|
|
||||||
if let BookItem::Chapter(ref mut chapter) = *item {
|
if let BookItem::Chapter(ref mut chapter) = *item {
|
||||||
res = Some(
|
res = Some(
|
||||||
last_changed(&git_root, &src_root, repository_url, chapter).map(|md| {
|
last_changed(&git_root, &src_root, repository_string, chapter).map(|md| {
|
||||||
chapter.content = md;
|
chapter.content = md;
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
@ -65,7 +65,7 @@ impl Preprocessor for LastChanged {
|
||||||
fn last_changed(
|
fn last_changed(
|
||||||
git_root: &Path,
|
git_root: &Path,
|
||||||
src_root: &Path,
|
src_root: &Path,
|
||||||
base_url: &str,
|
base_url: Option<&str>,
|
||||||
chapter: &mut Chapter,
|
chapter: &mut Chapter,
|
||||||
) -> Result<String> {
|
) -> Result<String> {
|
||||||
let content = &chapter.content;
|
let content = &chapter.content;
|
||||||
|
@ -94,13 +94,18 @@ fn last_changed(
|
||||||
|
|
||||||
let modification = get_last_modification(git_root, &path);
|
let modification = get_last_modification(git_root, &path);
|
||||||
let text = match modification {
|
let text = match modification {
|
||||||
Ok((date, commit)) => {
|
Ok((date, commit)) => match base_url {
|
||||||
let url = format!("{}/commit/{}", base_url, commit);
|
Some(url) => {
|
||||||
|
let url = format!("{}/commit/{}", url, commit);
|
||||||
format!(
|
format!(
|
||||||
"Last change: {}, commit: <a href=\"{}\">{}</a>",
|
"Last change: {}, commit: <a href=\"{}\">{}</a>",
|
||||||
date, url, commit
|
date, url, commit
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
None => {
|
||||||
|
format!("Last change: {}", date)
|
||||||
|
}
|
||||||
|
},
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::trace!("No modification found for {path:?}. Error: {e:?}");
|
log::trace!("No modification found for {path:?}. Error: {e:?}");
|
||||||
return Ok(content.into());
|
return Ok(content.into());
|
||||||
|
|
Loading…
Reference in New Issue