You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.4 KiB

#![allow(unknown_lints)]
/**
* Copyright 2020 Garrit Franke
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
extern crate rust_embed;
2 years ago
extern crate structopt;
2 years ago
extern crate tempfile;
2 years ago
use std::path::PathBuf;
use structopt::StructOpt;
2 years ago
mod ast;
mod builder;
mod command;
mod generator;
2 years ago
mod lexer;
mod parser;
#[cfg(test)]
mod tests;
mod util;
2 years ago
use rust_embed::RustEmbed;
#[derive(RustEmbed)]
#[folder = "lib/"]
pub struct Lib;
#[derive(RustEmbed)]
#[folder = "builtin/"]
pub struct Builtins;
2 years ago
2 years ago
#[derive(StructOpt, Debug)]
enum Opt {
#[structopt()]
Build {
in_file: PathBuf,
#[structopt(short, long)]
2 years ago
out_file: PathBuf,
},
2 years ago
#[structopt()]
Run { in_file: PathBuf },
2 years ago
}
fn main() -> Result<(), String> {
2 years ago
let opts = Opt::from_args();
match opts {
2 years ago
Opt::Build { in_file, out_file } => command::build::build(&in_file, &out_file)?,
Opt::Run { in_file } => command::run::run(in_file)?,
2 years ago
};
2 years ago
2 years ago
Ok(())
2 years ago
}