1use std::io;
2
3pub fn create_project(name: &str, no_git: bool) {
20 if let Err(e) = try_create_project(name, no_git) {
21 eprintln!("error: failed to create project '{}': {}", name, e);
22 std::process::exit(1);
23 }
24 println!("created project '{}'", name);
25}
26
27fn try_create_project(name: &str, no_git: bool) -> io::Result<()> {
31 let toml = format!(
32 r#"[project]
33name = "{}"
34rl-version = "{}"
35version = "0.0.1"
36entry = "src/main.rl"
37"#,
38 name,
39 env!("CARGO_PKG_VERSION"),
40 );
41 let main = r#"get println from std::io
42fn main() {
43 println("hello world")
44}
45main()
46"#;
47 std::fs::create_dir(name)?;
48 std::fs::create_dir(format!("{}/src", name))?;
49 std::fs::write(format!("{}/rl.toml", name), toml)?;
50 std::fs::write(format!("{}/src/main.rl", name), main)?;
51 std::fs::write(format!("{}/.gitignore", name), "")?;
52 if !no_git {
53 std::process::Command::new("git")
54 .args(["init", name])
55 .output()?;
56 }
57 Ok(())
58}