Rewriting mist project structure
This commit is contained in:
@@ -27,3 +27,5 @@ target
|
|||||||
/target
|
/target
|
||||||
|
|
||||||
**/build
|
**/build
|
||||||
|
|
||||||
|
.mist/
|
||||||
|
|||||||
+2
-4
@@ -8,8 +8,6 @@ use std::{
|
|||||||
use cargo_metadata::{CompilerMessage, Message};
|
use cargo_metadata::{CompilerMessage, Message};
|
||||||
use mist_parser::rev_mapper::{RustMap, find_mapping, get_mapping};
|
use mist_parser::rev_mapper::{RustMap, find_mapping, get_mapping};
|
||||||
|
|
||||||
use crate::transpiler::Config;
|
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct MistDiagnosticMessage {
|
pub struct MistDiagnosticMessage {
|
||||||
pub message: String,
|
pub message: String,
|
||||||
@@ -26,7 +24,7 @@ pub enum MistDiagnostic {
|
|||||||
Rust(CompilerMessage),
|
Rust(CompilerMessage),
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn build(mut args: Vec<String>, config: Config, root: PathBuf) -> bool {
|
pub fn build(mut args: Vec<String>, root: PathBuf) -> bool {
|
||||||
args.remove(0);
|
args.remove(0);
|
||||||
args.insert(1, "--message-format=json".to_string());
|
args.insert(1, "--message-format=json".to_string());
|
||||||
|
|
||||||
@@ -55,7 +53,7 @@ pub fn build(mut args: Vec<String>, config: Config, root: PathBuf) -> bool {
|
|||||||
|
|
||||||
let mist_file = span
|
let mist_file = span
|
||||||
.file_name
|
.file_name
|
||||||
.replacen(&config.output, &config.src, 1)
|
.replacen(".mist/src", "src", 1)
|
||||||
.replace(".rs", ".mist");
|
.replace(".rs", ".mist");
|
||||||
|
|
||||||
let mist_path = root.join(&mist_file);
|
let mist_path = root.join(&mist_file);
|
||||||
|
|||||||
+5
-2
@@ -15,9 +15,12 @@ void main() {
|
|||||||
|
|
||||||
match (args[1].as_str()) {
|
match (args[1].as_str()) {
|
||||||
"run" | "build" | "check" | "r" | "b" | "c" => {
|
"run" | "build" | "check" | "r" | "b" | "c" => {
|
||||||
var (config, root) = transpiler::build();
|
|
||||||
|
var root = transpiler::build();
|
||||||
|
|
||||||
println!("");
|
println!("");
|
||||||
if (builder::build(args, config, root)) {
|
|
||||||
|
if (builder::build(args, root)) {
|
||||||
println!("\x1b[32m\nBuild successful\x1b[0m");
|
println!("\x1b[32m\nBuild successful\x1b[0m");
|
||||||
} else {
|
} else {
|
||||||
println!("\x1b[31m\nBuild failed\x1b[0m");
|
println!("\x1b[31m\nBuild failed\x1b[0m");
|
||||||
|
|||||||
+4
-19
@@ -6,25 +6,16 @@ use std::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
use mist_parser::error::ParseError;
|
use mist_parser::error::ParseError;
|
||||||
use serde::Deserialize;
|
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
pub fn build() -> PathBuf {
|
||||||
pub struct Config {
|
|
||||||
pub src: String,
|
|
||||||
pub output: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn build() -> (Config, PathBuf) {
|
|
||||||
let start = Instant::now();
|
let start = Instant::now();
|
||||||
|
|
||||||
let root = find_project_root().unwrap_or_else(|| {
|
let root = find_project_root().unwrap_or_else(|| {
|
||||||
panic!("error: could not find project root (mist.json)");
|
panic!("error: could not find project root (mist.json)");
|
||||||
});
|
});
|
||||||
|
|
||||||
let config = load_config(&root);
|
let src_dir = root.join("src");
|
||||||
|
let out_dir = root.join(".mist/src");
|
||||||
let src_dir = root.join(&config.src);
|
|
||||||
let out_dir = root.join(&config.output);
|
|
||||||
|
|
||||||
build_dir(&root, &src_dir, &src_dir, &out_dir);
|
build_dir(&root, &src_dir, &src_dir, &out_dir);
|
||||||
|
|
||||||
@@ -35,7 +26,7 @@ pub fn build() -> (Config, PathBuf) {
|
|||||||
elapsed
|
elapsed
|
||||||
);
|
);
|
||||||
|
|
||||||
(config, root)
|
root
|
||||||
}
|
}
|
||||||
|
|
||||||
fn build_dir(root: &Path, base_src: &Path, current_dir: &Path, out_dir: &Path) {
|
fn build_dir(root: &Path, base_src: &Path, current_dir: &Path, out_dir: &Path) {
|
||||||
@@ -187,9 +178,3 @@ pub fn find_project_root() -> Option<PathBuf> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn load_config(root: &Path) -> Config {
|
|
||||||
let content = fs::read_to_string(root.join("mist.json")).expect("failed to read mist.json");
|
|
||||||
|
|
||||||
serde_json::from_str(&content).expect("invalid mist.json format")
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user