2023-03-13 23:57:32 +01:00
|
|
|
# dagger-sdk
|
|
|
|
|
|
|
|
A dagger sdk written in rust for rust.
|
|
|
|
|
2023-04-22 13:11:27 +02:00
|
|
|
## Plan for next release
|
|
|
|
|
|
|
|
- [ ] Introduce [thiserror](https://docs.rs/thiserror/latest/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
|
2023-04-25 08:33:43 +02:00
|
|
|
- [x] Run in conjunction with golang and other sdks
|
2023-04-22 13:11:27 +02:00
|
|
|
- [ ] Stabilize the initial `Arc<Query>` model into something more extensible
|
|
|
|
|
2023-03-13 23:57:32 +01:00
|
|
|
## Examples
|
|
|
|
|
|
|
|
See [examples](./crates/dagger-sdk/examples/)
|
|
|
|
|
|
|
|
Run them like so
|
|
|
|
|
|
|
|
```bash
|
|
|
|
cargo run --example first-pipeline
|
|
|
|
```
|
|
|
|
|
|
|
|
The examples match the folder name in each directory in examples
|
|
|
|
|
|
|
|
## Install
|
|
|
|
|
|
|
|
Simply install like:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
cargo add dagger-sdk
|
|
|
|
```
|
|
|
|
|
|
|
|
### Usage
|
|
|
|
|
|
|
|
```rust
|
|
|
|
#[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:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
cargo run
|
|
|
|
```
|
|
|
|
|
|
|
|
### Contributing
|
|
|
|
|
|
|
|
See [CONTRIBUTING](./CONTRIBUTING.md)
|
|
|
|
|
|
|
|
or just cargo make codegen
|