From da819c22f6b9c5eaecc060f08d3819fe44c3558c Mon Sep 17 00:00:00 2001 From: Selimaj Dev Date: Thu, 21 May 2026 05:43:10 +0200 Subject: [PATCH] Init project --- src/main.mist | 18 ++++++++++++++++++ src/transpiler.rs | 20 +++----------------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/main.mist b/src/main.mist index 48b47c6..27bf7af 100644 --- a/src/main.mist +++ b/src/main.mist @@ -1,5 +1,6 @@ use ; use ; +use ; pub mod builder; pub mod codegen; @@ -29,6 +30,9 @@ void main() { "transpile" | "t" => { transpiler::build(); } + "init" => { + init_project(); + } "version" | "--version" | "-v" => { println!("mist {}", env!("CARGO_PKG_VERSION")); } @@ -61,3 +65,17 @@ void print_usage() { println!(" \x1b[36m mist version \x1b[0m print the compiler version\n"); println!(" \x1b[36m mist help\x1b[0m print this message\n"); } + +void init_project(Vec args) { + new process::Command("cargo") + .args(args) + .stdout(process::Stdio::piped()) + .stderr(process::Stdio::piped()) + .stdin(process::Stdio::piped()) + .spawn() + .expect("Failed to run cargo"); + + fs::remove("src/main.rs").expect("Failed to remove src/main.rs"); + + fs::write("src/main.mist", "void main() {\n println!(\"Hello, World!\")\n}").expect("Failed to create src/main.mist"); +} diff --git a/src/transpiler.rs b/src/transpiler.rs index e1abf52..349b7c4 100644 --- a/src/transpiler.rs +++ b/src/transpiler.rs @@ -10,9 +10,9 @@ use mist_parser::error::ParseError; pub fn build() -> PathBuf { let start = Instant::now(); - let root = find_project_root().unwrap_or_else(|| { - panic!("error: could not find project root (mist.json)"); - }); + let root = std::env::current_dir() + .ok() + .expect("Unable to find project root"); let src_dir = root.join("src"); let out_dir = root.join(".mist/src"); @@ -164,17 +164,3 @@ fn should_skip(source: &Path, output: &Path) -> bool { } false } - -pub fn find_project_root() -> Option { - let mut dir = std::env::current_dir().ok()?; - - loop { - if dir.join("mist.json").exists() { - return Some(dir); - } - - if !dir.pop() { - return None; - } - } -}