A dagger sdk written in rust for rust
Go to file
kjuulh 6b82e523bd
Add thiserror instead of exposing eyre anonymous errors
The change here is to make it easier for the consumer to debug the api.
Such that they can `match` on individual errors instead of having to
parse text.

eyre is convenient, but mostly from a consumers perspective
2023-04-30 12:57:50 +02:00
.github/workflows fix: remove _ from _type 2023-04-30 00:41:48 +02:00
ci Release dagger-core v0.2.11, dagger-sdk v0.2.22 2023-04-30 10:56:53 +02:00
crates Add thiserror instead of exposing eyre anonymous errors 2023-04-30 12:57:50 +02:00
.gitignore Add base sdk 2023-01-27 08:31:09 +01:00
ARCHITECTURE.md feat: add musl ci (#51) 2023-03-19 12:16:36 +00:00
Cargo.lock Add thiserror instead of exposing eyre anonymous errors 2023-04-30 12:57:50 +02:00
Cargo.toml 🚀 chore(Cargo.toml): add thiserror crate to dependencies 2023-04-30 11:41:12 +02:00
CHANGELOG.md Release dagger-core v0.2.3, dagger-sdk v0.2.9, dagger-rs v0.2.10 2023-02-20 10:21:34 +01:00
CONTRIBUTING.md docs: add basic contributing 2023-03-10 23:49:26 +01:00
Cross.toml feat: add musl ci (#51) 2023-03-19 12:16:36 +00:00
LICENSE.MIT set readme and license 2023-01-27 08:38:39 +01:00
Makefile.toml feat: rename projects to point to github/kjuulh/dagger-sdk 2023-03-18 15:33:14 +01:00
README.md chore(README.md): mark dagger run compatibility and upstream update tasks as completed 2023-04-30 11:39:08 +02:00
renovate.json Add renovate.json 2023-01-27 22:42:47 +00:00

dagger-sdk

A dagger sdk written in rust for rust.

Plan for next release

  • Introduce thiserror for better errors
  • Add compatibility with dagger run
  • Add open telemetry tracing to the sdk
  • Remove id().await? from passing to other dagger graphs, this should make the design much cleaner
  • Start MkBook on how to actually use the sdk
  • Update to newest upstream release
  • Fix bugs
    • Run in conjunction with golang and other sdks
    • Stabilize the initial Arc<Query> model into something more extensible

Examples

See examples

Run them like so

cargo run --example first-pipeline

The examples match the folder name in each directory in examples

Install

Simply install like:

cargo add dagger-sdk

Usage

#[tokio::main]
async fn main() -> eyre::Result<()> {
    let client = dagger_sdk::connect().await?;

    let version = client
        .container()
        .from("golang:1.19")
        .with_exec(vec!["go", "version"])
        .stdout()
        .await?;

    println!("Hello from Dagger and {}", version.trim());

    Ok(())
}

And run it like a normal application:

cargo run

Contributing

See CONTRIBUTING

or just cargo make codegen