///|
fn run() -> Unit raise {
let arguments = @wasi_sys.arguments()
let raw_path = if arguments.length() > 1 { arguments[1] } else { "." }
let root = @path.GuestPath::new(raw_path)
@wasi_sys.print("\{root.as_string()}\n")
for entry in @wasi_fs.walk(root) {
let indent = " ".repeat(entry.depth)
let marker = if entry.kind == @wasi_fs.FileKind::Directory {
"/"
} else {
""
}
@wasi_sys.print(
"\{indent}\{entry.path.file_name().unwrap_or(".")}\{marker}\n",
)
}
}
///|
fn main {
run() catch {
error => {
@wasi_sys.eprint("tree failed: \{@debug.to_string(error)}\n") catch {
_ => ()
}
@wasi_sys.exit(1)
}
}
}