rhask 0.3.0

Rhai-based Task Runner.
Documentation
group("sample", || {
    group("demo", || {
        description("Demo tasks");

        task("always_fail", || {
            description("Task that always fails");
            actions(|| {
                print("always_fail running...");
                exec(cmd(["false"]).build());
            });
        });

        task("echo_success", || {
            description("Task that succeeds");
            actions(|| {
                print("echo_success running...");
                print("Done");
            });
        });

        task("stop_on_error", || {
            description("Stop the flow on error");
            actions(|| {
                trigger("sample.demo.always_fail");
                trigger("sample.demo.echo_success"); // should not run
            });
        });

        task("continue_on_error", || {
            description("Continue even if an error occurs");
            actions(|| {
                try {
                    trigger("sample.demo.always_fail");
                } catch {
                    print("always_fail failed but continuing");
                }
                trigger("sample.demo.echo_success");
            });
        });
    });

    group("docker", || {
        task("up", || {
            description("docker up");
            actions(|| {
                exec_stream(cmd(["docker", "run", "--rm", "-d", "--name", "demo", "alpine:3.20", "/bin/sh", "-c", "tail -f /dev/null"]).build());
            });
        });

        task("connect", || {
            description("docker connect");
            actions(|| {
                exec_stream(cmd(["docker", "exec", "-it", "demo", "/bin/sh"]).build());
            });
        });

        task("stop", || {
            description("docker stop");
            actions(|| {
                exec_stream(cmd(["docker", "stop", "demo"]).build());
            });
        });
    });
});