def --wrapped main [root: string, name: string, directory: string, program: string, ...arguments: string] {
    let logs = ($root | path join 'gates')
    let target = ($root | path join 'target')
    {directory: $directory, environment: {CARGO_TARGET_DIR: $target}, program: $program, arguments: $arguments} | to nuon | save --force ($logs | path join $"($name).command")
    cd $directory
    let result = (with-env {CARGO_TARGET_DIR: $target} { run-external $program ...$arguments | complete })
    $result.stdout | save --force ($logs | path join $"($name).stdout")
    $result.stderr | save --force ($logs | path join $"($name).stderr")
    $result.exit_code | into string | save --force ($logs | path join $"($name).exit")
    print ($result.stdout + $result.stderr)
    exit $result.exit_code
}

Graph