use annotate_snippets::AnnotationKind;
use annotate_snippets::Level;
use annotate_snippets::Renderer;
use annotate_snippets::Snippet;
use oxc_graphql_parser::Allocator;
use oxc_graphql_parser::Parser;
use std::fs;
use std::path::Path;
fn parse_schema() {
let file = Path::new("crates/oxc_graphql_parser/examples/schema_with_errors.graphql");
let src = fs::read_to_string(file).expect("Could not read schema file.");
let file_name = file
.file_name()
.expect("Could not get file name.")
.to_str()
.expect("Could not get &str from file name.");
let allocator = Allocator::default();
let parser = Parser::new(&allocator, &src);
let ast = parser.parse();
for err in ast.errors() {
let snippet = Level::ERROR.primary_title(err.message()).element(
Snippet::source(&src).line_start(0).path(file_name).fold(true).annotation(
AnnotationKind::Primary
.span(err.index()..err.index() + err.data().len())
.label(err.message()),
),
);
let renderer = Renderer::styled();
println!("{}\n\n", renderer.render(&[snippet]));
}
}
fn main() {
parse_schema();
}