slint/tools/compiler/main.rs
Simon Hausmann 2f0718bffa Add include path options to the viewer and compiler
This allows specifying additional component locations. It works for
simple structs, but not yet for more complex types due to a bug yet to
be fixed :-)
2020-07-17 15:26:35 +02:00

30 lines
1 KiB
Rust

use sixtyfps_compilerlib::*;
use structopt::StructOpt;
#[derive(StructOpt)]
struct Cli {
/// Set output format
#[structopt(short = "f", long = "format", default_value = "cpp")]
format: generator::OutputFormat,
#[structopt(short = "I", name = "include path for other .60 files", number_of_values = 1)]
include_paths: Vec<std::path::PathBuf>,
#[structopt(name = "path to .60 file", parse(from_os_str))]
path: std::path::PathBuf,
}
fn main() -> std::io::Result<()> {
let args = Cli::from_args();
let (syntax_node, diag) = parser::parse_file(&args.path)?;
//println!("{:#?}", syntax_node);
let compiler_config =
CompilerConfiguration { include_paths: &args.include_paths, ..Default::default() };
let (doc, diag) = compile_syntax_node(syntax_node, diag, &compiler_config);
let mut diag = diag.check_and_exit_on_error();
generator::generate(args.format, &mut std::io::stdout(), &doc.root_component, &mut diag)?;
diag.check_and_exit_on_error();
Ok(())
}