Compare commits

..

2 Commits

Author SHA1 Message Date
040f97dfb8 Merge branch 'main' into feat/lint-pr 2023-02-19 12:52:49 +01:00
8c66f3a076 feat(ci): lint pr 2023-02-19 12:52:32 +01:00
23 changed files with 315 additions and 418 deletions

View File

@@ -8,7 +8,6 @@ env:
CARGO_TERM_COLOR: always CARGO_TERM_COLOR: always
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
_EXPERIMENTAL_DAGGER_CACHE_CONFIG: type=gha;mode=max
jobs: jobs:
deploy: deploy:
runs-on: ubuntu-latest runs-on: ubuntu-latest

View File

@@ -5,32 +5,6 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## v0.2.9 (2023-02-19)
### New Features
- <csr-id-19ed6c267f779b72430422c463ceed553f6fc618/> re-export through lib.rs
this means that you can now use dagger_sdk::connect() instead of
dagger_sdk::client::connect();
### Commit Statistics
<csr-read-only-do-not-edit/>
- 1 commit contributed to the release.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
* **Uncategorized**
- re-export through lib.rs ([`19ed6c2`](https://github.com/kjuulh/dagger-rs/commit/19ed6c267f779b72430422c463ceed553f6fc618))
</details>
## v0.2.8 (2023-02-19) ## v0.2.8 (2023-02-19)
### New Features ### New Features

40
Cargo.lock generated
View File

@@ -114,7 +114,7 @@ version = "0.1.0"
dependencies = [ dependencies = [
"clap", "clap",
"color-eyre", "color-eyre",
"dagger-sdk 0.2.2", "dagger-sdk 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"eyre", "eyre",
] ]
@@ -245,7 +245,7 @@ dependencies = [
[[package]] [[package]]
name = "dagger-codegen" name = "dagger-codegen"
version = "0.2.3" version = "0.2.2"
dependencies = [ dependencies = [
"convert_case", "convert_case",
"dagger-core 0.2.2", "dagger-core 0.2.2",
@@ -305,7 +305,7 @@ dependencies = [
[[package]] [[package]]
name = "dagger-rs" name = "dagger-rs"
version = "0.2.9" version = "0.2.8"
dependencies = [ dependencies = [
"clap", "clap",
"color-eyre", "color-eyre",
@@ -328,6 +328,23 @@ dependencies = [
"tempfile", "tempfile",
] ]
[[package]]
name = "dagger-sdk"
version = "0.2.2"
dependencies = [
"base64",
"dagger-core 0.2.2",
"eyre",
"futures",
"genco",
"gql_client",
"pretty_assertions",
"rand",
"serde",
"serde_json",
"tokio",
]
[[package]] [[package]]
name = "dagger-sdk" name = "dagger-sdk"
version = "0.2.2" version = "0.2.2"
@@ -346,23 +363,6 @@ dependencies = [
"tokio", "tokio",
] ]
[[package]]
name = "dagger-sdk"
version = "0.2.4"
dependencies = [
"base64",
"dagger-core 0.2.2",
"eyre",
"futures",
"genco",
"gql_client",
"pretty_assertions",
"rand",
"serde",
"serde_json",
"tokio",
]
[[package]] [[package]]
name = "diff" name = "diff"
version = "0.1.13" version = "0.1.13"

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "dagger-rs" name = "dagger-rs"
version = "0.2.9" version = "0.2.8"
edition = "2021" edition = "2021"
readme = "README.md" readme = "README.md"
license-file = "LICENSE.MIT" license-file = "LICENSE.MIT"
@@ -19,7 +19,7 @@ members = [
] ]
[dependencies] [dependencies]
dagger-codegen = { path = "crates/dagger-codegen", version = "^0.2.3" } dagger-codegen = { path = "crates/dagger-codegen", version = "^0.2.2" }
dagger-core = { path = "crates/dagger-core", version = "^0.2.2" } dagger-core = { path = "crates/dagger-core", version = "^0.2.2" }
clap = "4.1.6" clap = "4.1.6"

View File

@@ -21,7 +21,7 @@ See [dagger-sdk](./crates/dagger-sdk/README.md)
- [x] Context - [x] Context
- [x] Deserializer for nested response (bind) - [x] Deserializer for nested response (bind)
- [x] Add codegen to hook into querier - [x] Add codegen to hook into querier
- [x] fix build / release cycle - [ ] fix build / release cycle
- [ ] general api stabilisation - [ ] general api stabilisation
- [x] document usage - [x] document usage
- [ ] make async variant - [ ] make async variant

View File

@@ -5,32 +5,6 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## v0.2.3 (2023-02-19)
### New Features
- <csr-id-de063eae858eb3335d2558a57ee6a88689635200/> with return result instead of unwrap
- <csr-id-5d667369900a47d3a6015cd3814c240bc5c54436/> remove unnecessary option returns
### Commit Statistics
<csr-read-only-do-not-edit/>
- 2 commits contributed to the release.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
* **Uncategorized**
- with return result instead of unwrap ([`de063ea`](https://github.com/kjuulh/dagger-rs/commit/de063eae858eb3335d2558a57ee6a88689635200))
- remove unnecessary option returns ([`5d66736`](https://github.com/kjuulh/dagger-rs/commit/5d667369900a47d3a6015cd3814c240bc5c54436))
</details>
## v0.2.2 (2023-02-19) ## v0.2.2 (2023-02-19)
### New Features ### New Features
@@ -41,7 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/> <csr-read-only-do-not-edit/>
- 2 commits contributed to the release. - 1 commit contributed to the release.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages - 0 issues like '(#ID)' were seen in commit messages
@@ -52,7 +26,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<details><summary>view details</summary> <details><summary>view details</summary>
* **Uncategorized** * **Uncategorized**
- Release dagger-core v0.2.2, dagger-codegen v0.2.2, dagger-rs v0.2.8 ([`1638f15`](https://github.com/kjuulh/dagger-rs/commit/1638f15fba9d16512e8452f87b908d6dce417cd9))
- update to dagger v0.3.12 ([`6e5f407`](https://github.com/kjuulh/dagger-rs/commit/6e5f4074329ab0462445b31d4153f8497c483438)) - update to dagger v0.3.12 ([`6e5f407`](https://github.com/kjuulh/dagger-rs/commit/6e5f4074329ab0462445b31d4153f8497c483438))
</details> </details>

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "dagger-codegen" name = "dagger-codegen"
version = "0.2.3" version = "0.2.2"
edition = "2021" edition = "2021"
readme = "README.md" readme = "README.md"
license-file = "LICENSE.MIT" license-file = "LICENSE.MIT"

View File

@@ -1,12 +1,12 @@
use convert_case::{Case, Casing}; use convert_case::{Case, Casing};
use dagger_core::introspection::{FullTypeFields, TypeRef}; use dagger_core::introspection::FullTypeFields;
use genco::prelude::rust; use genco::prelude::rust;
use genco::quote; use genco::quote;
use genco::tokens::quoted; use genco::tokens::quoted;
use crate::functions::{ use crate::functions::{
type_field_has_optional, type_ref_is_list_of_objects, type_ref_is_object, type_ref_is_optional, type_field_has_optional, type_ref_is_list_of_objects, type_ref_is_object,
CommonFunctions, type_ref_is_optional, CommonFunctions,
}; };
use crate::utility::OptionExt; use crate::utility::OptionExt;
@@ -37,7 +37,7 @@ pub fn format_function(funcs: &CommonFunctions, field: &FullTypeFields) -> Optio
let output_type = field let output_type = field
.type_ .type_
.pipe(|t| &t.type_ref) .pipe(|t| &t.type_ref)
.pipe(|t| render_output_type(funcs, t)); .pipe(|t| funcs.format_output_type(t));
Some(quote! { Some(quote! {
$(signature)( $(signature)(
@@ -67,7 +67,7 @@ fn render_required_args(_funcs: &CommonFunctions, field: &FullTypeFields) -> Opt
let name = &s.input_value.name; let name = &s.input_value.name;
Some(quote! { Some(quote! {
query = query.arg($(quoted(name)), $(n)); query = query.arg($(quoted(name)), $(n)).unwrap();
}) })
}) })
}) })
@@ -98,7 +98,7 @@ fn render_optional_args(_funcs: &CommonFunctions, field: &FullTypeFields) -> Opt
Some(quote! { Some(quote! {
if let Some($(&n)) = opts.$(&n) { if let Some($(&n)) = opts.$(&n) {
query = query.arg($(quoted(name)), $(&n)); query = query.arg($(quoted(name)), $(&n)).unwrap();
} }
}) })
}) })
@@ -122,20 +122,6 @@ fn render_optional_args(_funcs: &CommonFunctions, field: &FullTypeFields) -> Opt
} }
} }
fn render_output_type(funcs: &CommonFunctions, type_ref: &TypeRef) -> rust::Tokens {
let output_type = funcs.format_output_type(type_ref);
if type_ref_is_object(type_ref) || type_ref_is_list_of_objects(type_ref) {
return quote! {
$(output_type)
};
}
quote! {
eyre::Result<$output_type>
}
}
fn render_execution(funcs: &CommonFunctions, field: &FullTypeFields) -> rust::Tokens { fn render_execution(funcs: &CommonFunctions, field: &FullTypeFields) -> rust::Tokens {
if let Some(true) = field.type_.pipe(|t| type_ref_is_object(&t.type_ref)) { if let Some(true) = field.type_.pipe(|t| type_ref_is_object(&t.type_ref)) {
let output_type = funcs.format_output_type(&field.type_.as_ref().unwrap().type_ref); let output_type = funcs.format_output_type(&field.type_.as_ref().unwrap().type_ref);
@@ -177,7 +163,7 @@ fn render_execution(funcs: &CommonFunctions, field: &FullTypeFields) -> rust::To
let graphql_client = rust::import("crate::client", "graphql_client"); let graphql_client = rust::import("crate::client", "graphql_client");
quote! { quote! {
query.execute(&$graphql_client(&self.conn)) query.execute(&$graphql_client(&self.conn)).unwrap().unwrap()
} }
} }

View File

@@ -5,61 +5,6 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## v0.2.4 (2023-02-19)
### Bug Fixes
- <csr-id-7d04ab1240e497e7804fed23a378d28c78f50a0a/> readme dagger-rs -> dagger-sdk
### Commit Statistics
<csr-read-only-do-not-edit/>
- 1 commit contributed to the release.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
* **Uncategorized**
- readme dagger-rs -> dagger-sdk ([`7d04ab1`](https://github.com/kjuulh/dagger-rs/commit/7d04ab1240e497e7804fed23a378d28c78f50a0a))
</details>
## v0.2.3 (2023-02-19)
### New Features
- <csr-id-19ed6c267f779b72430422c463ceed553f6fc618/> re-export through lib.rs
this means that you can now use dagger_sdk::connect() instead of
dagger_sdk::client::connect();
- <csr-id-de063eae858eb3335d2558a57ee6a88689635200/> with return result instead of unwrap
- <csr-id-5d667369900a47d3a6015cd3814c240bc5c54436/> remove unnecessary option returns
### Commit Statistics
<csr-read-only-do-not-edit/>
- 4 commits contributed to the release.
- 3 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
* **Uncategorized**
- Release dagger-sdk v0.2.3, dagger-codegen v0.2.3, dagger-rs v0.2.9 ([`9235030`](https://github.com/kjuulh/dagger-rs/commit/92350306b3f0da40b4fc6dcaffcd90b891e83f70))
- re-export through lib.rs ([`19ed6c2`](https://github.com/kjuulh/dagger-rs/commit/19ed6c267f779b72430422c463ceed553f6fc618))
- with return result instead of unwrap ([`de063ea`](https://github.com/kjuulh/dagger-rs/commit/de063eae858eb3335d2558a57ee6a88689635200))
- remove unnecessary option returns ([`5d66736`](https://github.com/kjuulh/dagger-rs/commit/5d667369900a47d3a6015cd3814c240bc5c54436))
</details>
## v0.2.2 (2023-02-19) ## v0.2.2 (2023-02-19)
### New Features ### New Features
@@ -74,7 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/> <csr-read-only-do-not-edit/>
- 4 commits contributed to the release. - 3 commits contributed to the release.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org). - 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages - 0 issues like '(#ID)' were seen in commit messages
@@ -85,7 +30,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<details><summary>view details</summary> <details><summary>view details</summary>
* **Uncategorized** * **Uncategorized**
- Release dagger-sdk v0.2.2 ([`e921ba1`](https://github.com/kjuulh/dagger-rs/commit/e921ba13638987ccf5beaa48c4be9be5fd879bd0))
- Release dagger-core v0.2.2, dagger-codegen v0.2.2, dagger-rs v0.2.8 ([`1638f15`](https://github.com/kjuulh/dagger-rs/commit/1638f15fba9d16512e8452f87b908d6dce417cd9)) - Release dagger-core v0.2.2, dagger-codegen v0.2.2, dagger-rs v0.2.8 ([`1638f15`](https://github.com/kjuulh/dagger-rs/commit/1638f15fba9d16512e8452f87b908d6dce417cd9))
- fixed fmt errors ([`10bc6f3`](https://github.com/kjuulh/dagger-rs/commit/10bc6f3846b65cc82c2fb343d8cfe921784bef1b)) - fixed fmt errors ([`10bc6f3`](https://github.com/kjuulh/dagger-rs/commit/10bc6f3846b65cc82c2fb343d8cfe921784bef1b))
- update to dagger v0.3.12 ([`6e5f407`](https://github.com/kjuulh/dagger-rs/commit/6e5f4074329ab0462445b31d4153f8497c483438)) - update to dagger v0.3.12 ([`6e5f407`](https://github.com/kjuulh/dagger-rs/commit/6e5f4074329ab0462445b31d4153f8497c483438))

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "dagger-sdk" name = "dagger-sdk"
version = "0.2.4" version = "0.2.2"
edition = "2021" edition = "2021"
readme = "README.md" readme = "README.md"
license-file = "LICENSE.MIT" license-file = "LICENSE.MIT"

View File

@@ -1,4 +1,4 @@
# dagger-sdk # dagger-rs
A dagger sdk written in rust for rust. A dagger sdk written in rust for rust.
@@ -19,20 +19,20 @@ The examples match the folder name in each directory in examples
Simply install like: Simply install like:
```bash ```bash
cargo add dagger-sdk cargo install dagger-sdk
``` ```
### Usage ### Usage
```rust ```rust
fn main() -> eyre::Result<()> { fn main() -> eyre::Result<()> {
let client = dagger_sdk::connect()?; let client = dagger_sdk::client::connect()?;
let version = client let version = client
.container(None) .container(None)
.from("golang:1.19".into()) .from("golang:1.19".into())
.with_exec(vec!["go".into(), "version".into()], None) .with_exec(vec!["go".into(), "version".into()], None)
.stdout()?; .stdout();
println!("Hello from Dagger and {}", version.trim()); println!("Hello from Dagger and {}", version.trim());

View File

@@ -1,7 +1,7 @@
use dagger_sdk::HostDirectoryOpts; use dagger_sdk::gen::HostDirectoryOpts;
fn main() -> eyre::Result<()> { fn main() -> eyre::Result<()> {
let client = dagger_sdk::connect()?; let client = dagger_sdk::client::connect()?;
let host_source_dir = client.host().directory( let host_source_dir = client.host().directory(
"examples/build-the-application/app".into(), "examples/build-the-application/app".into(),
@@ -14,7 +14,7 @@ fn main() -> eyre::Result<()> {
let source = client let source = client
.container(None) .container(None)
.from("node:16".into()) .from("node:16".into())
.with_mounted_directory("/src".into(), host_source_dir.id()?); .with_mounted_directory("/src".into(), host_source_dir.id());
let runner = source let runner = source
.with_workdir("/src".into()) .with_workdir("/src".into())

View File

@@ -1,8 +1,8 @@
use dagger_sdk::HostDirectoryOpts; use dagger_sdk::gen::HostDirectoryOpts;
use rand::Rng; use rand::Rng;
fn main() -> eyre::Result<()> { fn main() -> eyre::Result<()> {
let client = dagger_sdk::connect()?; let client = dagger_sdk::client::connect()?;
let host_source_dir = client.host().directory( let host_source_dir = client.host().directory(
"./examples/caching/app".into(), "./examples/caching/app".into(),
@@ -12,12 +12,12 @@ fn main() -> eyre::Result<()> {
}), }),
); );
let node_cache = client.cache_volume("node".into()).id()?; let node_cache = client.cache_volume("node".into()).id();
let source = client let source = client
.container(None) .container(None)
.from("node:16".into()) .from("node:16".into())
.with_mounted_directory("/src".into(), host_source_dir.id()?) .with_mounted_directory("/src".into(), host_source_dir.id())
.with_mounted_cache("/src/node_modules".into(), node_cache, None); .with_mounted_cache("/src/node_modules".into(), node_cache, None);
let runner = source let runner = source
@@ -43,11 +43,11 @@ fn main() -> eyre::Result<()> {
let ref_ = client let ref_ = client
.container(None) .container(None)
.from("nginx".into()) .from("nginx".into())
.with_directory("/usr/share/nginx/html".into(), build_dir.id()?, None) .with_directory("/usr/share/nginx/html".into(), build_dir.id(), None)
.publish( .publish(
format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()), format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()),
None, None,
)?; );
println!("published image to: {}", ref_); println!("published image to: {}", ref_);

View File

@@ -1,9 +1,10 @@
use rand::Rng; use rand::Rng;
fn main() -> eyre::Result<()> { fn main() -> eyre::Result<()> {
let mut rng = rand::thread_rng(); let mut rng = rand::thread_rng();
let client = dagger_sdk::connect()?; let client = dagger_sdk::client::connect()?;
let context_dir = client let context_dir = client
.host() .host()
@@ -11,11 +12,11 @@ fn main() -> eyre::Result<()> {
let ref_ = client let ref_ = client
.container(None) .container(None)
.build(context_dir.id()?, None) .build(context_dir.id(), None)
.publish( .publish(
format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()), format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()),
None, None,
)?; );
println!("published image to: {}", ref_); println!("published image to: {}", ref_);

View File

@@ -1,11 +1,11 @@
fn main() -> eyre::Result<()> { fn main() -> eyre::Result<()> {
let client = dagger_sdk::connect()?; let client = dagger_sdk::client::connect()?;
let version = client let version = client
.container(None) .container(None)
.from("golang:1.19".into()) .from("golang:1.19".into())
.with_exec(vec!["go".into(), "version".into()], None) .with_exec(vec!["go".into(), "version".into()], None)
.stdout()?; .stdout();
println!("Hello from Dagger and {}", version.trim()); println!("Hello from Dagger and {}", version.trim());

View File

@@ -1,8 +1,8 @@
use dagger_sdk::HostDirectoryOpts; use dagger_sdk::gen::HostDirectoryOpts;
use rand::Rng; use rand::Rng;
fn main() -> eyre::Result<()> { fn main() -> eyre::Result<()> {
let client = dagger_sdk::connect()?; let client = dagger_sdk::client::connect()?;
let host_source_dir = client.host().directory( let host_source_dir = client.host().directory(
"examples/publish-the-application/app".into(), "examples/publish-the-application/app".into(),
@@ -15,7 +15,7 @@ fn main() -> eyre::Result<()> {
let source = client let source = client
.container(None) .container(None)
.from("node:16".into()) .from("node:16".into())
.with_mounted_directory("/src".into(), host_source_dir.id()?); .with_mounted_directory("/src".into(), host_source_dir.id());
let runner = source let runner = source
.with_workdir("/src".into()) .with_workdir("/src".into())
@@ -40,11 +40,11 @@ fn main() -> eyre::Result<()> {
let ref_ = client let ref_ = client
.container(None) .container(None)
.from("nginx".into()) .from("nginx".into())
.with_directory("/usr/share/nginx/html".into(), build_dir.id()?, None) .with_directory("/usr/share/nginx/html".into(), build_dir.id(), None)
.publish( .publish(
format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()), format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()),
None, None,
)?; );
println!("published image to: {}", ref_); println!("published image to: {}", ref_);

View File

@@ -1,8 +1,8 @@
use dagger_sdk::HostDirectoryOpts; use dagger_sdk::gen::HostDirectoryOpts;
use rand::Rng; use rand::Rng;
fn main() -> eyre::Result<()> { fn main() -> eyre::Result<()> {
let client = dagger_sdk::connect()?; let client = dagger_sdk::client::connect()?;
let output = "examples/publish-the-application/app/build"; let output = "examples/publish-the-application/app/build";
let host_source_dir = client.host().directory( let host_source_dir = client.host().directory(
@@ -16,7 +16,7 @@ fn main() -> eyre::Result<()> {
let source = client let source = client
.container(None) .container(None)
.from("node:16".into()) .from("node:16".into())
.with_mounted_directory("/src".into(), host_source_dir.id()?); .with_mounted_directory("/src".into(), host_source_dir.id());
let runner = source let runner = source
.with_workdir("/src".into()) .with_workdir("/src".into())
@@ -44,13 +44,13 @@ fn main() -> eyre::Result<()> {
.from("nginx".into()) .from("nginx".into())
.with_directory( .with_directory(
"/usr/share/nginx/html".into(), "/usr/share/nginx/html".into(),
client.host().directory(output.into(), None).id()?, client.host().directory(output.into(), None).id(),
None, None,
) )
.publish( .publish(
format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()), format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()),
None, None,
)?; );
println!("published image to: {}", ref_); println!("published image to: {}", ref_);

View File

@@ -1,7 +1,7 @@
use dagger_sdk::HostDirectoryOpts; use dagger_sdk::gen::HostDirectoryOpts;
fn main() -> eyre::Result<()> { fn main() -> eyre::Result<()> {
let client = dagger_sdk::connect()?; let client = dagger_sdk::client::connect()?;
let host_source_dir = client.host().directory( let host_source_dir = client.host().directory(
"examples/test-the-application/app".into(), "examples/test-the-application/app".into(),
@@ -14,7 +14,7 @@ fn main() -> eyre::Result<()> {
let source = client let source = client
.container(None) .container(None)
.from("node:16".into()) .from("node:16".into())
.with_mounted_directory("/src".into(), host_source_dir.id()?); .with_mounted_directory("/src".into(), host_source_dir.id());
let runner = source let runner = source
.with_workdir("/src".into()) .with_workdir("/src".into())
@@ -30,7 +30,7 @@ fn main() -> eyre::Result<()> {
], ],
None, None,
) )
.stderr()?; .stderr();
println!("{}", out); println!("{}", out);

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,18 @@
mod client; pub mod client;
mod gen; pub mod gen;
mod querybuilder; mod querybuilder;
pub use client::*; pub fn add(left: usize, right: usize) -> usize {
pub use gen::*; left + right
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn it_works() {
let result = add(2, 2);
assert_eq!(result, 4);
}
}

View File

@@ -46,13 +46,13 @@ impl Selection {
} }
} }
pub fn arg<S>(&self, name: &str, value: S) -> Selection pub fn arg<S>(&self, name: &str, value: S) -> eyre::Result<Selection>
where where
S: Serialize, S: Serialize,
{ {
let mut s = self.clone(); let mut s = self.clone();
let val = serde_json::to_string(&value).unwrap(); let val = serde_json::to_string(&value)?;
match s.args.as_mut() { match s.args.as_mut() {
Some(args) => { Some(args) => {
@@ -65,7 +65,7 @@ impl Selection {
} }
} }
s Ok(s)
} }
pub fn build(&self) -> eyre::Result<String> { pub fn build(&self) -> eyre::Result<String> {
@@ -93,7 +93,7 @@ impl Selection {
Ok(fields.join("{") + &"}".repeat(fields.len() - 1)) Ok(fields.join("{") + &"}".repeat(fields.len() - 1))
} }
pub fn execute<D>(&self, gql_client: &gql_client::Client) -> eyre::Result<D> pub fn execute<D>(&self, gql_client: &gql_client::Client) -> eyre::Result<Option<D>>
where where
D: for<'de> Deserialize<'de>, D: for<'de> Deserialize<'de>,
{ {
@@ -111,7 +111,7 @@ impl Selection {
let resp: Option<D> = self.unpack_resp(resp)?; let resp: Option<D> = self.unpack_resp(resp)?;
Ok(resp.unwrap()) Ok(resp)
} }
fn path(&self) -> Vec<Selection> { fn path(&self) -> Vec<Selection> {
@@ -171,8 +171,10 @@ mod tests {
.select("core") .select("core")
.select("image") .select("image")
.arg("ref", "alpine") .arg("ref", "alpine")
.unwrap()
.select("file") .select("file")
.arg("path", "/etc/alpine-release"); .arg("path", "/etc/alpine-release")
.unwrap();
let query = root.build().unwrap(); let query = root.build().unwrap();
@@ -188,8 +190,10 @@ mod tests {
.select("core") .select("core")
.select("image") .select("image")
.arg("ref", "alpine") .arg("ref", "alpine")
.unwrap()
.select_with_alias("foo", "file") .select_with_alias("foo", "file")
.arg("path", "/etc/alpine-release"); .arg("path", "/etc/alpine-release")
.unwrap();
let query = root.build().unwrap(); let query = root.build().unwrap();
@@ -204,8 +208,10 @@ mod tests {
let root = query() let root = query()
.select("a") .select("a")
.arg("arg", "one") .arg("arg", "one")
.unwrap()
.select("b") .select("b")
.arg("arg", "two"); .arg("arg", "two")
.unwrap();
let query = root.build().unwrap(); let query = root.build().unwrap();
@@ -216,7 +222,7 @@ mod tests {
fn test_vec_arg() { fn test_vec_arg() {
let input = vec!["some-string"]; let input = vec!["some-string"];
let root = query().select("a").arg("arg", input); let root = query().select("a").arg("arg", input).unwrap();
let query = root.build().unwrap(); let query = root.build().unwrap();
assert_eq!(query, r#"query{a(arg:["some-string"])}"#.to_string()) assert_eq!(query, r#"query{a(arg:["some-string"])}"#.to_string())
@@ -226,7 +232,7 @@ mod tests {
fn test_ref_slice_arg() { fn test_ref_slice_arg() {
let input = &["some-string"]; let input = &["some-string"];
let root = query().select("a").arg("arg", input); let root = query().select("a").arg("arg", input).unwrap();
let query = root.build().unwrap(); let query = root.build().unwrap();
assert_eq!(query, r#"query{a(arg:["some-string"])}"#.to_string()) assert_eq!(query, r#"query{a(arg:["some-string"])}"#.to_string())
@@ -236,7 +242,7 @@ mod tests {
fn test_stringb_arg() { fn test_stringb_arg() {
let input = "some-string".to_string(); let input = "some-string".to_string();
let root = query().select("a").arg("arg", input); let root = query().select("a").arg("arg", input).unwrap();
let query = root.build().unwrap(); let query = root.build().unwrap();
assert_eq!(query, r#"query{a(arg:"some-string")}"#.to_string()) assert_eq!(query, r#"query{a(arg:"some-string")}"#.to_string())
@@ -269,7 +275,7 @@ mod tests {
})), })),
}; };
let root = query().select("a").arg("arg", input); let root = query().select("a").arg("arg", input).unwrap();
let query = root.build().unwrap(); let query = root.build().unwrap();
assert_eq!( assert_eq!(

View File

@@ -1,4 +1,5 @@
use dagger_sdk::{connect, ContainerExecOpts}; use dagger_sdk::client::connect;
use dagger_sdk::gen::ContainerExecOpts;
#[test] #[test]
fn test_example_container() { fn test_example_container() {
@@ -14,8 +15,7 @@ fn test_example_container() {
redirect_stderr: None, redirect_stderr: None,
experimental_privileged_nesting: None, experimental_privileged_nesting: None,
})) }))
.stdout() .stdout();
.unwrap();
assert_eq!(out, "3.16.2\n".to_string()) assert_eq!(out, "3.16.2\n".to_string())
} }

View File

@@ -4,6 +4,8 @@ pub mod cli;
mod cli_generate; mod cli_generate;
fn main() -> eyre::Result<()> { fn main() -> eyre::Result<()> {
//
color_eyre::install().unwrap(); color_eyre::install().unwrap();
let args = std::env::args(); let args = std::env::args();