shelly-shell 0.5.2

A Rust based Unix style shell with a typed and structured language syntax.
visible "Terminal"
let $fixture = $args[0]
printf "%s" "pub visible \"Terminal\"; pub visible `cd; pub fn name(): String { \"exposed\" }" -> "${fixture}/exposed.shy"
printf "%s" "visible \"Terminal\"; visible `cd; pub fn move() { cd \".\" }" -> "${fixture}/private.shy"
printf "%s" "pub visible `cd; pub visible \"Terminal\"; pub let \$broken: Integer = \"wrong\"" -> "${fixture}/broken.shy"
check_repl ["id": "VISIBILITY", "name": "VISIBILITY", "steps": [
    ["import exposed; let \$saved = `exposed::cd", "quiet", ""],
    ["\$saved \".\"; echo ok", "output", "ok"],
    ["pub visible \$saved; visible \"exposed::Terminal\"", "quiet", ""],
    ["fn identity(\$v: Terminal): Terminal { \$v }", "quiet", ""],
    ["import private; private::move", "quiet", ""],
    ["private::cd \".\"", "error", "unavailable"],
    ["import broken", "error", "Type error"],
    ["broken::cd \".\"", "error", "Unknown type"],
    ["echo (exposed::name); \$saved \".\"", "output", "exposed"],
    ["pub visible \"MissingType\"", "error", "not registered"],
    ["let \$flag = \"--export\"; visible \$flag \$saved", "error", "use pub visible"],
    ["pub visible \$saved", "quiet", ""],
    ["visible `missing_function", "error", "not registered"],
    ["let \$type = \"Terminal\"; visible \$type", "quiet", ""],
    ["fn again(\$value: Terminal): Terminal { \$value }; echo ok", "output", "ok"],
    ["pub visible `exposed::name; echo (name)", "output", "exposed"]
], "exit": 0]