Skip to content

Commit

Permalink
fix(init): handle already existing path (#815)
Browse files Browse the repository at this point in the history
* fix(init):  handle already existing path

* chore: add tests
  • Loading branch information
riginding authored and Keats committed Feb 3, 2020
1 parent 3f16628 commit 94b49da
Showing 1 changed file with 71 additions and 9 deletions.
80 changes: 71 additions & 9 deletions src/cmd/init.rs
Expand Up @@ -86,9 +86,23 @@ pub fn create_new_project(name: &str) -> Result<()> {
.replace("%SEARCH%", &format!("{}", search))
.replace("%HIGHLIGHT%", &format!("{}", highlight));

create_dir(path)?;
create_file(&path.join("config.toml"), &config)?;
populate(&path, compile_sass, &config)?;

println!();
console::success(&format!("Done! Your site was created in {:?}", canonicalize(path).unwrap()));
println!();
console::info(
"Get started by moving into the directory and using the built-in server: `zola serve`",
);
println!("Visit https://www.getzola.org for the full documentation.");
Ok(())
}

fn populate(path: &Path, compile_sass: bool, config: &str) -> Result<()> {
if !path.exists() {
create_dir(path)?;
}
create_file(&path.join("config.toml"), &config)?;
create_dir(path.join("content"))?;
create_dir(path.join("templates"))?;
create_dir(path.join("static"))?;
Expand All @@ -97,13 +111,6 @@ pub fn create_new_project(name: &str) -> Result<()> {
create_dir(path.join("sass"))?;
}

println!();
console::success(&format!("Done! Your site was created in {:?}", canonicalize(path).unwrap()));
println!();
console::info(
"Get started by moving into the directory and using the built-in server: `zola serve`",
);
println!("Visit https://www.getzola.org for the full documentation.");
Ok(())
}

Expand Down Expand Up @@ -162,4 +169,59 @@ mod tests {
remove_dir(&dir).unwrap();
assert_eq!(true, allowed);
}

#[test]
fn populate_existing_directory() {
let mut dir = temp_dir();
dir.push("test_existing_dir");
if dir.exists() {
remove_dir_all(&dir).expect("Could not free test directory");
}
create_dir(&dir).expect("Could not create test directory");
populate(&dir, true, "").expect("Could not populate zola directories");

assert_eq!(true, dir.join("config.toml").exists());
assert_eq!(true, dir.join("content").exists());
assert_eq!(true, dir.join("templates").exists());
assert_eq!(true, dir.join("static").exists());
assert_eq!(true, dir.join("themes").exists());
assert_eq!(true, dir.join("sass").exists());

remove_dir_all(&dir).unwrap();
}

#[test]
fn populate_non_existing_directory() {
let mut dir = temp_dir();
dir.push("test_non_existing_dir");
if dir.exists() {
remove_dir_all(&dir).expect("Could not free test directory");
}
populate(&dir, true, "").expect("Could not populate zola directories");

assert_eq!(true, dir.exists());
assert_eq!(true, dir.join("config.toml").exists());
assert_eq!(true, dir.join("content").exists());
assert_eq!(true, dir.join("templates").exists());
assert_eq!(true, dir.join("static").exists());
assert_eq!(true, dir.join("themes").exists());
assert_eq!(true, dir.join("sass").exists());

remove_dir_all(&dir).unwrap();
}

#[test]
fn populate_without_sass() {
let mut dir = temp_dir();
dir.push("test_wihout_sass_dir");
if dir.exists() {
remove_dir_all(&dir).expect("Could not free test directory");
}
create_dir(&dir).expect("Could not create test directory");
populate(&dir, false, "").expect("Could not populate zola directories");

assert_eq!(false, dir.join("sass").exists());

remove_dir_all(&dir).unwrap();
}
}

0 comments on commit 94b49da

Please sign in to comment.