pont 0.3.0

A project template tool that works with Git repositories and local directories.
Documentation
use std::process::Command;

#[test]
pub fn test_pont_new() {
    let project_name = "pont_test_new";

    let command = Command::new("pont")
        .arg("new")
        .arg("--name")
        .arg(project_name)
        .status()
        .expect("failed to create new pont project");
    assert_eq!(command.success(), true);

    let project_path = format!("./{}", project_name);
    let project_exists = std::path::Path::new(&project_path).exists();
    assert_eq!(project_exists, true);

    std::fs::remove_dir_all(&project_path).expect("failed to remove directory");
}

#[test]
pub fn test_pont_init() {
    let project_name = "pont_test_init";
    let project_path = format!("./{}", project_name);

    std::fs::create_dir(project_name).expect("failed to create directory");

    let command = Command::new("pont")
        .current_dir(&project_path)
        .arg("init")
        .status()
        .expect("failed to init pont project");
    assert_eq!(command.success(), true);

    let project_exists = std::path::Path::new(&project_path).exists();
    assert_eq!(project_exists, true);

    std::fs::remove_dir_all(&project_path).expect("failed to remove directory");
}

#[test]
pub fn test_pont_build() {
    let template_name = "pont_test_template";
    let template_path = format!("./{}", template_name);

    let new_command = Command::new("pont")
        .arg("new")
        .arg("--name")
        .arg(template_name)
        .status()
        .expect("failed to create new pont project");
    assert_eq!(new_command.success(), true);

    std::fs::File::create(format!("{}/test.txt", template_path)).expect("failed to create file");

    let project_name = "pont_test_build";
    let command = Command::new("pont")
        .arg("build")
        .arg("--name")
        .arg(project_name)
        .arg("--from")
        .arg(format!("file://{}", template_name))
        .status()
        .expect("failed to build pont project");
    assert_eq!(command.success(), true);

    let expected_project_path = format!("./{}", project_name);
    let project_exists = std::path::Path::new(&expected_project_path).exists();
    assert_eq!(project_exists, true);

    let expected_file_path = format!("{}/test.txt", expected_project_path);
    let file_exists = std::path::Path::new(&expected_file_path).exists();
    assert_eq!(file_exists, true);

    std::fs::remove_dir_all(&project_name).expect("failed to remove directory");
    std::fs::remove_dir_all(&template_path).expect("failed to remove directory");
}