///|
fn main {
let args = @env.args()
let output = @sdp.run_cli(strip_program_name(args))
println(output)
if output.has_prefix("{\"ok\":false") {
cli_exit(1)
}
}
///|
fn strip_program_name(args : Array[String]) -> Array[String] {
let commands = [
"parse", "validate", "canonicalize", "inspect", "stats", "audit", "offer-answer",
"version", "help",
]
let mut index = 0
while index < args.length() {
let value = args[index]
let mut known = false
for command in commands {
if value.equal_ignore_ascii_case(command) {
known = true
}
}
if known || !is_program_path(value) {
break
}
index = index + 1
}
args[index:].to_owned()
}
///|
fn is_program_path(value : String) -> Bool {
let lower = value.to_lower()
if lower == "node" || lower == "deno" || lower == "bun" {
return true
}
if !(value.contains("/") || value.contains("\\")) {
return false
}
lower.has_suffix(".exe") ||
lower.has_suffix(".js") ||
lower.has_suffix(".cjs") ||
lower.has_suffix(".mjs") ||
lower.has_suffix(".wasm")
}