kodept 0.2.3

Simple compiler with dependent types support in mind
Documentation
use std::path::PathBuf;
use clap::Parser;
use kodept::codespan_settings::CodespanSettings;
use kodept::read_code_source::ReadCodeSource;
use kodept_ast::ast_builder::ASTBuilder;
use crate::cli::commands::{build_rlt, get_output_file};
use crate::cli::traits::{Command};
use std::io::Write;
use kodept_macros::error::ErrorReported;
use kodept_macros::error::traits::ResultTRExt;
use kodept_macros::error::traits::ResultTEExt;

#[derive(Parser, Debug, Clone)]
pub struct Graph;

impl Command for Graph {
    type Params = PathBuf;

    fn exec_for_source(&self, source: ReadCodeSource, settings: &mut CodespanSettings, params: &mut Self::Params) -> Result<(), ErrorReported> {
        let rlt = build_rlt(&source).or_emit(settings, &source)?;
        let (tree, _) = ASTBuilder.recursive_build(&rlt.0, &source);
        let mut output_file = get_output_file(&source, params).or_emit(settings, &source, source.path())?;
        
        write!(output_file, "{}", tree.export_dot(&[])).or_emit(settings, &source, source.path())?;
        Ok(())
    }
}