mirror of
https://github.com/rust-lang/mdBook
synced 2024-12-04 18:19:27 +00:00
Started to implement init
This commit is contained in:
parent
b94304405a
commit
a27bc498eb
4 changed files with 92 additions and 3 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,2 +1,4 @@
|
|||
target
|
||||
Cargo.lock
|
||||
|
||||
book-test
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
#[test]
|
||||
fn it_works() {
|
||||
}
|
||||
pub mod mdbook;
|
||||
|
||||
pub use mdbook::MDBook;
|
||||
|
|
|
@ -2,6 +2,7 @@ extern crate mdbook;
|
|||
extern crate getopts;
|
||||
use std::env;
|
||||
|
||||
use mdbook::MDBook;
|
||||
|
||||
const NAME: &'static str = "mdbook";
|
||||
const VERSION: &'static str = "0.0.1";
|
||||
|
@ -108,7 +109,14 @@ fn init(args: Vec<String>) {
|
|||
|
||||
if matches.opt_present("help") {
|
||||
println!("{}", usage);
|
||||
return;
|
||||
}
|
||||
|
||||
let dir = std::env::current_dir().unwrap();
|
||||
let book = MDBook::new();
|
||||
|
||||
book.init(&dir);
|
||||
|
||||
}
|
||||
|
||||
fn build(args: Vec<String>) {
|
||||
|
|
79
src/mdbook.rs
Normal file
79
src/mdbook.rs
Normal file
|
@ -0,0 +1,79 @@
|
|||
use std::path::PathBuf;
|
||||
use std::fs::{self, File, metadata};
|
||||
|
||||
pub struct MDBook {
|
||||
dest: PathBuf,
|
||||
src: PathBuf,
|
||||
}
|
||||
|
||||
impl MDBook {
|
||||
pub fn new() -> Self {
|
||||
MDBook {
|
||||
dest: PathBuf::from("book"),
|
||||
src: PathBuf::from("src"),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn init(&self, dir: &PathBuf) -> Result<(),&str> {
|
||||
|
||||
// Hacky way to check if the directory exists... Until PathExt moves to stable
|
||||
match metadata(dir) {
|
||||
Err(_) => return Err("Destination path does not exist"),
|
||||
_ => {}
|
||||
}
|
||||
|
||||
let dest = if self.dest.is_relative() {
|
||||
dir.join(&self.dest)
|
||||
} else {
|
||||
self.dest.clone()
|
||||
};
|
||||
|
||||
let src = if self.src.is_relative() {
|
||||
dir.join(&self.src)
|
||||
} else {
|
||||
self.src.clone()
|
||||
};
|
||||
|
||||
// Hacky way to check if the directory exists... Until PathExt moves to stable
|
||||
match metadata(&dest) {
|
||||
Err(_) => {
|
||||
// There is a very high chance that the error is due to the fact that
|
||||
// the directory / file does not exist
|
||||
fs::create_dir(&dest).unwrap();
|
||||
},
|
||||
Ok(_) => { /* If there is no error, the directory / file does exist */ }
|
||||
}
|
||||
|
||||
// Hacky way to check if the directory exists... Until PathExt moves to stable
|
||||
match metadata(&src) {
|
||||
Err(_) => {
|
||||
// There is a very high chance that the error is due to the fact that
|
||||
// the directory / file does not exist
|
||||
fs::create_dir(&src).unwrap();
|
||||
},
|
||||
Ok(_) => { /* If there is no error, the directory / file does exist */ }
|
||||
}
|
||||
|
||||
// Hacky way to check if the directory exists... Until PathExt moves to stable
|
||||
match metadata(dir.join("src/SUMMARY.md")) {
|
||||
Err(_) => {
|
||||
// There is a very high chance that the error is due to the fact that
|
||||
// the directory / file does not exist
|
||||
File::create("src/SUMMARY.md").unwrap();
|
||||
},
|
||||
Ok(_) => { /* If there is no error, the directory / file does exist */ }
|
||||
}
|
||||
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
pub fn set_dest(mut self, dest: PathBuf) -> Self {
|
||||
self.dest = dest;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn set_src(mut self, src: PathBuf) -> Self {
|
||||
self.src = src;
|
||||
self
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue