Solace/src/main.rs

43 lines
1.1 KiB
Rust

mod lexer;
mod parser;
// mod emitter;
// mod transformer;
use anyhow::Result;
use std::{env, fs};
use thiserror::Error;
#[derive(Error, Debug)]
pub enum ArgumentError {
#[error("Usage: {0} ./path/to/file.solace")]
MissingSourceFile(String),
}
fn main() -> Result<()> {
let args: Vec<String> = env::args().collect();
if args.len() < 2 {
return Err(ArgumentError::MissingSourceFile(args[0].clone()).into());
}
let file_path = &args[1];
let input = fs::read_to_string(file_path).expect(&format!("Cannot read file '{}'!", file_path));
/*
// Parse Solace Code
if let Some((ast, span)) = parser::parse(file_path.to_string(), &input, false) {
// Transform from Solace AST to SWC AST
let js_transformer = transformer::js::JsTransformer::new();
let js_ast = js_transformer.transform(ast, span);
// Emit JavaScript
let js_emitter = emitter::js::JsEmitter::new();
let (js_code, _source_map) = js_emitter.emit(js_ast);
// Write Output to stdout
println!("{}", js_code);
}
*/
Ok(())
}