Files
docki/src/app/build/mod.rs

50 lines
1.2 KiB
Rust

use std::fs;
use self::asciidoctor::{build_doc, build_slide};
use super::fs_util;
pub mod asciidoctor;
pub fn docki_build(in_path: &str) -> DockiBuildResult {
let out_path = in_path.replace("/docs/", "/dist/");
let convert_out_path = out_path.replace(".adoc", ".html");
if in_path.starts_with("./docs/slides/") && in_path.ends_with(".adoc") {
if let Err(err) = build_slide(&in_path, &convert_out_path) {
return DockiBuildResult::Err(err);
}
DockiBuildResult::Slide(convert_out_path)
} else if in_path.ends_with(".adoc") {
if let Err(err) = build_doc(&in_path, &convert_out_path) {
return DockiBuildResult::Err(err);
}
DockiBuildResult::Doc(convert_out_path)
} else {
if let Err(err) = copy(&in_path, &out_path) {
return DockiBuildResult::Err(err);
}
DockiBuildResult::Copy(out_path)
}
}
fn copy(in_path: &str, out_path: &str) -> Result<(), String> {
fs_util::create_parent_dir_recursive(out_path);
if let Err(err) = fs::copy(in_path, out_path) {
return Err(err.to_string());
}
Ok(())
}
pub enum DockiBuildResult {
Slide(String),
Doc(String),
Copy(String),
Err(String),
}