///|
fn invalid(message : String) -> Unit {
println("Cannot restore batch report: \{message}")
@sys.exit(2)
}
///|
fn main {
let args = @env.args()[argument_prefix():].to_owned()
if args.length() != 2 || !["text", "json", "sarif"].contains(args[1]) {
invalid("usage: migration-lens-report-batch ")
return
}
let source = @utf8.decode(@fs.read_file_to_bytes(args[0])) catch {
e => {
invalid("Cannot read UTF-8 file: \{Repr(e)}")
return
}
}
let batch = match @lens.BatchReport::parse_json(source) {
Ok(b) => b
Err(e) => {
invalid(e)
return
}
}
match args[1] {
"json" => println(batch.to_json().stringify())
"sarif" =>
match batch.to_sarif() {
Ok(log) => println(log.stringify())
Err(e) => {
invalid(e)
return
}
}
_ => println(batch.to_text())
}
@sys.exit(batch.exit_code())
}
///|
#cfg(target="js")
fn argument_prefix() -> Int32 {
2
}
///|
#cfg(target="wasm")
fn argument_prefix() -> Int32 {
1
}
///|
#cfg(target="wasm-gc")
fn argument_prefix() -> Int32 {
1
}
///|
#cfg(target="native")
fn argument_prefix() -> Int32 {
1
}