mirror of
https://github.com/kjuulh/dagger-rs.git
synced 2025-08-18 21:13:28 +02:00
Compare commits
11 Commits
dagger-sdk
...
feature/ad
Author | SHA1 | Date | |
---|---|---|---|
869de76469
|
|||
68af1696f7
|
|||
757c154002
|
|||
e16f5037dc
|
|||
df7a253bc8 | |||
2ba1ab0dff
|
|||
ee0077f72f
|
|||
838ff3fbe6
|
|||
d1cce6c4c5
|
|||
3003ff9779
|
|||
7bc67f6917
|
17
.github/workflows/ci.yaml
vendored
17
.github/workflows/ci.yaml
vendored
@@ -1,14 +1,8 @@
|
|||||||
name: ci
|
name: ci
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- "main"
|
|
||||||
env:
|
env:
|
||||||
CARGO_TERM_COLOR: always
|
CARGO_TERM_COLOR: always
|
||||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
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
|
||||||
@@ -17,16 +11,5 @@ jobs:
|
|||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
- name: Update rust toolchain
|
- name: Update rust toolchain
|
||||||
run: rustup update stable && rustup default stable
|
run: rustup update stable && rustup default stable
|
||||||
- name: Set up cargo cache
|
|
||||||
uses: actions/cache@v3
|
|
||||||
continue-on-error: false
|
|
||||||
with:
|
|
||||||
path: "~/.cargo/bin/\n~/.cargo/registry/index/\n~/.cargo/registry/cache/\n~/.cargo/git/db/\ntarget/"
|
|
||||||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
||||||
restore-keys: ${{ runner.os }}-cargo
|
|
||||||
- name: Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v2
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v2.0.0
|
|
||||||
- name: Run dagger [CI]
|
- name: Run dagger [CI]
|
||||||
run: cargo run -p ci -- pr
|
run: cargo run -p ci -- pr
|
||||||
|
25
.github/workflows/create-release.yml
vendored
Normal file
25
.github/workflows/create-release.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
name: Release
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- v[0-9]+.*
|
||||||
|
jobs:
|
||||||
|
create-release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: taiki-e/create-gh-release-action@v1
|
||||||
|
with:
|
||||||
|
# (Optional) Path to changelog.
|
||||||
|
changelog: CHANGELOG.md
|
||||||
|
# (Optional) Create a draft release.
|
||||||
|
# [default value: false]
|
||||||
|
draft: false
|
||||||
|
# (Required) GitHub token for creating GitHub Releases.
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Update rust toolchain
|
||||||
|
run: rustup update stable && rustup default stable
|
||||||
|
- name: Run dagger [RELEASE]
|
||||||
|
run: cargo run -p ci -- release --version="${{github.ref_name}}"
|
15
.github/workflows/lint-pr.yml
vendored
15
.github/workflows/lint-pr.yml
vendored
@@ -1,15 +0,0 @@
|
|||||||
name: "Lint PR"
|
|
||||||
on:
|
|
||||||
pull_request_target:
|
|
||||||
types:
|
|
||||||
- opened
|
|
||||||
- edited
|
|
||||||
- synchronize
|
|
||||||
jobs:
|
|
||||||
main:
|
|
||||||
name: Validate PR title
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: amannn/action-semantic-pull-request@v5
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
191
CHANGELOG.md
191
CHANGELOG.md
@@ -1,193 +1,34 @@
|
|||||||
# Changelog
|
## 0.2.0 - 2023-02-17
|
||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
First actual useful version of dagger-sdk. contains code for codegen, cli, and
|
||||||
|
core.
|
||||||
|
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
## 0.2.6 - 2023-02-17
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
||||||
|
|
||||||
## v0.2.9 (2023-02-19)
|
With releaser
|
||||||
|
|
||||||
### New Features
|
## v0.2.6 (2023-02-17)
|
||||||
|
|
||||||
- <csr-id-19ed6c267f779b72430422c463ceed553f6fc618/> re-export through lib.rs
|
## v0.2.5 (2023-02-17)
|
||||||
this means that you can now use dagger_sdk::connect() instead of
|
|
||||||
dagger_sdk::client::connect();
|
|
||||||
|
|
||||||
### Commit Statistics
|
## v0.2.4 (2023-02-17)
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
## v0.2.3 (2023-02-17)
|
||||||
|
|
||||||
- 1 commit contributed to the release.
|
## v0.2.2 (2023-02-17)
|
||||||
- 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)
|
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-f42da8416a5450c7c3c924353c3cc9112afd18f0/> with sccache
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 2 commits 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**
|
|
||||||
- with sccache ([`f42da84`](https://github.com/kjuulh/dagger-rs/commit/f42da8416a5450c7c3c924353c3cc9112afd18f0))
|
|
||||||
- test change ([`98781f2`](https://github.com/kjuulh/dagger-rs/commit/98781f2496deaea4bc13c9e90e60543b7daac9d7))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.7 (2023-02-18)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-d72313051b9b46a6eeaa909a11850b3d8fc75e81/> with test changes
|
|
||||||
|
|
||||||
### 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**
|
|
||||||
- with test changes ([`d723130`](https://github.com/kjuulh/dagger-rs/commit/d72313051b9b46a6eeaa909a11850b3d8fc75e81))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.6 (2023-02-18)
|
|
||||||
|
|
||||||
With smart releaser
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-4ebe0d12b50028a8b79d8c76a2257c9c2b7b3429/> cleanup
|
|
||||||
|
|
||||||
### 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**
|
|
||||||
- cleanup ([`4ebe0d1`](https://github.com/kjuulh/dagger-rs/commit/4ebe0d12b50028a8b79d8c76a2257c9c2b7b3429))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.5 (2023-02-18)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-4ac89b645712dd8c357832a817af131c2d2e0686/> trying agian
|
|
||||||
|
|
||||||
### 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**
|
|
||||||
- trying agian ([`4ac89b6`](https://github.com/kjuulh/dagger-rs/commit/4ac89b645712dd8c357832a817af131c2d2e0686))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.4 (2023-02-18)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-4ac89b645712dd8c357832a817af131c2d2e0686/> trying agian
|
|
||||||
|
|
||||||
## v0.2.3 (2023-02-18)
|
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-3a45202a21b24d8331a2ead72944df9ac7c70839/> some test
|
|
||||||
|
|
||||||
### 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**
|
|
||||||
- some test ([`3a45202`](https://github.com/kjuulh/dagger-rs/commit/3a45202a21b24d8331a2ead72944df9ac7c70839))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.2 (2023-02-18)
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 1 commit contributed to the release.
|
|
||||||
- 0 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 test commit ([`0470093`](https://github.com/kjuulh/dagger-rs/commit/0470093912622640913ac34661be72a546dd1ba5))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.1 (2023-02-18)
|
## v0.2.1 (2023-02-18)
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- <csr-id-68af1696f7d6bd8f9f2169075c554938e2d594ba/> color-eyre
|
||||||
|
|
||||||
### Commit Statistics
|
### Commit Statistics
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
<csr-read-only-do-not-edit/>
|
||||||
|
|
||||||
- 1 commit contributed to the release.
|
- 1 commit contributed to the release.
|
||||||
- 0 commits were 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
|
||||||
|
|
||||||
### Commit Details
|
### Commit Details
|
||||||
@@ -197,7 +38,7 @@ With smart releaser
|
|||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- add color eyre ([`32665d8`](https://github.com/kjuulh/dagger-rs/commit/32665d8fa0c97d39a1b43c5e8343f23e87497c16))
|
- color-eyre ([`68af169`](https://github.com/kjuulh/dagger-rs/commit/68af1696f7d6bd8f9f2169075c554938e2d594ba))
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## v0.2.0 (2023-02-17)
|
## v0.2.0 (2023-02-17)
|
||||||
|
121
Cargo.lock
generated
121
Cargo.lock
generated
@@ -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.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"eyre",
|
"eyre",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -245,10 +245,10 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dagger-codegen"
|
name = "dagger-codegen"
|
||||||
version = "0.2.4"
|
version = "0.2.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"convert_case",
|
"convert_case",
|
||||||
"dagger-core 0.2.2",
|
"dagger-core 0.2.1",
|
||||||
"eyre",
|
"eyre",
|
||||||
"genco",
|
"genco",
|
||||||
"itertools",
|
"itertools",
|
||||||
@@ -259,7 +259,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dagger-core"
|
name = "dagger-core"
|
||||||
version = "0.2.2"
|
version = "0.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "02a16b0e83ae5b88a3d4e2f3cf5149932cfcb3113e67f5579372e25d5dab5b53"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap",
|
"clap",
|
||||||
"dirs",
|
"dirs",
|
||||||
@@ -281,9 +283,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dagger-core"
|
name = "dagger-core"
|
||||||
version = "0.2.2"
|
version = "0.2.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "7efe798e1fe0d882e335aab8928d5deaafb0d27869b69ec7e9e4686548e11753"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap",
|
"clap",
|
||||||
"dirs",
|
"dirs",
|
||||||
@@ -305,12 +305,12 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dagger-rs"
|
name = "dagger-rs"
|
||||||
version = "0.2.9"
|
version = "0.2.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap",
|
"clap",
|
||||||
"color-eyre",
|
"color-eyre",
|
||||||
"dagger-codegen",
|
"dagger-codegen",
|
||||||
"dagger-core 0.2.2",
|
"dagger-core 0.2.1",
|
||||||
"dirs",
|
"dirs",
|
||||||
"eyre",
|
"eyre",
|
||||||
"flate2",
|
"flate2",
|
||||||
@@ -330,29 +330,10 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dagger-sdk"
|
name = "dagger-sdk"
|
||||||
version = "0.2.2"
|
version = "0.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d1562df6d7d47fbb891331896ec9c04da1db129c1a9f073c40c33ab918f06e99"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64",
|
"base64",
|
||||||
"dagger-core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"dagger-core 0.2.1",
|
||||||
"eyre",
|
|
||||||
"futures",
|
|
||||||
"genco",
|
|
||||||
"gql_client",
|
|
||||||
"pretty_assertions",
|
|
||||||
"serde",
|
|
||||||
"serde_json",
|
|
||||||
"tokio",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "dagger-sdk"
|
|
||||||
version = "0.2.5"
|
|
||||||
dependencies = [
|
|
||||||
"base64",
|
|
||||||
"dagger-core 0.2.2",
|
|
||||||
"derive_builder",
|
|
||||||
"eyre",
|
"eyre",
|
||||||
"futures",
|
"futures",
|
||||||
"genco",
|
"genco",
|
||||||
@@ -365,69 +346,21 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "darling"
|
name = "dagger-sdk"
|
||||||
version = "0.14.3"
|
version = "0.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c0808e1bd8671fb44a113a14e13497557533369847788fa2ae912b6ebfce9fa8"
|
checksum = "e454c49b81feeb5c4057f54223cb8d7618e5d015ed835c3f3fa231fefa04e833"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"darling_core",
|
"base64",
|
||||||
"darling_macro",
|
"dagger-core 0.2.0",
|
||||||
]
|
"eyre",
|
||||||
|
"futures",
|
||||||
[[package]]
|
"genco",
|
||||||
name = "darling_core"
|
"gql_client",
|
||||||
version = "0.14.3"
|
"pretty_assertions",
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
"serde",
|
||||||
checksum = "001d80444f28e193f30c2f293455da62dcf9a6b29918a4253152ae2b1de592cb"
|
"serde_json",
|
||||||
dependencies = [
|
"tokio",
|
||||||
"fnv",
|
|
||||||
"ident_case",
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"strsim",
|
|
||||||
"syn",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "darling_macro"
|
|
||||||
version = "0.14.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b36230598a2d5de7ec1c6f51f72d8a99a9208daff41de2084d06e3fd3ea56685"
|
|
||||||
dependencies = [
|
|
||||||
"darling_core",
|
|
||||||
"quote",
|
|
||||||
"syn",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "derive_builder"
|
|
||||||
version = "0.12.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8"
|
|
||||||
dependencies = [
|
|
||||||
"derive_builder_macro",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "derive_builder_core"
|
|
||||||
version = "0.12.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f"
|
|
||||||
dependencies = [
|
|
||||||
"darling",
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "derive_builder_macro"
|
|
||||||
version = "0.12.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e"
|
|
||||||
dependencies = [
|
|
||||||
"derive_builder_core",
|
|
||||||
"syn",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -906,12 +839,6 @@ dependencies = [
|
|||||||
"tokio-native-tls",
|
"tokio-native-tls",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "ident_case"
|
|
||||||
version = "1.0.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "dagger-rs"
|
name = "dagger-rs"
|
||||||
version = "0.2.9"
|
version = "0.2.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
license-file = "LICENSE.MIT"
|
license-file = "LICENSE.MIT"
|
||||||
@@ -19,8 +19,8 @@ members = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
dagger-codegen = { path = "crates/dagger-codegen", version = "^0.2.3" }
|
dagger-codegen = { path = "crates/dagger-codegen", version = "^0.2.1" }
|
||||||
dagger-core = { path = "crates/dagger-core", version = "^0.2.2" }
|
dagger-core = { path = "crates/dagger-core", version = "^0.2.1" }
|
||||||
|
|
||||||
clap = "4.1.6"
|
clap = "4.1.6"
|
||||||
dirs = "4.0.0"
|
dirs = "4.0.0"
|
||||||
|
@@ -21,8 +21,8 @@ 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
|
||||||
- [x] general api stabilisation
|
- [ ] general api stabilisation
|
||||||
- [x] document usage
|
- [x] document usage
|
||||||
- [ ] make async variant
|
- [ ] make async variant
|
||||||
|
|
||||||
|
@@ -8,5 +8,5 @@ edition = "2021"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
clap = "4.1.6"
|
clap = "4.1.6"
|
||||||
color-eyre = "0.6.2"
|
color-eyre = "0.6.2"
|
||||||
dagger-sdk = "0.2.2"
|
dagger-sdk = "0.2.0"
|
||||||
eyre = "0.6.8"
|
eyre = "0.6.8"
|
||||||
|
125
ci/src/main.rs
125
ci/src/main.rs
@@ -8,17 +8,19 @@ fn main() -> eyre::Result<()> {
|
|||||||
let matches = clap::Command::new("ci")
|
let matches = clap::Command::new("ci")
|
||||||
.subcommand_required(true)
|
.subcommand_required(true)
|
||||||
.subcommand(clap::Command::new("pr"))
|
.subcommand(clap::Command::new("pr"))
|
||||||
.subcommand(clap::Command::new("release"))
|
.subcommand(
|
||||||
|
clap::Command::new("release")
|
||||||
|
.arg(clap::Arg::new("version").long("version").required(true)),
|
||||||
|
)
|
||||||
.get_matches();
|
.get_matches();
|
||||||
|
|
||||||
let client = dagger_sdk::client::connect()?;
|
let client = dagger_sdk::client::connect()?;
|
||||||
|
|
||||||
match matches.subcommand() {
|
|
||||||
Some(("pr", _)) => {
|
|
||||||
let base = select_base_image(client.clone());
|
let base = select_base_image(client.clone());
|
||||||
return validate_pr(client, base);
|
|
||||||
}
|
match matches.subcommand() {
|
||||||
Some(("release", subm)) => return release(client, subm),
|
Some(("pr", _)) => return validate_pr(client, base),
|
||||||
|
Some(("release", subm)) => return release(client, base, subm),
|
||||||
Some(_) => {
|
Some(_) => {
|
||||||
panic!("invalid subcommand selected!")
|
panic!("invalid subcommand selected!")
|
||||||
}
|
}
|
||||||
@@ -28,38 +30,50 @@ fn main() -> eyre::Result<()> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn release(client: Arc<Query>, _subm: &clap::ArgMatches) -> Result<(), color_eyre::Report> {
|
fn release(
|
||||||
let src_dir = client.host().directory(
|
client: Arc<Query>,
|
||||||
".".into(),
|
base: Container,
|
||||||
Some(HostDirectoryOpts {
|
subm: &clap::ArgMatches,
|
||||||
exclude: Some(vec!["target/".into()]),
|
) -> Result<(), color_eyre::Report> {
|
||||||
include: None,
|
let version = subm.get_one::<String>("version").unwrap();
|
||||||
}),
|
|
||||||
);
|
|
||||||
let base_image = client
|
|
||||||
.container(None)
|
|
||||||
.from("rust:latest".into())
|
|
||||||
.with_workdir("app".into())
|
|
||||||
.with_mounted_directory("/app/".into(), src_dir.id());
|
|
||||||
|
|
||||||
let container = base_image
|
let container = base
|
||||||
|
.with_exec(
|
||||||
|
vec!["cargo".into(), "install".into(), "cargo-release".into()],
|
||||||
|
None,
|
||||||
|
)
|
||||||
.with_exec(
|
.with_exec(
|
||||||
vec![
|
vec![
|
||||||
"cargo".into(),
|
"cargo".into(),
|
||||||
"install".into(),
|
"release".into(),
|
||||||
"cargo-smart-release".into(),
|
"version".into(),
|
||||||
|
"--workspace".into(),
|
||||||
|
"--execute".into(),
|
||||||
|
"--no-confirm".into(),
|
||||||
|
version.clone(),
|
||||||
],
|
],
|
||||||
None,
|
None,
|
||||||
)
|
)
|
||||||
.with_exec(
|
.with_exec(
|
||||||
vec![
|
vec![
|
||||||
"cargo".into(),
|
"cargo".into(),
|
||||||
"smart-release".into(),
|
"release".into(),
|
||||||
|
"replace".into(),
|
||||||
|
"--workspace".into(),
|
||||||
"--execute".into(),
|
"--execute".into(),
|
||||||
"--allow-fully-generated-changelogs".into(),
|
"--no-confirm".into(),
|
||||||
"--no-changelog-preview".into(),
|
],
|
||||||
"dagger-rs".into(),
|
None,
|
||||||
"dagger-sdk".into(),
|
)
|
||||||
|
.with_exec(
|
||||||
|
vec![
|
||||||
|
"cargo".into(),
|
||||||
|
"release".into(),
|
||||||
|
"publish".into(),
|
||||||
|
"--workspace".into(),
|
||||||
|
"--execute".into(),
|
||||||
|
"--no-verify".into(),
|
||||||
|
"--no-confirm".into(),
|
||||||
],
|
],
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
@@ -68,7 +82,7 @@ fn release(client: Arc<Query>, _subm: &clap::ArgMatches) -> Result<(), color_eyr
|
|||||||
eyre::bail!("container failed with non-zero exit code");
|
eyre::bail!("container failed with non-zero exit code");
|
||||||
}
|
}
|
||||||
|
|
||||||
println!("released pr succeeded!");
|
println!("validating pr succeeded!");
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
@@ -97,66 +111,11 @@ fn get_dependencies(client: Arc<Query>) -> Container {
|
|||||||
|
|
||||||
let cache_cargo_index_dir = client.cache_volume("cargo_index".into());
|
let cache_cargo_index_dir = client.cache_volume("cargo_index".into());
|
||||||
let cache_cargo_deps = client.cache_volume("cargo_deps".into());
|
let cache_cargo_deps = client.cache_volume("cargo_deps".into());
|
||||||
let cache_cargo_bin = client.cache_volume("cargo_bin_cache".into());
|
|
||||||
|
|
||||||
let minio_url = "https://github.com/mozilla/sccache/releases/download/v0.3.3/sccache-v0.3.3-x86_64-unknown-linux-musl.tar.gz".into();
|
|
||||||
|
|
||||||
let base_image = client
|
let base_image = client
|
||||||
.container(None)
|
.container(None)
|
||||||
.from("rust:latest".into())
|
.from("rust:latest".into())
|
||||||
.with_workdir("app".into())
|
.with_workdir("app".into())
|
||||||
.with_exec(vec!["apt-get".into(), "update".into()], None)
|
|
||||||
.with_exec(
|
|
||||||
vec![
|
|
||||||
"apt-get".into(),
|
|
||||||
"install".into(),
|
|
||||||
"--yes".into(),
|
|
||||||
"libpq-dev".into(),
|
|
||||||
"wget".into(),
|
|
||||||
],
|
|
||||||
None,
|
|
||||||
)
|
|
||||||
.with_exec(vec!["wget".into(), minio_url], None)
|
|
||||||
.with_exec(
|
|
||||||
vec![
|
|
||||||
"tar".into(),
|
|
||||||
"xzf".into(),
|
|
||||||
"sccache-v0.3.3-x86_64-unknown-linux-musl.tar.gz".into(),
|
|
||||||
],
|
|
||||||
None,
|
|
||||||
)
|
|
||||||
.with_exec(
|
|
||||||
vec![
|
|
||||||
"mv".into(),
|
|
||||||
"sccache-v0.3.3-x86_64-unknown-linux-musl/sccache".into(),
|
|
||||||
"/usr/local/bin/sccache".into(),
|
|
||||||
],
|
|
||||||
None,
|
|
||||||
)
|
|
||||||
.with_exec(
|
|
||||||
vec!["chmod".into(), "+x".into(), "/usr/local/bin/sccache".into()],
|
|
||||||
None,
|
|
||||||
)
|
|
||||||
.with_env_variable("RUSTC_WRAPPER".into(), "/usr/local/bin/sccache".into())
|
|
||||||
.with_env_variable(
|
|
||||||
"AWS_ACCESS_KEY_ID".into(),
|
|
||||||
std::env::var("AWS_ACCESS_KEY_ID").unwrap_or("".into()),
|
|
||||||
)
|
|
||||||
.with_env_variable(
|
|
||||||
"AWS_SECRET_ACCESS_KEY".into(),
|
|
||||||
std::env::var("AWS_SECRET_ACCESS_KEY").unwrap_or("".into()),
|
|
||||||
)
|
|
||||||
.with_env_variable("SCCACHE_BUCKET".into(), "sccache".into())
|
|
||||||
.with_env_variable("SCCACHE_REGION".into(), "auto".into())
|
|
||||||
.with_env_variable(
|
|
||||||
"SCCACHE_ENDPOINT".into(),
|
|
||||||
"https://api-minio.front.kjuulh.io".into(),
|
|
||||||
)
|
|
||||||
.with_mounted_cache("~/.cargo/bin".into(), cache_cargo_bin.id(), None)
|
|
||||||
.with_mounted_cache("~/.cargo/registry/index".into(), cache_cargo_bin.id(), None)
|
|
||||||
.with_mounted_cache("~/.cargo/registry/cache".into(), cache_cargo_bin.id(), None)
|
|
||||||
.with_mounted_cache("~/.cargo/git/db".into(), cache_cargo_bin.id(), None)
|
|
||||||
.with_mounted_cache("target/".into(), cache_cargo_bin.id(), None)
|
|
||||||
.with_exec(
|
.with_exec(
|
||||||
vec!["cargo".into(), "install".into(), "cargo-chef".into()],
|
vec!["cargo".into(), "install".into(), "cargo-chef".into()],
|
||||||
None,
|
None,
|
||||||
|
@@ -1,189 +0,0 @@
|
|||||||
# Changelog
|
|
||||||
|
|
||||||
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/),
|
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
||||||
|
|
||||||
## v0.2.4 (2023-02-19)
|
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-f29ff836cfd72d5e051ca6a71a230ba1e9933091/> without Some in _opts functions
|
|
||||||
Option has been removed as a wrapper around opts. This makes it much
|
|
||||||
more convenient to use
|
|
||||||
|
|
||||||
```rust
|
|
||||||
client.container_opts(Some(ContainerOpts{}))
|
|
||||||
// ->
|
|
||||||
client.container_opts(ContainerOpts{})
|
|
||||||
```
|
|
||||||
|
|
||||||
The same options are still available, either an empty object can be
|
|
||||||
passed, or a non _opts function can be used
|
|
||||||
- <csr-id-9762da895a164e30c5dc60e89a83e934ceae47ab/> with _opts methods
|
|
||||||
Now all opt values enter into a _opts function instead of the original.
|
|
||||||
This avoids a lot of verbosity for both None in the case opts are
|
|
||||||
unwanted, and Some() if they actually are.
|
|
||||||
|
|
||||||
They are used like so:
|
|
||||||
|
|
||||||
```rust
|
|
||||||
client.container().from("...");
|
|
||||||
client.container_opts(Some(ContainerOpts{ ... }))
|
|
||||||
```
|
|
||||||
|
|
||||||
Some from opts will be removed in a future commit/pr
|
|
||||||
- <csr-id-94336d06378f035464e233b921dc3858070f582d/> move to &str instead of String and introduce builder.
|
|
||||||
This will make the api much easier to use, as we can now rely on ""
|
|
||||||
instead of "".into() for normal string values.
|
|
||||||
|
|
||||||
Introduced builder as well, which makes it much easier to use *Opts, as
|
|
||||||
it can handle the building of that, and get the benefits from String ->
|
|
||||||
&str, as that is currently not allowed for optional values
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-c627595fd2695e236924175d137c42f1480ccd6b/> cargo clippy
|
|
||||||
- <csr-id-02006d40fc2c0383e0412c15c36db9af7eda991f/> without phantom data
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 5 commits contributed to the release.
|
|
||||||
- 5 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**
|
|
||||||
- cargo clippy ([`c627595`](https://github.com/kjuulh/dagger-rs/commit/c627595fd2695e236924175d137c42f1480ccd6b))
|
|
||||||
- without Some in _opts functions ([`f29ff83`](https://github.com/kjuulh/dagger-rs/commit/f29ff836cfd72d5e051ca6a71a230ba1e9933091))
|
|
||||||
- with _opts methods ([`9762da8`](https://github.com/kjuulh/dagger-rs/commit/9762da895a164e30c5dc60e89a83e934ceae47ab))
|
|
||||||
- without phantom data ([`02006d4`](https://github.com/kjuulh/dagger-rs/commit/02006d40fc2c0383e0412c15c36db9af7eda991f))
|
|
||||||
- move to &str instead of String and introduce builder. ([`94336d0`](https://github.com/kjuulh/dagger-rs/commit/94336d06378f035464e233b921dc3858070f582d))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## 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/>
|
|
||||||
|
|
||||||
- 3 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**
|
|
||||||
- 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))
|
|
||||||
- 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)
|
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-6e5f4074329ab0462445b31d4153f8497c483438/> update to dagger v0.3.12
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 2 commits 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**
|
|
||||||
- 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))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.1 (2023-02-18)
|
|
||||||
|
|
||||||
<csr-id-6afe141d34308f18f9d46419931d2c9b822a7aef/>
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-789b0e69c8c53d0e86d9cec89ab5345507aad514/> update all dependencies
|
|
||||||
|
|
||||||
### Other
|
|
||||||
|
|
||||||
- <csr-id-6afe141d34308f18f9d46419931d2c9b822a7aef/> fix
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 35 commits contributed to the release over the course of 20 calendar days.
|
|
||||||
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
|
|
||||||
- 2 unique issues were worked on: [#5](https://github.com/kjuulh/dagger-rs/issues/5), [#6](https://github.com/kjuulh/dagger-rs/issues/6)
|
|
||||||
|
|
||||||
### Commit Details
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
<details><summary>view details</summary>
|
|
||||||
|
|
||||||
* **[#5](https://github.com/kjuulh/dagger-rs/issues/5)**
|
|
||||||
- update all dependencies ([`789b0e6`](https://github.com/kjuulh/dagger-rs/commit/789b0e69c8c53d0e86d9cec89ab5345507aad514))
|
|
||||||
* **[#6](https://github.com/kjuulh/dagger-rs/issues/6)**
|
|
||||||
- feature/add impl ([`4a4c03f`](https://github.com/kjuulh/dagger-rs/commit/4a4c03f3c2ee7f6268c65976715e70767b4ea78d))
|
|
||||||
* **Uncategorized**
|
|
||||||
- Release dagger-core v0.2.1, dagger-codegen v0.2.1, dagger-rs v0.2.1 ([`1332bc8`](https://github.com/kjuulh/dagger-rs/commit/1332bc842ce2ea0254c651419813b63b36ca590c))
|
|
||||||
- add changelogs ([`a064684`](https://github.com/kjuulh/dagger-rs/commit/a064684fcf80196188a57d9ff9067c0b5769fb09))
|
|
||||||
- Adjusting changelogs prior to release of dagger-core v0.2.1, dagger-codegen v0.2.1, dagger-rs v0.2.1 ([`f4a20fd`](https://github.com/kjuulh/dagger-rs/commit/f4a20fda79063b29829cc899793775ba8cb17214))
|
|
||||||
- remove toolchain ([`f034528`](https://github.com/kjuulh/dagger-rs/commit/f03452840cf9260cd1d5e5aa8d7ee2897384c745))
|
|
||||||
- with actual versions ([`7153c24`](https://github.com/kjuulh/dagger-rs/commit/7153c24f0105a05f170efd10ef2535d83ce0c87e))
|
|
||||||
- with publish ([`989d5bc`](https://github.com/kjuulh/dagger-rs/commit/989d5bc26036d46a199d939b5cbbe72aff2f8fb1))
|
|
||||||
- codegen also with repository ([`c625ae4`](https://github.com/kjuulh/dagger-rs/commit/c625ae49ba4d2112ea9d4907a6689fd8e74b808c))
|
|
||||||
- with readme and license ([`1e26b38`](https://github.com/kjuulh/dagger-rs/commit/1e26b383d4f6dbcbe20f5f7c19c749e743f6e607))
|
|
||||||
- with wildcard version ([`533b9df`](https://github.com/kjuulh/dagger-rs/commit/533b9dfef0165c514127a8437d08daf52adf5739))
|
|
||||||
- cargo version 0.2.0 ([`bec62de`](https://github.com/kjuulh/dagger-rs/commit/bec62de62ff5638428174e232a36eee3ddd0f5ef))
|
|
||||||
- bump version ([`36b0ecd`](https://github.com/kjuulh/dagger-rs/commit/36b0ecdabf4c220cffb2d0660fb6480387e3249a))
|
|
||||||
- fix all clippy ([`6be8482`](https://github.com/kjuulh/dagger-rs/commit/6be8482b461e098384bbf1371ed7d67b259197fa))
|
|
||||||
- fmt tests ([`2eb0277`](https://github.com/kjuulh/dagger-rs/commit/2eb027754b357100544fe0c8f7c5f6125e017c6f))
|
|
||||||
- add tests ([`19b46b6`](https://github.com/kjuulh/dagger-rs/commit/19b46b6cf04ff3cff49047699dea20ca784c5536))
|
|
||||||
- pull out args wip ([`c4edd29`](https://github.com/kjuulh/dagger-rs/commit/c4edd29f50b6ada2cc3afd2f4df2ec47920c4607))
|
|
||||||
- implement sort by name and type ([`d9b51c1`](https://github.com/kjuulh/dagger-rs/commit/d9b51c1ac90c00fb3af24332b6140e1201bc9be7))
|
|
||||||
- fix optional types for real ([`26069a8`](https://github.com/kjuulh/dagger-rs/commit/26069a82a69ec7265216c8ddaceb37228dd0fb81))
|
|
||||||
- fix description ([`f4581ba`](https://github.com/kjuulh/dagger-rs/commit/f4581ba4cd1693a906eaf6c58054398ceae3bfac))
|
|
||||||
- with proper optional types ([`f4a812a`](https://github.com/kjuulh/dagger-rs/commit/f4a812a7d24e9e09cb4e3cbde56ee0b3ac774b62))
|
|
||||||
- set proper option type ([`8549cfc`](https://github.com/kjuulh/dagger-rs/commit/8549cfc3a7d9f831febaeadc22db36604e465ea8))
|
|
||||||
- add fields ([`496a687`](https://github.com/kjuulh/dagger-rs/commit/496a687bc34f7c58cc86df60c183be741b0b8a9c))
|
|
||||||
- add input_fields ([`d2cddff`](https://github.com/kjuulh/dagger-rs/commit/d2cddff365c636feceb3f20a73df812fcab11a19))
|
|
||||||
- with objects ([`5fef514`](https://github.com/kjuulh/dagger-rs/commit/5fef5148010f384d0158361d64b8e17d357d4819))
|
|
||||||
- remove hardcoded test ([`910ff4a`](https://github.com/kjuulh/dagger-rs/commit/910ff4a72e10f5384287fed35f56bc7f662e7ccd))
|
|
||||||
- fix ([`6afe141`](https://github.com/kjuulh/dagger-rs/commit/6afe141d34308f18f9d46419931d2c9b822a7aef))
|
|
||||||
- formatting ([`3a7ee33`](https://github.com/kjuulh/dagger-rs/commit/3a7ee33e1ed317288b2022ea5a4ce721d59fb11e))
|
|
||||||
- remove dummy string ([`e7f6560`](https://github.com/kjuulh/dagger-rs/commit/e7f6560247768afbca0c350df7d4ccf3909b74fa))
|
|
||||||
- with input objects ([`dc53fc1`](https://github.com/kjuulh/dagger-rs/commit/dc53fc1d474b549bb1c580865a049e2fac2f5e6d))
|
|
||||||
- with enum ([`2a1f7c3`](https://github.com/kjuulh/dagger-rs/commit/2a1f7c3f2666f1f4caebf7c22707709741c2cfad))
|
|
||||||
- with codegen output ([`0bf6b0e`](https://github.com/kjuulh/dagger-rs/commit/0bf6b0e91ecc31c1f6b51338234137eb185810a0))
|
|
||||||
- added scalars ([`e587414`](https://github.com/kjuulh/dagger-rs/commit/e5874141b3b6256b7ac2a0bf653089fa7bcc5d14))
|
|
||||||
- with scalars ([`0d6e6e5`](https://github.com/kjuulh/dagger-rs/commit/0d6e6e57ae6a3b8a1f450d719c9973130af873b7))
|
|
||||||
- split out codegen parts ([`3263f1d`](https://github.com/kjuulh/dagger-rs/commit/3263f1d589aee78065401c666533cb0cbadd06ce))
|
|
||||||
</details>
|
|
||||||
|
|
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "dagger-codegen"
|
name = "dagger-codegen"
|
||||||
version = "0.2.4"
|
version = "0.2.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
license-file = "LICENSE.MIT"
|
license-file = "LICENSE.MIT"
|
||||||
@@ -11,7 +11,7 @@ publish = true
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
convert_case = "0.6.0"
|
convert_case = "0.6.0"
|
||||||
dagger-core = { path = "../dagger-core", version = "^0.2.2" }
|
dagger-core = { path = "../dagger-core", version = "^0.2.1" }
|
||||||
|
|
||||||
eyre = "0.6.8"
|
eyre = "0.6.8"
|
||||||
genco = "0.17.3"
|
genco = "0.17.3"
|
||||||
|
@@ -6,8 +6,8 @@ use eyre::ContextCompat;
|
|||||||
use crate::utility::OptionExt;
|
use crate::utility::OptionExt;
|
||||||
|
|
||||||
pub trait FormatTypeFuncs {
|
pub trait FormatTypeFuncs {
|
||||||
fn format_kind_list(&self, representation: &str, input: bool, immutable: bool) -> String;
|
fn format_kind_list(&self, representation: &str) -> String;
|
||||||
fn format_kind_scalar_string(&self, representation: &str, input: bool) -> String;
|
fn format_kind_scalar_string(&self, representation: &str) -> String;
|
||||||
fn format_kind_scalar_int(&self, representation: &str) -> String;
|
fn format_kind_scalar_int(&self, representation: &str) -> String;
|
||||||
fn format_kind_scalar_float(&self, representation: &str) -> String;
|
fn format_kind_scalar_float(&self, representation: &str) -> String;
|
||||||
fn format_kind_scalar_boolean(&self, representation: &str) -> String;
|
fn format_kind_scalar_boolean(&self, representation: &str) -> String;
|
||||||
@@ -36,18 +36,14 @@ impl CommonFunctions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn format_input_type(&self, t: &TypeRef) -> String {
|
pub fn format_input_type(&self, t: &TypeRef) -> String {
|
||||||
self.format_type(t, true, false)
|
self.format_type(t, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn format_output_type(&self, t: &TypeRef) -> String {
|
pub fn format_output_type(&self, t: &TypeRef) -> String {
|
||||||
self.format_type(t, false, false)
|
self.format_type(t, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn format_immutable_input_type(&self, t: &TypeRef) -> String {
|
fn format_type(&self, t: &TypeRef, input: bool) -> String {
|
||||||
self.format_type(t, true, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn format_type(&self, t: &TypeRef, input: bool, immutable: bool) -> String {
|
|
||||||
let mut representation = String::new();
|
let mut representation = String::new();
|
||||||
let mut r = Some(t.clone());
|
let mut r = Some(t.clone());
|
||||||
while r.is_some() {
|
while r.is_some() {
|
||||||
@@ -61,14 +57,9 @@ impl CommonFunctions {
|
|||||||
Scalar::Float => self
|
Scalar::Float => self
|
||||||
.format_type_funcs
|
.format_type_funcs
|
||||||
.format_kind_scalar_float(&mut representation),
|
.format_kind_scalar_float(&mut representation),
|
||||||
Scalar::String => {
|
Scalar::String => self
|
||||||
if immutable {
|
.format_type_funcs
|
||||||
"&'a str".into()
|
.format_kind_scalar_string(&mut representation),
|
||||||
} else {
|
|
||||||
self.format_type_funcs
|
|
||||||
.format_kind_scalar_string(&mut representation, input)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Scalar::Boolean => self
|
Scalar::Boolean => self
|
||||||
.format_type_funcs
|
.format_type_funcs
|
||||||
.format_kind_scalar_boolean(&mut representation),
|
.format_kind_scalar_boolean(&mut representation),
|
||||||
@@ -96,15 +87,12 @@ impl CommonFunctions {
|
|||||||
.as_ref()
|
.as_ref()
|
||||||
.map(|t| t.clone())
|
.map(|t| t.clone())
|
||||||
.map(|t| *t)
|
.map(|t| *t)
|
||||||
.map(|t| self.format_type(&t, input, immutable))
|
.map(|t| self.format_type(&t, input))
|
||||||
.context("could not get inner type of list")
|
.context("could not get inner type of list")
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
representation = self.format_type_funcs.format_kind_list(
|
representation =
|
||||||
&mut inner_type,
|
self.format_type_funcs.format_kind_list(&mut inner_type);
|
||||||
input,
|
|
||||||
immutable,
|
|
||||||
);
|
|
||||||
|
|
||||||
return representation;
|
return representation;
|
||||||
}
|
}
|
||||||
|
@@ -5,17 +5,13 @@ use super::functions::format_name;
|
|||||||
pub struct FormatTypeFunc;
|
pub struct FormatTypeFunc;
|
||||||
|
|
||||||
impl FormatTypeFuncs for FormatTypeFunc {
|
impl FormatTypeFuncs for FormatTypeFunc {
|
||||||
fn format_kind_list(&self, representation: &str, _input: bool, _immutable: bool) -> String {
|
fn format_kind_list(&self, representation: &str) -> String {
|
||||||
format!("Vec<{}>", representation)
|
format!("Vec<{}>", representation)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn format_kind_scalar_string(&self, representation: &str, input: bool) -> String {
|
fn format_kind_scalar_string(&self, representation: &str) -> String {
|
||||||
let mut rep = representation.to_string();
|
let mut rep = representation.to_string();
|
||||||
if input {
|
|
||||||
rep.push_str("impl Into<String>");
|
|
||||||
} else {
|
|
||||||
rep.push_str("String");
|
rep.push_str("String");
|
||||||
}
|
|
||||||
rep
|
rep
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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, type_ref_is_list_of_objects, type_ref_is_object,
|
type_field_has_optional, type_ref_is_list_of_objects, type_ref_is_object,
|
||||||
type_ref_is_optional, type_ref_is_scalar, CommonFunctions, Scalar,
|
type_ref_is_optional, CommonFunctions,
|
||||||
};
|
};
|
||||||
use crate::utility::OptionExt;
|
use crate::utility::OptionExt;
|
||||||
|
|
||||||
@@ -37,36 +37,11 @@ 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));
|
||||||
|
|
||||||
if let Some((args, true)) = args {
|
|
||||||
let required_args = format_required_function_args(funcs, field);
|
|
||||||
Some(quote! {
|
|
||||||
$(&signature)(
|
|
||||||
$(required_args)
|
|
||||||
) -> $(output_type.as_ref()) {
|
|
||||||
let mut query = self.selection.select($(quoted(field.name.as_ref())));
|
|
||||||
|
|
||||||
$(render_required_args(funcs, field))
|
|
||||||
|
|
||||||
$(render_execution(funcs, field))
|
|
||||||
}
|
|
||||||
|
|
||||||
$(&signature)_opts(
|
|
||||||
$args
|
|
||||||
) -> $(output_type) {
|
|
||||||
let mut query = self.selection.select($(quoted(field.name.as_ref())));
|
|
||||||
|
|
||||||
$(render_required_args(funcs, field))
|
|
||||||
$(render_optional_args(funcs, field))
|
|
||||||
|
|
||||||
$(render_execution(funcs, field))
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
Some(quote! {
|
Some(quote! {
|
||||||
$(signature)(
|
$(signature)(
|
||||||
$(if let Some((args, _)) = args => $args)
|
$(args)
|
||||||
) -> $(output_type) {
|
) -> $(output_type) {
|
||||||
let mut query = self.selection.select($(quoted(field.name.as_ref())));
|
let mut query = self.selection.select($(quoted(field.name.as_ref())));
|
||||||
|
|
||||||
@@ -77,7 +52,6 @@ pub fn format_function(funcs: &CommonFunctions, field: &FullTypeFields) -> Optio
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
fn render_required_args(_funcs: &CommonFunctions, field: &FullTypeFields) -> Option<rust::Tokens> {
|
fn render_required_args(_funcs: &CommonFunctions, field: &FullTypeFields) -> Option<rust::Tokens> {
|
||||||
if let Some(args) = field.args.as_ref() {
|
if let Some(args) = field.args.as_ref() {
|
||||||
@@ -92,42 +66,8 @@ fn render_required_args(_funcs: &CommonFunctions, field: &FullTypeFields) -> Opt
|
|||||||
let n = format_struct_name(&s.input_value.name);
|
let n = format_struct_name(&s.input_value.name);
|
||||||
let name = &s.input_value.name;
|
let name = &s.input_value.name;
|
||||||
|
|
||||||
if type_ref_is_scalar(&s.input_value.type_) {
|
|
||||||
if let Scalar::String =
|
|
||||||
Scalar::from(&*s.input_value.type_.of_type.as_ref().unwrap().clone())
|
|
||||||
{
|
|
||||||
return Some(quote! {
|
|
||||||
query = query.arg($(quoted(name)), $(&n).into());
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if type_ref_is_list(&s.input_value.type_) {
|
|
||||||
let inner = *s
|
|
||||||
.input_value
|
|
||||||
.type_
|
|
||||||
.of_type
|
|
||||||
.as_ref()
|
|
||||||
.unwrap()
|
|
||||||
.clone()
|
|
||||||
.of_type
|
|
||||||
.as_ref()
|
|
||||||
.unwrap()
|
|
||||||
.clone();
|
|
||||||
println!("type: {:?}", inner);
|
|
||||||
if type_ref_is_scalar(&inner) {
|
|
||||||
if let Scalar::String =
|
|
||||||
Scalar::from(&*inner.of_type.as_ref().unwrap().clone())
|
|
||||||
{
|
|
||||||
return Some(quote! {
|
|
||||||
query = query.arg($(quoted(name)), $(&n).into_iter().map(|i| i.into()).collect::<Vec<String>>());
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Some(quote! {
|
Some(quote! {
|
||||||
query = query.arg($(quoted(name)), $(n));
|
query = query.arg($(quoted(name)), $(n)).unwrap();
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@@ -158,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();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@@ -171,7 +111,9 @@ fn render_optional_args(_funcs: &CommonFunctions, field: &FullTypeFields) -> Opt
|
|||||||
}
|
}
|
||||||
|
|
||||||
let required_args = quote! {
|
let required_args = quote! {
|
||||||
|
if let Some(opts) = opts {
|
||||||
$(for arg in args join ($['\r']) => $arg)
|
$(for arg in args join ($['\r']) => $arg)
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Some(required_args)
|
Some(required_args)
|
||||||
@@ -180,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);
|
||||||
@@ -235,14 +163,11 @@ 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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn format_function_args(
|
fn format_function_args(funcs: &CommonFunctions, field: &FullTypeFields) -> Option<rust::Tokens> {
|
||||||
funcs: &CommonFunctions,
|
|
||||||
field: &FullTypeFields,
|
|
||||||
) -> Option<(rust::Tokens, bool)> {
|
|
||||||
if let Some(args) = field.args.as_ref() {
|
if let Some(args) = field.args.as_ref() {
|
||||||
let args = args
|
let args = args
|
||||||
.into_iter()
|
.into_iter()
|
||||||
@@ -268,50 +193,13 @@ fn format_function_args(
|
|||||||
};
|
};
|
||||||
|
|
||||||
if type_field_has_optional(field) {
|
if type_field_has_optional(field) {
|
||||||
Some((
|
|
||||||
quote! {
|
|
||||||
$(required_args)
|
|
||||||
opts: $(field_options_struct_name(field))
|
|
||||||
},
|
|
||||||
true,
|
|
||||||
))
|
|
||||||
} else {
|
|
||||||
Some((required_args, false))
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn format_required_function_args(
|
|
||||||
funcs: &CommonFunctions,
|
|
||||||
field: &FullTypeFields,
|
|
||||||
) -> Option<rust::Tokens> {
|
|
||||||
if let Some(args) = field.args.as_ref() {
|
|
||||||
let args = args
|
|
||||||
.into_iter()
|
|
||||||
.map(|a| {
|
|
||||||
a.as_ref().and_then(|s| {
|
|
||||||
if type_ref_is_optional(&s.input_value.type_) {
|
|
||||||
return None;
|
|
||||||
}
|
|
||||||
|
|
||||||
let t = funcs.format_input_type(&s.input_value.type_);
|
|
||||||
let n = format_struct_name(&s.input_value.name);
|
|
||||||
|
|
||||||
Some(quote! {
|
Some(quote! {
|
||||||
$(n): $(t),
|
$(required_args)
|
||||||
|
opts: Option<$(field_options_struct_name(field))>
|
||||||
})
|
})
|
||||||
})
|
} else {
|
||||||
})
|
|
||||||
.flatten()
|
|
||||||
.collect::<Vec<_>>();
|
|
||||||
let required_args = quote! {
|
|
||||||
&self,
|
|
||||||
$(for arg in args join ($['\r']) => $arg)
|
|
||||||
};
|
|
||||||
|
|
||||||
Some(required_args)
|
Some(required_args)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
@@ -10,7 +10,7 @@ fn render_enum_values(values: &FullType) -> Option<rust::Tokens> {
|
|||||||
.map(|values| {
|
.map(|values| {
|
||||||
values
|
values
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|val| quote! { $(val.name.as_ref()), })
|
.map(|val| quote! { $(val.name.as_ref()) })
|
||||||
})
|
})
|
||||||
.flatten()
|
.flatten()
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
@@ -25,10 +25,7 @@ fn render_enum_values(values: &FullType) -> Option<rust::Tokens> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn render_enum(t: &FullType) -> eyre::Result<rust::Tokens> {
|
pub fn render_enum(t: &FullType) -> eyre::Result<rust::Tokens> {
|
||||||
let serialize = rust::import("serde", "Serialize");
|
|
||||||
|
|
||||||
Ok(quote! {
|
Ok(quote! {
|
||||||
#[derive($serialize, Clone, PartialEq, Debug)]
|
|
||||||
pub enum $(t.name.as_ref()) {
|
pub enum $(t.name.as_ref()) {
|
||||||
$(render_enum_values(t))
|
$(render_enum_values(t))
|
||||||
}
|
}
|
||||||
|
@@ -9,7 +9,7 @@ pub fn render_input(funcs: &CommonFunctions, t: &FullType) -> eyre::Result<rust:
|
|||||||
let deserialize = rust::import("serde", "Deserialize");
|
let deserialize = rust::import("serde", "Deserialize");
|
||||||
let serialize = rust::import("serde", "Serialize");
|
let serialize = rust::import("serde", "Serialize");
|
||||||
Ok(quote! {
|
Ok(quote! {
|
||||||
#[derive($serialize, $deserialize, Debug, PartialEq, Clone)]
|
#[derive($serialize, $deserialize)]
|
||||||
pub struct $(format_name(t.name.as_ref().unwrap())) {
|
pub struct $(format_name(t.name.as_ref().unwrap())) {
|
||||||
$(render_input_fields(funcs, t.input_fields.as_ref().unwrap_or(&Vec::new()) ))
|
$(render_input_fields(funcs, t.input_fields.as_ref().unwrap_or(&Vec::new()) ))
|
||||||
}
|
}
|
||||||
@@ -33,6 +33,6 @@ pub fn render_input_fields(
|
|||||||
|
|
||||||
pub fn render_input_field(funcs: &CommonFunctions, field: &FullTypeInputFields) -> rust::Tokens {
|
pub fn render_input_field(funcs: &CommonFunctions, field: &FullTypeInputFields) -> rust::Tokens {
|
||||||
quote! {
|
quote! {
|
||||||
pub $(format_struct_name(&field.input_value.name)): $(funcs.format_output_type(&field.input_value.type_)),
|
pub $(format_struct_name(&field.input_value.name)): $(funcs.format_input_type(&field.input_value.type_)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
use dagger_core::introspection::{FullType, FullTypeFields, FullTypeFieldsArgs};
|
use dagger_core::introspection::{FullType, FullTypeFields, FullTypeFieldsArgs};
|
||||||
use genco::prelude::rust;
|
use genco::prelude::rust;
|
||||||
use genco::quote;
|
use genco::quote;
|
||||||
use itertools::Itertools;
|
|
||||||
|
|
||||||
use crate::functions::{type_ref_is_optional, CommonFunctions};
|
use crate::functions::{type_ref_is_optional, CommonFunctions};
|
||||||
use crate::rust::functions::{
|
use crate::rust::functions::{
|
||||||
@@ -62,15 +61,9 @@ fn render_optional_arg(funcs: &CommonFunctions, field: &FullTypeFields) -> Optio
|
|||||||
.pipe(|t| render_optional_field_args(funcs, t))
|
.pipe(|t| render_optional_field_args(funcs, t))
|
||||||
.flatten();
|
.flatten();
|
||||||
|
|
||||||
let builder = rust::import("derive_builder", "Builder");
|
if let Some(fields) = fields {
|
||||||
let _phantom_data = rust::import("std::marker", "PhantomData");
|
|
||||||
|
|
||||||
if let Some((fields, contains_lifetime)) = fields {
|
|
||||||
Some(quote! {
|
Some(quote! {
|
||||||
#[derive($builder, Debug, PartialEq)]
|
pub struct $output_type {
|
||||||
pub struct $output_type$(if contains_lifetime => <'a>) {
|
|
||||||
//#[builder(default, setter(skip))]
|
|
||||||
//pub marker: $(phantom_data)<&'a ()>,
|
|
||||||
$fields
|
$fields
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -82,28 +75,19 @@ fn render_optional_arg(funcs: &CommonFunctions, field: &FullTypeFields) -> Optio
|
|||||||
fn render_optional_field_args(
|
fn render_optional_field_args(
|
||||||
funcs: &CommonFunctions,
|
funcs: &CommonFunctions,
|
||||||
args: &Vec<&FullTypeFieldsArgs>,
|
args: &Vec<&FullTypeFieldsArgs>,
|
||||||
) -> Option<(rust::Tokens, bool)> {
|
) -> Option<rust::Tokens> {
|
||||||
if args.len() == 0 {
|
if args.len() == 0 {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
let mut contains_lifetime = false;
|
|
||||||
let rendered_args = args.into_iter().map(|a| &a.input_value).map(|a| {
|
let rendered_args = args.into_iter().map(|a| &a.input_value).map(|a| {
|
||||||
let type_ = funcs.format_immutable_input_type(&a.type_);
|
|
||||||
if type_.contains("str") {
|
|
||||||
contains_lifetime = true;
|
|
||||||
}
|
|
||||||
quote! {
|
quote! {
|
||||||
#[builder(setter(into, strip_option))]
|
pub $(format_struct_name(&a.name)): Option<$(funcs.format_output_type(&a.type_))>,
|
||||||
pub $(format_struct_name(&a.name)): Option<$(type_)>,
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Some((
|
Some(quote! {
|
||||||
quote! {
|
|
||||||
$(for arg in rendered_args join ($['\r']) => $arg)
|
$(for arg in rendered_args join ($['\r']) => $arg)
|
||||||
},
|
})
|
||||||
contains_lifetime,
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render_functions(funcs: &CommonFunctions, fields: &Vec<FullTypeFields>) -> Option<rust::Tokens> {
|
fn render_functions(funcs: &CommonFunctions, fields: &Vec<FullTypeFields>) -> Option<rust::Tokens> {
|
||||||
|
@@ -10,7 +10,7 @@ pub fn render_scalar(t: &FullType) -> eyre::Result<rust::Tokens> {
|
|||||||
let serialize = rust::import("serde", "Serialize");
|
let serialize = rust::import("serde", "Serialize");
|
||||||
|
|
||||||
Ok(quote! {
|
Ok(quote! {
|
||||||
#[derive($serialize, $deserialize, PartialEq, Debug, Clone)]
|
#[derive($serialize, $deserialize)]
|
||||||
pub struct $(t.name.pipe(|n|format_name(n)))(String);
|
pub struct $(t.name.pipe(|n|format_name(n)))(String);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@@ -1,72 +0,0 @@
|
|||||||
# Changelog
|
|
||||||
|
|
||||||
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/),
|
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
||||||
|
|
||||||
## v0.2.2 (2023-02-19)
|
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-6e5f4074329ab0462445b31d4153f8497c483438/> update to dagger v0.3.12
|
|
||||||
|
|
||||||
### 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**
|
|
||||||
- update to dagger v0.3.12 ([`6e5f407`](https://github.com/kjuulh/dagger-rs/commit/6e5f4074329ab0462445b31d4153f8497c483438))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.1 (2023-02-18)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-789b0e69c8c53d0e86d9cec89ab5345507aad514/> update all dependencies
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 16 commits contributed to the release over the course of 19 calendar days.
|
|
||||||
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
|
|
||||||
- 2 unique issues were worked on: [#5](https://github.com/kjuulh/dagger-rs/issues/5), [#6](https://github.com/kjuulh/dagger-rs/issues/6)
|
|
||||||
|
|
||||||
### Commit Details
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
<details><summary>view details</summary>
|
|
||||||
|
|
||||||
* **[#5](https://github.com/kjuulh/dagger-rs/issues/5)**
|
|
||||||
- update all dependencies ([`789b0e6`](https://github.com/kjuulh/dagger-rs/commit/789b0e69c8c53d0e86d9cec89ab5345507aad514))
|
|
||||||
* **[#6](https://github.com/kjuulh/dagger-rs/issues/6)**
|
|
||||||
- feature/add impl ([`4a4c03f`](https://github.com/kjuulh/dagger-rs/commit/4a4c03f3c2ee7f6268c65976715e70767b4ea78d))
|
|
||||||
* **Uncategorized**
|
|
||||||
- Release dagger-core v0.2.1, dagger-codegen v0.2.1, dagger-rs v0.2.1 ([`1332bc8`](https://github.com/kjuulh/dagger-rs/commit/1332bc842ce2ea0254c651419813b63b36ca590c))
|
|
||||||
- add changelogs ([`a064684`](https://github.com/kjuulh/dagger-rs/commit/a064684fcf80196188a57d9ff9067c0b5769fb09))
|
|
||||||
- Adjusting changelogs prior to release of dagger-core v0.2.1, dagger-codegen v0.2.1, dagger-rs v0.2.1 ([`f4a20fd`](https://github.com/kjuulh/dagger-rs/commit/f4a20fda79063b29829cc899793775ba8cb17214))
|
|
||||||
- with publish ([`989d5bc`](https://github.com/kjuulh/dagger-rs/commit/989d5bc26036d46a199d939b5cbbe72aff2f8fb1))
|
|
||||||
- with repo ([`e5383b5`](https://github.com/kjuulh/dagger-rs/commit/e5383b51f3b290a87b729929c377e93bda3873e0))
|
|
||||||
- with readme and license ([`1e26b38`](https://github.com/kjuulh/dagger-rs/commit/1e26b383d4f6dbcbe20f5f7c19c749e743f6e607))
|
|
||||||
- bump version ([`36b0ecd`](https://github.com/kjuulh/dagger-rs/commit/36b0ecdabf4c220cffb2d0660fb6480387e3249a))
|
|
||||||
- with println ([`d1726a0`](https://github.com/kjuulh/dagger-rs/commit/d1726a052a6dc4e57f364864446cab3cbda7e0bf))
|
|
||||||
- context and querier done ([`52a0db3`](https://github.com/kjuulh/dagger-rs/commit/52a0db3e311f9f88447882f1406701d4cd612b1c))
|
|
||||||
- tested full flow initially ([`7a008be`](https://github.com/kjuulh/dagger-rs/commit/7a008be59e5ca183809e5840cdfae1d87665aa20))
|
|
||||||
- move code to dagger-core ([`ec0d0b2`](https://github.com/kjuulh/dagger-rs/commit/ec0d0b22e646c97acb3ce93f3afb3ddb8590e68f))
|
|
||||||
- add fields ([`496a687`](https://github.com/kjuulh/dagger-rs/commit/496a687bc34f7c58cc86df60c183be741b0b8a9c))
|
|
||||||
- with objects ([`5fef514`](https://github.com/kjuulh/dagger-rs/commit/5fef5148010f384d0158361d64b8e17d357d4819))
|
|
||||||
- with enum ([`2a1f7c3`](https://github.com/kjuulh/dagger-rs/commit/2a1f7c3f2666f1f4caebf7c22707709741c2cfad))
|
|
||||||
</details>
|
|
||||||
|
|
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "dagger-core"
|
name = "dagger-core"
|
||||||
version = "0.2.2"
|
version = "0.2.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
license-file = "LICENSE.MIT"
|
license-file = "LICENSE.MIT"
|
||||||
|
@@ -12,7 +12,7 @@ impl Engine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn from_cli(&self, cfg: &Config) -> eyre::Result<(ConnectParams, Child)> {
|
fn from_cli(&self, cfg: &Config) -> eyre::Result<(ConnectParams, Child)> {
|
||||||
let cli = Downloader::new("0.3.12".into())?.get_cli()?;
|
let cli = Downloader::new("0.3.10".into())?.get_cli()?;
|
||||||
|
|
||||||
let cli_session = CliSession::new();
|
let cli_session = CliSession::new();
|
||||||
|
|
||||||
|
@@ -1,225 +0,0 @@
|
|||||||
# Changelog
|
|
||||||
|
|
||||||
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/),
|
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
||||||
|
|
||||||
## v0.2.5 (2023-02-19)
|
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-f29ff836cfd72d5e051ca6a71a230ba1e9933091/> without Some in _opts functions
|
|
||||||
Option has been removed as a wrapper around opts. This makes it much
|
|
||||||
more convenient to use
|
|
||||||
|
|
||||||
```rust
|
|
||||||
client.container_opts(Some(ContainerOpts{}))
|
|
||||||
// ->
|
|
||||||
client.container_opts(ContainerOpts{})
|
|
||||||
```
|
|
||||||
|
|
||||||
The same options are still available, either an empty object can be
|
|
||||||
passed, or a non _opts function can be used
|
|
||||||
- <csr-id-9762da895a164e30c5dc60e89a83e934ceae47ab/> with _opts methods
|
|
||||||
Now all opt values enter into a _opts function instead of the original.
|
|
||||||
This avoids a lot of verbosity for both None in the case opts are
|
|
||||||
unwanted, and Some() if they actually are.
|
|
||||||
|
|
||||||
They are used like so:
|
|
||||||
|
|
||||||
```rust
|
|
||||||
client.container().from("...");
|
|
||||||
client.container_opts(Some(ContainerOpts{ ... }))
|
|
||||||
```
|
|
||||||
|
|
||||||
Some from opts will be removed in a future commit/pr
|
|
||||||
- <csr-id-94336d06378f035464e233b921dc3858070f582d/> move to &str instead of String and introduce builder.
|
|
||||||
This will make the api much easier to use, as we can now rely on ""
|
|
||||||
instead of "".into() for normal string values.
|
|
||||||
|
|
||||||
Introduced builder as well, which makes it much easier to use *Opts, as
|
|
||||||
it can handle the building of that, and get the benefits from String ->
|
|
||||||
&str, as that is currently not allowed for optional values
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-c627595fd2695e236924175d137c42f1480ccd6b/> cargo clippy
|
|
||||||
- <csr-id-02006d40fc2c0383e0412c15c36db9af7eda991f/> without phantom data
|
|
||||||
- <csr-id-6e2292cf11942fbd26a52fe4e0fc8471e6eb70a3/> dependencies
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 6 commits contributed to the release.
|
|
||||||
- 6 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**
|
|
||||||
- cargo clippy ([`c627595`](https://github.com/kjuulh/dagger-rs/commit/c627595fd2695e236924175d137c42f1480ccd6b))
|
|
||||||
- without Some in _opts functions ([`f29ff83`](https://github.com/kjuulh/dagger-rs/commit/f29ff836cfd72d5e051ca6a71a230ba1e9933091))
|
|
||||||
- with _opts methods ([`9762da8`](https://github.com/kjuulh/dagger-rs/commit/9762da895a164e30c5dc60e89a83e934ceae47ab))
|
|
||||||
- without phantom data ([`02006d4`](https://github.com/kjuulh/dagger-rs/commit/02006d40fc2c0383e0412c15c36db9af7eda991f))
|
|
||||||
- move to &str instead of String and introduce builder. ([`94336d0`](https://github.com/kjuulh/dagger-rs/commit/94336d06378f035464e233b921dc3858070f582d))
|
|
||||||
- dependencies ([`6e2292c`](https://github.com/kjuulh/dagger-rs/commit/6e2292cf11942fbd26a52fe4e0fc8471e6eb70a3))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.4 (2023-02-19)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-7d04ab1240e497e7804fed23a378d28c78f50a0a/> readme dagger-rs -> dagger-sdk
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 2 commits 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**
|
|
||||||
- Release dagger-sdk v0.2.4 ([`cc81124`](https://github.com/kjuulh/dagger-rs/commit/cc81124f899f44f80c1ee7d1e23a7e02d8cc4b7c))
|
|
||||||
- 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)
|
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-6e5f4074329ab0462445b31d4153f8497c483438/> update to dagger v0.3.12
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-10bc6f3846b65cc82c2fb343d8cfe921784bef1b/> fixed fmt errors
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 4 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**
|
|
||||||
- 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))
|
|
||||||
- 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))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.1 (2023-02-18)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-789b0e69c8c53d0e86d9cec89ab5345507aad514/> update all dependencies
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 40 commits contributed to the release over the course of 20 calendar days.
|
|
||||||
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
|
|
||||||
- 2 unique issues were worked on: [#5](https://github.com/kjuulh/dagger-rs/issues/5), [#6](https://github.com/kjuulh/dagger-rs/issues/6)
|
|
||||||
|
|
||||||
### Commit Details
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
<details><summary>view details</summary>
|
|
||||||
|
|
||||||
* **[#5](https://github.com/kjuulh/dagger-rs/issues/5)**
|
|
||||||
- update all dependencies ([`789b0e6`](https://github.com/kjuulh/dagger-rs/commit/789b0e69c8c53d0e86d9cec89ab5345507aad514))
|
|
||||||
* **[#6](https://github.com/kjuulh/dagger-rs/issues/6)**
|
|
||||||
- feature/add impl ([`4a4c03f`](https://github.com/kjuulh/dagger-rs/commit/4a4c03f3c2ee7f6268c65976715e70767b4ea78d))
|
|
||||||
* **Uncategorized**
|
|
||||||
- Release dagger-sdk v0.2.1 ([`aa0c397`](https://github.com/kjuulh/dagger-rs/commit/aa0c397b15566840eb59ca6186c083f631cc460b))
|
|
||||||
- add dagger-sdk changelog ([`11a5247`](https://github.com/kjuulh/dagger-rs/commit/11a5247933736bc6a4c5300c29599c88597fefb7))
|
|
||||||
- Release dagger-rs v0.2.7, dagger-sdk v0.2.1 ([`20c7118`](https://github.com/kjuulh/dagger-rs/commit/20c71189f6d5d978286ee16f8e958c6045756d80))
|
|
||||||
- Adjusting changelogs prior to release of dagger-core v0.2.1, dagger-codegen v0.2.1, dagger-rs v0.2.1 ([`f4a20fd`](https://github.com/kjuulh/dagger-rs/commit/f4a20fda79063b29829cc899793775ba8cb17214))
|
|
||||||
- with actual versions ([`7153c24`](https://github.com/kjuulh/dagger-rs/commit/7153c24f0105a05f170efd10ef2535d83ce0c87e))
|
|
||||||
- with publish ([`989d5bc`](https://github.com/kjuulh/dagger-rs/commit/989d5bc26036d46a199d939b5cbbe72aff2f8fb1))
|
|
||||||
- with repo ([`e5383b5`](https://github.com/kjuulh/dagger-rs/commit/e5383b51f3b290a87b729929c377e93bda3873e0))
|
|
||||||
- with wildcard version ([`533b9df`](https://github.com/kjuulh/dagger-rs/commit/533b9dfef0165c514127a8437d08daf52adf5739))
|
|
||||||
- cargo version 0.2.0 ([`bec62de`](https://github.com/kjuulh/dagger-rs/commit/bec62de62ff5638428174e232a36eee3ddd0f5ef))
|
|
||||||
- bump version ([`36b0ecd`](https://github.com/kjuulh/dagger-rs/commit/36b0ecdabf4c220cffb2d0660fb6480387e3249a))
|
|
||||||
- document usage ([`578c2a6`](https://github.com/kjuulh/dagger-rs/commit/578c2a68830eb40da888823a8770af4a764ed4c7))
|
|
||||||
- fix all clippy ([`6be8482`](https://github.com/kjuulh/dagger-rs/commit/6be8482b461e098384bbf1371ed7d67b259197fa))
|
|
||||||
- add with dockerfile ([`0cbd179`](https://github.com/kjuulh/dagger-rs/commit/0cbd1790b0b4030c68f0a0dd619325da26f14f60))
|
|
||||||
- with caching ([`728840c`](https://github.com/kjuulh/dagger-rs/commit/728840ca8e48b8bec66da4e5fa677bfa60d1d147))
|
|
||||||
- add more quickstart ([`59e2572`](https://github.com/kjuulh/dagger-rs/commit/59e2572173872c8091a0613a387a01e0cccc51bf))
|
|
||||||
- build the application ([`d894def`](https://github.com/kjuulh/dagger-rs/commit/d894def70c85ff2fc567bf614e3be6f4134965e2))
|
|
||||||
- add test-the-application ([`cb9a4dd`](https://github.com/kjuulh/dagger-rs/commit/cb9a4dd84fc13ef03ca3ad539646e95c3c047676))
|
|
||||||
- with println ([`d1726a0`](https://github.com/kjuulh/dagger-rs/commit/d1726a052a6dc4e57f364864446cab3cbda7e0bf))
|
|
||||||
- unpack response ([`3b5b59b`](https://github.com/kjuulh/dagger-rs/commit/3b5b59ba1c20cc68218dc5c0af18ff7a78f6953d))
|
|
||||||
- tested full flow initially ([`7a008be`](https://github.com/kjuulh/dagger-rs/commit/7a008be59e5ca183809e5840cdfae1d87665aa20))
|
|
||||||
- move code to dagger-core ([`ec0d0b2`](https://github.com/kjuulh/dagger-rs/commit/ec0d0b22e646c97acb3ce93f3afb3ddb8590e68f))
|
|
||||||
- with selection impl default ([`9f0021b`](https://github.com/kjuulh/dagger-rs/commit/9f0021b7086046c80b3f455f205149e03eb72da2))
|
|
||||||
- fix warnings ([`2b49f9c`](https://github.com/kjuulh/dagger-rs/commit/2b49f9c19098d96df2bb735253710774b0831c94))
|
|
||||||
- fix test ([`03366b7`](https://github.com/kjuulh/dagger-rs/commit/03366b7c5b3cce5ec42b5c7655843170236c56a1))
|
|
||||||
- test marshaller ([`c5dfceb`](https://github.com/kjuulh/dagger-rs/commit/c5dfcebaad9c255b10ba8c6e4d4dba00821c8941))
|
|
||||||
- test marshaller ([`c4ec6f0`](https://github.com/kjuulh/dagger-rs/commit/c4ec6f0c976ce0af2e05e818731b5e2bed7f0522))
|
|
||||||
- implement sort by name and type ([`d9b51c1`](https://github.com/kjuulh/dagger-rs/commit/d9b51c1ac90c00fb3af24332b6140e1201bc9be7))
|
|
||||||
- fix optional types for real ([`26069a8`](https://github.com/kjuulh/dagger-rs/commit/26069a82a69ec7265216c8ddaceb37228dd0fb81))
|
|
||||||
- fix description ([`f4581ba`](https://github.com/kjuulh/dagger-rs/commit/f4581ba4cd1693a906eaf6c58054398ceae3bfac))
|
|
||||||
- with proper optional types ([`f4a812a`](https://github.com/kjuulh/dagger-rs/commit/f4a812a7d24e9e09cb4e3cbde56ee0b3ac774b62))
|
|
||||||
- set proper option type ([`8549cfc`](https://github.com/kjuulh/dagger-rs/commit/8549cfc3a7d9f831febaeadc22db36604e465ea8))
|
|
||||||
- add fields ([`496a687`](https://github.com/kjuulh/dagger-rs/commit/496a687bc34f7c58cc86df60c183be741b0b8a9c))
|
|
||||||
- add input_fields ([`d2cddff`](https://github.com/kjuulh/dagger-rs/commit/d2cddff365c636feceb3f20a73df812fcab11a19))
|
|
||||||
- with objects ([`5fef514`](https://github.com/kjuulh/dagger-rs/commit/5fef5148010f384d0158361d64b8e17d357d4819))
|
|
||||||
- with enum ([`2a1f7c3`](https://github.com/kjuulh/dagger-rs/commit/2a1f7c3f2666f1f4caebf7c22707709741c2cfad))
|
|
||||||
- with codegen output ([`0bf6b0e`](https://github.com/kjuulh/dagger-rs/commit/0bf6b0e91ecc31c1f6b51338234137eb185810a0))
|
|
||||||
- split out codegen parts ([`3263f1d`](https://github.com/kjuulh/dagger-rs/commit/3263f1d589aee78065401c666533cb0cbadd06ce))
|
|
||||||
- add dagger-sdk ([`9dccb83`](https://github.com/kjuulh/dagger-rs/commit/9dccb83d94a720dd58deffe9f3e5aaea784336f3))
|
|
||||||
</details>
|
|
||||||
|
|
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "dagger-sdk"
|
name = "dagger-sdk"
|
||||||
version = "0.2.5"
|
version = "0.2.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
license-file = "LICENSE.MIT"
|
license-file = "LICENSE.MIT"
|
||||||
@@ -11,18 +11,17 @@ publish = true
|
|||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
dagger-core = { path = "../dagger-core", version = "^0.2.2" }
|
|
||||||
|
|
||||||
base64 = "0.21.0"
|
base64 = "0.21.0"
|
||||||
|
dagger-core = { path = "../dagger-core", version = "^0.2.1" }
|
||||||
eyre = "0.6.8"
|
eyre = "0.6.8"
|
||||||
futures = "0.3.26"
|
futures = "0.3.26"
|
||||||
|
|
||||||
|
genco = "0.17.3"
|
||||||
gql_client = "1.0.7"
|
gql_client = "1.0.7"
|
||||||
|
pretty_assertions = "1.3.0"
|
||||||
serde = { version = "1.0.152", features = ["derive"] }
|
serde = { version = "1.0.152", features = ["derive"] }
|
||||||
serde_json = "1.0.93"
|
serde_json = "1.0.93"
|
||||||
tokio = { version = "1.25.0", features = ["full"] }
|
tokio = { version = "1.25.0", features = ["full"] }
|
||||||
derive_builder = "0.12.0"
|
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
pretty_assertions = "1.3.0"
|
|
||||||
rand = "0.8.5"
|
rand = "0.8.5"
|
||||||
genco = "0.17.3"
|
|
||||||
|
@@ -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());
|
||||||
|
|
||||||
|
@@ -1,34 +1,42 @@
|
|||||||
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_opts(
|
let host_source_dir = client.host().directory(
|
||||||
"examples/build-the-application/app",
|
"examples/build-the-application/app".into(),
|
||||||
HostDirectoryOpts {
|
Some(HostDirectoryOpts {
|
||||||
exclude: Some(vec!["node_modules".into(), "ci/".into()]),
|
exclude: Some(vec!["node_modules".into(), "ci/".into()]),
|
||||||
include: None,
|
include: None,
|
||||||
},
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
let source = client
|
let source = client
|
||||||
.container()
|
.container(None)
|
||||||
.from("node:16")
|
.from("node:16".into())
|
||||||
.with_mounted_directory("/src", host_source_dir.id()?);
|
.with_mounted_directory("/src".into(), host_source_dir.id());
|
||||||
|
|
||||||
let runner = source
|
let runner = source
|
||||||
.with_workdir("/src")
|
.with_workdir("/src".into())
|
||||||
.with_exec(vec!["npm", "install"]);
|
.with_exec(vec!["npm".into(), "install".into()], None);
|
||||||
|
|
||||||
let test = runner.with_exec(vec!["npm", "test", "--", "--watchAll=false"]);
|
let test = runner.with_exec(
|
||||||
|
vec![
|
||||||
|
"npm".into(),
|
||||||
|
"test".into(),
|
||||||
|
"--".into(),
|
||||||
|
"--watchAll=false".into(),
|
||||||
|
],
|
||||||
|
None,
|
||||||
|
);
|
||||||
|
|
||||||
let build_dir = test
|
let build_dir = test
|
||||||
.with_exec(vec!["npm", "run", "build"])
|
.with_exec(vec!["npm".into(), "run".into(), "build".into()], None)
|
||||||
.directory("./build");
|
.directory("./build".into());
|
||||||
|
|
||||||
let _ = build_dir.export("./build");
|
let _ = build_dir.export("./build".into());
|
||||||
|
|
||||||
let entries = build_dir.entries();
|
let entries = build_dir.entries(None);
|
||||||
|
|
||||||
println!("build dir contents: \n {:?}", entries);
|
println!("build dir contents: \n {:?}", entries);
|
||||||
|
|
||||||
|
@@ -1,40 +1,53 @@
|
|||||||
|
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_opts(
|
let host_source_dir = client.host().directory(
|
||||||
"./examples/caching/app",
|
"./examples/caching/app".into(),
|
||||||
dagger_sdk::HostDirectoryOptsBuilder::default()
|
Some(HostDirectoryOpts {
|
||||||
.exclude(vec!["node_modules", "ci/"])
|
exclude: Some(vec!["node_modules".into(), "ci/".into()]),
|
||||||
.build()?,
|
include: None,
|
||||||
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
let node_cache = client.cache_volume("node").id()?;
|
let node_cache = client.cache_volume("node".into()).id();
|
||||||
|
|
||||||
let source = client
|
let source = client
|
||||||
.container()
|
.container(None)
|
||||||
.from("node:16")
|
.from("node:16".into())
|
||||||
.with_mounted_directory("/src", host_source_dir.id()?)
|
.with_mounted_directory("/src".into(), host_source_dir.id())
|
||||||
.with_mounted_cache("/src/node_modules", node_cache);
|
.with_mounted_cache("/src/node_modules".into(), node_cache, None);
|
||||||
|
|
||||||
let runner = source
|
let runner = source
|
||||||
.with_workdir("/src")
|
.with_workdir("/src".into())
|
||||||
.with_exec(vec!["npm", "install"]);
|
.with_exec(vec!["npm".into(), "install".into()], None);
|
||||||
|
|
||||||
let test = runner.with_exec(vec!["npm", "test", "--", "--watchAll=false"]);
|
let test = runner.with_exec(
|
||||||
|
vec![
|
||||||
|
"npm".into(),
|
||||||
|
"test".into(),
|
||||||
|
"--".into(),
|
||||||
|
"--watchAll=false".into(),
|
||||||
|
],
|
||||||
|
None,
|
||||||
|
);
|
||||||
|
|
||||||
let build_dir = test
|
let build_dir = test
|
||||||
.with_exec(vec!["npm", "run", "build"])
|
.with_exec(vec!["npm".into(), "run".into(), "build".into()], None)
|
||||||
.directory("./build");
|
.directory("./build".into());
|
||||||
|
|
||||||
let mut rng = rand::thread_rng();
|
let mut rng = rand::thread_rng();
|
||||||
|
|
||||||
let ref_ = client
|
let ref_ = client
|
||||||
.container()
|
.container(None)
|
||||||
.from("nginx")
|
.from("nginx".into())
|
||||||
.with_directory("/usr/share/nginx/html", build_dir.id()?)
|
.with_directory("/usr/share/nginx/html".into(), build_dir.id(), None)
|
||||||
.publish(format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()))?;
|
.publish(
|
||||||
|
format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()),
|
||||||
|
None,
|
||||||
|
);
|
||||||
|
|
||||||
println!("published image to: {}", ref_);
|
println!("published image to: {}", ref_);
|
||||||
|
|
||||||
|
@@ -1,18 +1,22 @@
|
|||||||
|
|
||||||
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()
|
||||||
.directory("./examples/existing-dockerfile/app");
|
.directory("./examples/existing-dockerfile/app".into(), None);
|
||||||
|
|
||||||
let ref_ = client
|
let ref_ = client
|
||||||
.container()
|
.container(None)
|
||||||
.build(context_dir.id()?)
|
.build(context_dir.id(), None)
|
||||||
.publish(format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()))?;
|
.publish(
|
||||||
|
format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()),
|
||||||
|
None,
|
||||||
|
);
|
||||||
|
|
||||||
println!("published image to: {}", ref_);
|
println!("published image to: {}", ref_);
|
||||||
|
|
||||||
|
@@ -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()
|
.container(None)
|
||||||
.from("golang:1.19")
|
.from("golang:1.19".into())
|
||||||
.with_exec(vec!["go", "version".into()])
|
.with_exec(vec!["go".into(), "version".into()], None)
|
||||||
.stdout()?;
|
.stdout();
|
||||||
|
|
||||||
println!("Hello from Dagger and {}", version.trim());
|
println!("Hello from Dagger and {}", version.trim());
|
||||||
|
|
||||||
|
@@ -1,39 +1,50 @@
|
|||||||
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_opts(
|
let host_source_dir = client.host().directory(
|
||||||
"examples/publish-the-application/app",
|
"examples/publish-the-application/app".into(),
|
||||||
HostDirectoryOpts {
|
Some(HostDirectoryOpts {
|
||||||
exclude: Some(vec!["node_modules", "ci/"]),
|
exclude: Some(vec!["node_modules".into(), "ci/".into()]),
|
||||||
include: None,
|
include: None,
|
||||||
},
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
let source = client
|
let source = client
|
||||||
.container()
|
.container(None)
|
||||||
.from("node:16")
|
.from("node:16".into())
|
||||||
.with_mounted_directory("/src", host_source_dir.id()?);
|
.with_mounted_directory("/src".into(), host_source_dir.id());
|
||||||
|
|
||||||
let runner = source
|
let runner = source
|
||||||
.with_workdir("/src")
|
.with_workdir("/src".into())
|
||||||
.with_exec(vec!["npm", "install"]);
|
.with_exec(vec!["npm".into(), "install".into()], None);
|
||||||
|
|
||||||
let test = runner.with_exec(vec!["npm", "test", "--", "--watchAll=false"]);
|
let test = runner.with_exec(
|
||||||
|
vec![
|
||||||
|
"npm".into(),
|
||||||
|
"test".into(),
|
||||||
|
"--".into(),
|
||||||
|
"--watchAll=false".into(),
|
||||||
|
],
|
||||||
|
None,
|
||||||
|
);
|
||||||
|
|
||||||
let build_dir = test
|
let build_dir = test
|
||||||
.with_exec(vec!["npm", "run", "build"])
|
.with_exec(vec!["npm".into(), "run".into(), "build".into()], None)
|
||||||
.directory("./build");
|
.directory("./build".into());
|
||||||
|
|
||||||
let mut rng = rand::thread_rng();
|
let mut rng = rand::thread_rng();
|
||||||
|
|
||||||
let ref_ = client
|
let ref_ = client
|
||||||
.container()
|
.container(None)
|
||||||
.from("nginx")
|
.from("nginx".into())
|
||||||
.with_directory("/usr/share/nginx/html", build_dir.id()?)
|
.with_directory("/usr/share/nginx/html".into(), build_dir.id(), None)
|
||||||
.publish(format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()))?;
|
.publish(
|
||||||
|
format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()),
|
||||||
|
None,
|
||||||
|
);
|
||||||
|
|
||||||
println!("published image to: {}", ref_);
|
println!("published image to: {}", ref_);
|
||||||
|
|
||||||
|
@@ -1,44 +1,56 @@
|
|||||||
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_opts(
|
let host_source_dir = client.host().directory(
|
||||||
"examples/publish-the-application/app",
|
"examples/publish-the-application/app".into(),
|
||||||
HostDirectoryOpts {
|
Some(HostDirectoryOpts {
|
||||||
exclude: Some(vec!["node_modules", "ci/"]),
|
exclude: Some(vec!["node_modules".into(), "ci/".into()]),
|
||||||
include: None,
|
include: None,
|
||||||
},
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
let source = client
|
let source = client
|
||||||
.container()
|
.container(None)
|
||||||
.from("node:16")
|
.from("node:16".into())
|
||||||
.with_mounted_directory("/src", host_source_dir.id()?);
|
.with_mounted_directory("/src".into(), host_source_dir.id());
|
||||||
|
|
||||||
let runner = source
|
let runner = source
|
||||||
.with_workdir("/src")
|
.with_workdir("/src".into())
|
||||||
.with_exec(vec!["npm", "install"]);
|
.with_exec(vec!["npm".into(), "install".into()], None);
|
||||||
|
|
||||||
let test = runner.with_exec(vec!["npm", "test", "--", "--watchAll=false"]);
|
let test = runner.with_exec(
|
||||||
|
vec![
|
||||||
|
"npm".into(),
|
||||||
|
"test".into(),
|
||||||
|
"--".into(),
|
||||||
|
"--watchAll=false".into(),
|
||||||
|
],
|
||||||
|
None,
|
||||||
|
);
|
||||||
|
|
||||||
let _ = test
|
let _ = test
|
||||||
.with_exec(vec!["npm", "run", "build"])
|
.with_exec(vec!["npm".into(), "run".into(), "build".into()], None)
|
||||||
.directory("./build")
|
.directory("./build".into())
|
||||||
.export(output);
|
.export(output.into());
|
||||||
|
|
||||||
let mut rng = rand::thread_rng();
|
let mut rng = rand::thread_rng();
|
||||||
|
|
||||||
let ref_ = client
|
let ref_ = client
|
||||||
.container()
|
.container(None)
|
||||||
.from("nginx")
|
.from("nginx".into())
|
||||||
.with_directory(
|
.with_directory(
|
||||||
"/usr/share/nginx/html",
|
"/usr/share/nginx/html".into(),
|
||||||
client.host().directory(output).id()?,
|
client.host().directory(output.into(), None).id(),
|
||||||
|
None,
|
||||||
)
|
)
|
||||||
.publish(format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()))?;
|
.publish(
|
||||||
|
format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()),
|
||||||
|
None,
|
||||||
|
);
|
||||||
|
|
||||||
println!("published image to: {}", ref_);
|
println!("published image to: {}", ref_);
|
||||||
|
|
||||||
|
@@ -1,28 +1,36 @@
|
|||||||
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_opts(
|
let host_source_dir = client.host().directory(
|
||||||
"examples/test-the-application/app",
|
"examples/test-the-application/app".into(),
|
||||||
HostDirectoryOpts {
|
Some(HostDirectoryOpts {
|
||||||
exclude: Some(vec!["node_modules", "ci/"]),
|
exclude: Some(vec!["node_modules".into(), "ci/".into()]),
|
||||||
include: None,
|
include: None,
|
||||||
},
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
let source = client
|
let source = client
|
||||||
.container()
|
.container(None)
|
||||||
.from("node:16")
|
.from("node:16".into())
|
||||||
.with_mounted_directory("/src", host_source_dir.id()?);
|
.with_mounted_directory("/src".into(), host_source_dir.id());
|
||||||
|
|
||||||
let runner = source
|
let runner = source
|
||||||
.with_workdir("/src")
|
.with_workdir("/src".into())
|
||||||
.with_exec(vec!["npm", "install"]);
|
.with_exec(vec!["npm".into(), "install".into()], None);
|
||||||
|
|
||||||
let out = runner
|
let out = runner
|
||||||
.with_exec(vec!["npm", "test", "--", "--watchAll=false"])
|
.with_exec(
|
||||||
.stderr()?;
|
vec![
|
||||||
|
"npm".into(),
|
||||||
|
"test".into(),
|
||||||
|
"--".into(),
|
||||||
|
"--watchAll=false".into(),
|
||||||
|
],
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.stderr();
|
||||||
|
|
||||||
println!("{}", out);
|
println!("{}", out);
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -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!(
|
||||||
|
@@ -1,20 +1,21 @@
|
|||||||
use dagger_sdk::{connect, ContainerExecOptsBuilder};
|
use dagger_sdk::client::connect;
|
||||||
|
use dagger_sdk::gen::ContainerExecOpts;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_example_container() {
|
fn test_example_container() {
|
||||||
let client = connect().unwrap();
|
let client = connect().unwrap();
|
||||||
|
|
||||||
let alpine = client.container().from("alpine:3.16.2");
|
let alpine = client.container(None).from("alpine:3.16.2".into());
|
||||||
|
|
||||||
let out = alpine
|
let out = alpine
|
||||||
.exec_opts(
|
.exec(Some(ContainerExecOpts {
|
||||||
ContainerExecOptsBuilder::default()
|
args: Some(vec!["cat".into(), "/etc/alpine-release".into()]),
|
||||||
.args(vec!["cat", "/etc/alpine-release"])
|
stdin: None,
|
||||||
.build()
|
redirect_stdout: None,
|
||||||
.unwrap(),
|
redirect_stderr: None,
|
||||||
)
|
experimental_privileged_nesting: None,
|
||||||
.stdout()
|
}))
|
||||||
.unwrap();
|
.stdout();
|
||||||
|
|
||||||
assert_eq!(out, "3.16.2\n".to_string())
|
assert_eq!(out, "3.16.2\n".to_string())
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user