cli: Prepare for rebuilding the site via file watcher.
This commit is contained in:
parent
ad01c42ac2
commit
936e91517f
34
src/main.rs
34
src/main.rs
|
@ -20,7 +20,7 @@ use chrono::prelude::*;
|
||||||
use colored::Colorize;
|
use colored::Colorize;
|
||||||
use docopt::Docopt;
|
use docopt::Docopt;
|
||||||
|
|
||||||
use notify::{RecommendedWatcher, RecursiveMode, Watcher};
|
use notify::{DebouncedEvent, RecommendedWatcher, RecursiveMode, Watcher};
|
||||||
|
|
||||||
use rookeries::{
|
use rookeries::{
|
||||||
cli::{
|
cli::{
|
||||||
|
@ -210,19 +210,47 @@ fn watch(watch_path: String) -> notify::Result<()> {
|
||||||
let plugins_dir = project_root_dir.join("plugins");
|
let plugins_dir = project_root_dir.join("plugins");
|
||||||
watcher.watch(plugins_dir, RecursiveMode::NonRecursive)?;
|
watcher.watch(plugins_dir, RecursiveMode::NonRecursive)?;
|
||||||
|
|
||||||
|
let build_dir = project_root_dir.join("build");
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
match rx.recv() {
|
match rx.recv() {
|
||||||
// TODO: Add calls to build_site()
|
|
||||||
// TODO: Add more fine-grained control to avoid a full rebuild for minor changes.
|
// TODO: Add more fine-grained control to avoid a full rebuild for minor changes.
|
||||||
Ok(event) => details_message(&format!("{:?}", event)),
|
// TODO: Add in a safe place to build the site.
|
||||||
|
Ok(event) => {
|
||||||
|
details_message(&format!("{:?}", event));
|
||||||
|
|
||||||
|
match event {
|
||||||
|
DebouncedEvent::Rescan => (),
|
||||||
|
DebouncedEvent::Remove(path) => {
|
||||||
|
if path.starts_with(&build_dir) {
|
||||||
|
details_message("Build path");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DebouncedEvent::Create(path) => {
|
||||||
|
if path.starts_with(&build_dir) {
|
||||||
|
details_message("Build path");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
details_message("Not build path");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Err(e) => details_message(&format!("watch error: {:?}", e)),
|
Err(e) => details_message(&format!("watch error: {:?}", e)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[deprecated]
|
||||||
fn build_site(args: &Args) -> Result {
|
fn build_site(args: &Args) -> Result {
|
||||||
header_message("Building the site...");
|
header_message("Building the site...");
|
||||||
let project_directory = get_project_directory(&args)?;
|
let project_directory = get_project_directory(&args)?;
|
||||||
|
build_site_from_path(project_directory)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Update to be just build_site...
|
||||||
|
fn build_site_from_path(project_directory: PathBuf) -> Result {
|
||||||
|
header_message("Building the site...");
|
||||||
|
|
||||||
// Check if project manifest is available.
|
// Check if project manifest is available.
|
||||||
let project_manifest = project_directory.clone().join("site.toml");
|
let project_manifest = project_directory.clone().join("site.toml");
|
||||||
|
|
Loading…
Reference in New Issue