parent
5ba4d47538
commit
94445ae745
|
@ -47,7 +47,7 @@ pub struct Site {
|
||||||
|
|
||||||
impl Site {
|
impl Site {
|
||||||
/// Parse a site at the given path. Defaults to the current dir
|
/// Parse a site at the given path. Defaults to the current dir
|
||||||
/// Passing in a path is only used in tests
|
/// Passing in a path is used in tests and when --root argument is passed
|
||||||
pub fn new<P: AsRef<Path>>(path: P, config_file: &str) -> Result<Site> {
|
pub fn new<P: AsRef<Path>>(path: P, config_file: &str) -> Result<Site> {
|
||||||
let path = path.as_ref();
|
let path = path.as_ref();
|
||||||
let mut config = get_config(path, config_file);
|
let mut config = get_config(path, config_file);
|
||||||
|
|
|
@ -50,12 +50,17 @@ You can override the default output directory `public` by passing another value
|
||||||
$ zola build --output-dir $DOCUMENT_ROOT
|
$ zola build --output-dir $DOCUMENT_ROOT
|
||||||
```
|
```
|
||||||
|
|
||||||
You can also point to a config file other than `config.toml` like so (note that the position of the `config` option is important):
|
You can point to a config file other than `config.toml` like so (note that the position of the `config` option is important):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ zola --config config.staging.toml build
|
$ zola --config config.staging.toml build
|
||||||
```
|
```
|
||||||
|
|
||||||
|
You can also process a project from a different directory with the `root` flag. If building a project 'out-of-tree' with the `root` flag, you may want to combine it with the `output-dir` flag. (Note that like `config`, the position is important):
|
||||||
|
```bash
|
||||||
|
$ zola --root /path/to/project build
|
||||||
|
```
|
||||||
|
|
||||||
By default, drafts are not loaded. If you wish to include them, pass the `--drafts` flag.
|
By default, drafts are not loaded. If you wish to include them, pass the `--drafts` flag.
|
||||||
|
|
||||||
## serve
|
## serve
|
||||||
|
|
|
@ -6,6 +6,14 @@ pub fn build_cli() -> App<'static, 'static> {
|
||||||
.author(crate_authors!())
|
.author(crate_authors!())
|
||||||
.about(crate_description!())
|
.about(crate_description!())
|
||||||
.setting(AppSettings::SubcommandRequiredElseHelp)
|
.setting(AppSettings::SubcommandRequiredElseHelp)
|
||||||
|
.arg(
|
||||||
|
Arg::with_name("root")
|
||||||
|
.short("r")
|
||||||
|
.long("root")
|
||||||
|
.takes_value(true)
|
||||||
|
.default_value(".")
|
||||||
|
.help("Directory to use as root of project")
|
||||||
|
)
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("config")
|
Arg::with_name("config")
|
||||||
.short("c")
|
.short("c")
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use std::env;
|
use std::path::Path;
|
||||||
|
|
||||||
use errors::Result;
|
use errors::Result;
|
||||||
use site::Site;
|
use site::Site;
|
||||||
|
@ -6,12 +6,13 @@ use site::Site;
|
||||||
use crate::console;
|
use crate::console;
|
||||||
|
|
||||||
pub fn build(
|
pub fn build(
|
||||||
|
root_dir: &Path,
|
||||||
config_file: &str,
|
config_file: &str,
|
||||||
base_url: Option<&str>,
|
base_url: Option<&str>,
|
||||||
output_dir: &str,
|
output_dir: &str,
|
||||||
include_drafts: bool,
|
include_drafts: bool,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let mut site = Site::new(env::current_dir().unwrap(), config_file)?;
|
let mut site = Site::new(root_dir, config_file)?;
|
||||||
site.set_output_path(output_dir);
|
site.set_output_path(output_dir);
|
||||||
if let Some(b) = base_url {
|
if let Some(b) = base_url {
|
||||||
site.set_base_url(b.to_string());
|
site.set_base_url(b.to_string());
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
use std::env;
|
use std::path::{Path,PathBuf};
|
||||||
use std::path::PathBuf;
|
|
||||||
|
|
||||||
use errors::Result;
|
use errors::Result;
|
||||||
use site::Site;
|
use site::Site;
|
||||||
|
@ -7,12 +6,13 @@ use site::Site;
|
||||||
use crate::console;
|
use crate::console;
|
||||||
|
|
||||||
pub fn check(
|
pub fn check(
|
||||||
|
root_dir: &Path,
|
||||||
config_file: &str,
|
config_file: &str,
|
||||||
base_path: Option<&str>,
|
base_path: Option<&str>,
|
||||||
base_url: Option<&str>,
|
base_url: Option<&str>,
|
||||||
include_drafts: bool,
|
include_drafts: bool,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let bp = base_path.map(PathBuf::from).unwrap_or_else(|| env::current_dir().unwrap());
|
let bp = base_path.map(PathBuf::from).unwrap_or_else(|| PathBuf::from(root_dir));
|
||||||
let mut site = Site::new(bp, config_file)?;
|
let mut site = Site::new(bp, config_file)?;
|
||||||
// Force the checking of external links
|
// Force the checking of external links
|
||||||
site.config.enable_check_mode();
|
site.config.enable_check_mode();
|
||||||
|
|
|
@ -158,6 +158,7 @@ fn rebuild_done_handling(broadcaster: &Option<Sender>, res: Result<()>, reload_p
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_new_site(
|
fn create_new_site(
|
||||||
|
root_dir: &Path,
|
||||||
interface: &str,
|
interface: &str,
|
||||||
port: u16,
|
port: u16,
|
||||||
output_dir: &str,
|
output_dir: &str,
|
||||||
|
@ -165,7 +166,7 @@ fn create_new_site(
|
||||||
config_file: &str,
|
config_file: &str,
|
||||||
include_drafts: bool,
|
include_drafts: bool,
|
||||||
) -> Result<(Site, String)> {
|
) -> Result<(Site, String)> {
|
||||||
let mut site = Site::new(env::current_dir().unwrap(), config_file)?;
|
let mut site = Site::new(root_dir, config_file)?;
|
||||||
|
|
||||||
let base_address = format!("{}:{}", base_url, port);
|
let base_address = format!("{}:{}", base_url, port);
|
||||||
let address = format!("{}:{}", interface, port);
|
let address = format!("{}:{}", interface, port);
|
||||||
|
@ -190,6 +191,7 @@ fn create_new_site(
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn serve(
|
pub fn serve(
|
||||||
|
root_dir: &Path,
|
||||||
interface: &str,
|
interface: &str,
|
||||||
port: u16,
|
port: u16,
|
||||||
output_dir: &str,
|
output_dir: &str,
|
||||||
|
@ -201,7 +203,7 @@ pub fn serve(
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let start = Instant::now();
|
let start = Instant::now();
|
||||||
let (mut site, address) =
|
let (mut site, address) =
|
||||||
create_new_site(interface, port, output_dir, base_url, config_file, include_drafts)?;
|
create_new_site(root_dir, interface, port, output_dir, base_url, config_file, include_drafts)?;
|
||||||
console::report_elapsed_time(start);
|
console::report_elapsed_time(start);
|
||||||
|
|
||||||
// Setup watchers
|
// Setup watchers
|
||||||
|
@ -443,6 +445,7 @@ pub fn serve(
|
||||||
"-> Themes changed. The whole site will be reloaded.",
|
"-> Themes changed. The whole site will be reloaded.",
|
||||||
);
|
);
|
||||||
site = create_new_site(
|
site = create_new_site(
|
||||||
|
root_dir,
|
||||||
interface,
|
interface,
|
||||||
port,
|
port,
|
||||||
output_dir,
|
output_dir,
|
||||||
|
@ -457,6 +460,7 @@ pub fn serve(
|
||||||
ChangeKind::Config => {
|
ChangeKind::Config => {
|
||||||
console::info("-> Config changed. The whole site will be reloaded. The browser needs to be refreshed to make the changes visible.");
|
console::info("-> Config changed. The whole site will be reloaded. The browser needs to be refreshed to make the changes visible.");
|
||||||
site = create_new_site(
|
site = create_new_site(
|
||||||
|
root_dir,
|
||||||
interface,
|
interface,
|
||||||
port,
|
port,
|
||||||
output_dir,
|
output_dir,
|
||||||
|
@ -504,6 +508,7 @@ pub fn serve(
|
||||||
"-> Themes changed. The whole site will be reloaded.",
|
"-> Themes changed. The whole site will be reloaded.",
|
||||||
);
|
);
|
||||||
site = create_new_site(
|
site = create_new_site(
|
||||||
|
root_dir,
|
||||||
interface,
|
interface,
|
||||||
port,
|
port,
|
||||||
output_dir,
|
output_dir,
|
||||||
|
@ -518,6 +523,7 @@ pub fn serve(
|
||||||
(ChangeKind::Config, _) => {
|
(ChangeKind::Config, _) => {
|
||||||
console::info("-> Config changed. The whole site will be reloaded. The browser needs to be refreshed to make the changes visible.");
|
console::info("-> Config changed. The whole site will be reloaded. The browser needs to be refreshed to make the changes visible.");
|
||||||
site = create_new_site(
|
site = create_new_site(
|
||||||
|
root_dir,
|
||||||
interface,
|
interface,
|
||||||
port,
|
port,
|
||||||
output_dir,
|
output_dir,
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
use std::env;
|
||||||
|
use std::path::PathBuf;
|
||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
|
|
||||||
use utils::net::{get_available_port, port_is_available};
|
use utils::net::{get_available_port, port_is_available};
|
||||||
|
@ -10,6 +12,10 @@ mod prompt;
|
||||||
fn main() {
|
fn main() {
|
||||||
let matches = cli::build_cli().get_matches();
|
let matches = cli::build_cli().get_matches();
|
||||||
|
|
||||||
|
let root_dir = match matches.value_of("root").unwrap() {
|
||||||
|
"." => env::current_dir().unwrap(),
|
||||||
|
path => PathBuf::from(path),
|
||||||
|
};
|
||||||
let config_file = matches.value_of("config").unwrap();
|
let config_file = matches.value_of("config").unwrap();
|
||||||
|
|
||||||
match matches.subcommand() {
|
match matches.subcommand() {
|
||||||
|
@ -27,6 +33,7 @@ fn main() {
|
||||||
let start = Instant::now();
|
let start = Instant::now();
|
||||||
let output_dir = matches.value_of("output_dir").unwrap();
|
let output_dir = matches.value_of("output_dir").unwrap();
|
||||||
match cmd::build(
|
match cmd::build(
|
||||||
|
&root_dir,
|
||||||
config_file,
|
config_file,
|
||||||
matches.value_of("base_url"),
|
matches.value_of("base_url"),
|
||||||
output_dir,
|
output_dir,
|
||||||
|
@ -70,6 +77,7 @@ fn main() {
|
||||||
let base_url = matches.value_of("base_url").unwrap();
|
let base_url = matches.value_of("base_url").unwrap();
|
||||||
console::info("Building site...");
|
console::info("Building site...");
|
||||||
match cmd::serve(
|
match cmd::serve(
|
||||||
|
&root_dir,
|
||||||
interface,
|
interface,
|
||||||
port,
|
port,
|
||||||
output_dir,
|
output_dir,
|
||||||
|
@ -90,6 +98,7 @@ fn main() {
|
||||||
console::info("Checking site...");
|
console::info("Checking site...");
|
||||||
let start = Instant::now();
|
let start = Instant::now();
|
||||||
match cmd::check(
|
match cmd::check(
|
||||||
|
&root_dir,
|
||||||
config_file,
|
config_file,
|
||||||
matches.value_of("base_path"),
|
matches.value_of("base_path"),
|
||||||
matches.value_of("base_url"),
|
matches.value_of("base_url"),
|
||||||
|
|
Loading…
Reference in a new issue