///|
/// Example: use moonpe as a library to gate a release.
///
/// Run with:
/// moon run examples/release_check --target js --
///|
fn main {
let args = @env.args()
let mut base = 1
if args.length() >= 2 && args[1].contains(".js") {
base = 2
}
if args.length() <= base {
println("usage: release_check ")
return
}
let path = args[base]
let bytes = @fs.read_file_to_bytes(path) catch {
_ => {
println("cannot read " + path)
return
}
}
let pe = @pe.Pe::parse(bytes) catch {
e => {
println("not a PE image: " + e.message())
return
}
}
let report = pe.check()
println(path + ": " + report.verdict)
for finding in report.findings {
println(" " + finding.code + ": " + finding.message)
}
if report.verdict != "ok" {
println("release blocked; review the findings above")
} else {
println("release may proceed")
}
}