mirror of
https://github.com/kjuulh/dagger-rs.git
synced 2025-04-20 04:29:50 +02:00
Compare commits
No commits in common. "main" and "dagger-sdk-v0.2.11" have entirely different histories.
main
...
dagger-sdk
150
.github/workflows/ci-multiplatform.yml
vendored
150
.github/workflows/ci-multiplatform.yml
vendored
@ -1,150 +0,0 @@
|
|||||||
name: ci-multi-platform
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
schedule:
|
|
||||||
- cron: '00 01 * * *'
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
name: test
|
|
||||||
env:
|
|
||||||
# For some builds, we use cross to test on 32-bit and big-endian
|
|
||||||
# systems.
|
|
||||||
CARGO: cargo
|
|
||||||
# When CARGO is set to CROSS, this is set to `--target matrix.target`.
|
|
||||||
TARGET_FLAGS: ""
|
|
||||||
# When CARGO is set to CROSS, TARGET_DIR includes matrix.target.
|
|
||||||
TARGET_DIR: ./target
|
|
||||||
# Emit backtraces on panics.
|
|
||||||
RUST_BACKTRACE: 1
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
build:
|
|
||||||
- pinned
|
|
||||||
- stable
|
|
||||||
- beta
|
|
||||||
- nightly
|
|
||||||
- nightly-musl
|
|
||||||
#- nightly-32
|
|
||||||
#- nightly-mips
|
|
||||||
#- nightly-arm
|
|
||||||
#- macos
|
|
||||||
# - win-msvc
|
|
||||||
#- win-gnu
|
|
||||||
include:
|
|
||||||
- build: pinned
|
|
||||||
os: ubuntu-22.04
|
|
||||||
rust: 1.65.0
|
|
||||||
- build: stable
|
|
||||||
os: ubuntu-22.04
|
|
||||||
rust: stable
|
|
||||||
- build: beta
|
|
||||||
os: ubuntu-22.04
|
|
||||||
rust: beta
|
|
||||||
- build: nightly
|
|
||||||
os: ubuntu-22.04
|
|
||||||
rust: nightly
|
|
||||||
- build: nightly-musl
|
|
||||||
os: ubuntu-22.04
|
|
||||||
rust: nightly
|
|
||||||
target: x86_64-unknown-linux-musl
|
|
||||||
#- build: nightly-32
|
|
||||||
# os: ubuntu-22.04
|
|
||||||
# rust: nightly
|
|
||||||
# target: i686-unknown-linux-gnu
|
|
||||||
#- build: nightly-mips
|
|
||||||
# os: ubuntu-22.04
|
|
||||||
# rust: nightly
|
|
||||||
# target: mips64-unknown-linux-gnuabi64
|
|
||||||
#- build: nightly-arm
|
|
||||||
# os: ubuntu-22.04
|
|
||||||
# rust: nightly
|
|
||||||
# target: arm-unknown-linux-gnueabihf
|
|
||||||
#- build: macos
|
|
||||||
# os: macos-12
|
|
||||||
# rust: nightly
|
|
||||||
#- build: win-msvc
|
|
||||||
# os: windows-2022
|
|
||||||
# rust: nightly
|
|
||||||
#- build: win-gnu
|
|
||||||
# os: windows-2022
|
|
||||||
# rust: nightly-x86_64-gnu
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
#- name: Install packages (Ubuntu)
|
|
||||||
# if: matrix.os == 'ubuntu-22.04'
|
|
||||||
# run: |
|
|
||||||
# ci/ubuntu-install-packages
|
|
||||||
- name: Install packages (macOS)
|
|
||||||
if: matrix.os == 'macos-12'
|
|
||||||
run: |
|
|
||||||
ci/scripts/macos-install-packages
|
|
||||||
- name: Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v2
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v2.0.0
|
|
||||||
- name: Install Rust
|
|
||||||
uses: dtolnay/rust-toolchain@master
|
|
||||||
with:
|
|
||||||
toolchain: ${{ matrix.rust }}
|
|
||||||
- name: Use Cross
|
|
||||||
if: matrix.target != ''
|
|
||||||
run: |
|
|
||||||
cargo install cross
|
|
||||||
echo "CARGO=cross" >> $GITHUB_ENV
|
|
||||||
echo "TARGET_FLAGS=--target ${{ matrix.target }}" >> $GITHUB_ENV
|
|
||||||
echo "TARGET_DIR=./target/${{ matrix.target }}" >> $GITHUB_ENV
|
|
||||||
- name: Show command used for Cargo
|
|
||||||
run: |
|
|
||||||
echo "cargo command is: ${{ env.CARGO }}"
|
|
||||||
echo "target flag is: ${{ env.TARGET_FLAGS }}"
|
|
||||||
- name: Build
|
|
||||||
run: ${{ env.CARGO }} build --verbose --workspace ${{ env.TARGET_FLAGS }}
|
|
||||||
- name: Run tests (without cross)
|
|
||||||
if: matrix.target == ''
|
|
||||||
run: ${{ env.CARGO }} test --verbose --workspace ${{ env.TARGET_FLAGS }}
|
|
||||||
#- name: Run tests (with cross)
|
|
||||||
# if: matrix.target != ''
|
|
||||||
# run: ${{ env.CARGO }} test --verbose --workspace ${{ env.TARGET_FLAGS }}
|
|
||||||
test_multi_platform:
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os:
|
|
||||||
- macos-latest
|
|
||||||
- ubuntu-latest
|
|
||||||
#- windows-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Install packages (macOS)
|
|
||||||
if: matrix.os == 'macos-latest'
|
|
||||||
run: |
|
|
||||||
ci/scripts/macos-install-packages
|
|
||||||
- name: Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v2
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v2.0.0
|
|
||||||
- name: Install Rust
|
|
||||||
uses: dtolnay/rust-toolchain@master
|
|
||||||
with:
|
|
||||||
toolchain: nightly
|
|
||||||
- name: Run unit tests
|
|
||||||
run: cargo test --locked --all-targets --workspace --all-features
|
|
||||||
timeout-minutes: 10
|
|
||||||
rustfmt:
|
|
||||||
name: rustfmt
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Install Rust
|
|
||||||
uses: dtolnay/rust-toolchain@master
|
|
||||||
with:
|
|
||||||
toolchain: stable
|
|
||||||
components: rustfmt
|
|
||||||
- name: Check formatting
|
|
||||||
run: cargo fmt --all --check
|
|
8
.github/workflows/ci.yaml
vendored
8
.github/workflows/ci.yaml
vendored
@ -8,6 +8,7 @@ env:
|
|||||||
CARGO_TERM_COLOR: always
|
CARGO_TERM_COLOR: always
|
||||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
_EXPERIMENTAL_DAGGER_CACHE_CONFIG: type=gha;mode=max
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@ -27,10 +28,5 @@ jobs:
|
|||||||
uses: docker/setup-qemu-action@v2
|
uses: docker/setup-qemu-action@v2
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v2.0.0
|
uses: docker/setup-buildx-action@v2.0.0
|
||||||
-
|
|
||||||
name: Expose GitHub Runtime
|
|
||||||
uses: crazy-max/ghaction-github-runtime@v2
|
|
||||||
- name: Run dagger [CI]
|
- name: Run dagger [CI]
|
||||||
run: |
|
run: cargo run -p ci -- pr
|
||||||
export _EXPERIMENTAL_DAGGER_CACHE_CONFIG="type=gha,mode=max,url=$ACTIONS_CACHE_URL,token=$ACTIONS_RUNTIME_TOKEN"
|
|
||||||
cargo run -p ci -- pr
|
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
# Architecture
|
|
||||||
|
|
||||||
- `crates/dagger-bootstrap` Root project mainly used for generating the CLI,
|
|
||||||
which in turn is used to bootstrap the code generation from `dagger`
|
|
||||||
- `crates/dagger-core` Contains all base types used during actual usage. This is
|
|
||||||
where the primary logic lives in which the user interacts (\*disclaimer: most
|
|
||||||
stuff haven't moved in here yet.)
|
|
||||||
- `crates/dagger-sdk` Contains the actual sdk in which the user interacts,
|
|
||||||
`dagger-core` is reexported through this API as well.
|
|
||||||
- `crates/dagger-codegen` This is the bulk of the work, it takes the input
|
|
||||||
graphql and spits out the API in which the user interacts, this is heavily
|
|
||||||
inspired by other `dagger-sdk's`. It primarily turns graphql into rust code.
|
|
@ -1,11 +0,0 @@
|
|||||||
# Contributing
|
|
||||||
|
|
||||||
The sdk is still quite young, so feel free to either:
|
|
||||||
|
|
||||||
- Refactor
|
|
||||||
- Document
|
|
||||||
- Improve the code
|
|
||||||
|
|
||||||
Feel free to ping me on discord @Hermansen#4325, or just create an issue if
|
|
||||||
there is a missing feature, or you'd like some mentorship in getting into the
|
|
||||||
code
|
|
1000
Cargo.lock
generated
1000
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
40
Cargo.toml
40
Cargo.toml
@ -1,26 +1,42 @@
|
|||||||
|
[package]
|
||||||
|
name = "dagger-rs"
|
||||||
|
version = "0.2.10"
|
||||||
|
edition = "2021"
|
||||||
|
readme = "README.md"
|
||||||
|
license-file = "LICENSE.MIT"
|
||||||
|
description = "A dagger sdk for rust, written in rust"
|
||||||
|
repository = "https://github.com/kjuulh/dagger-rs"
|
||||||
|
publish = true
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
members = [
|
members = [
|
||||||
"crates/dagger-codegen",
|
"crates/dagger-codegen",
|
||||||
"crates/dagger-sdk",
|
"crates/dagger-sdk",
|
||||||
"crates/dagger-core",
|
"crates/dagger-core",
|
||||||
"crates/dagger-bootstrap",
|
|
||||||
"ci",
|
"ci",
|
||||||
]
|
]
|
||||||
|
|
||||||
[workspace.dependencies]
|
[dependencies]
|
||||||
dagger-codegen = { path = "crates/dagger-codegen", version = "^0.2.5" }
|
dagger-codegen = { path = "crates/dagger-codegen", version = "^0.2.5" }
|
||||||
dagger-core = { path = "crates/dagger-core", version = "^0.2.10" }
|
dagger-core = { path = "crates/dagger-core", version = "^0.2.3" }
|
||||||
dagger-bootstrap = { path = "crates/dagger-bootstrap", version = "^0.2.10" }
|
|
||||||
dagger-sdk = { path = "crates/dagger-sdk", version = "^0.2.19" }
|
|
||||||
|
|
||||||
|
clap = "4.1.6"
|
||||||
|
dirs = "4.0.0"
|
||||||
eyre = "0.6.8"
|
eyre = "0.6.8"
|
||||||
color-eyre = "0.6.2"
|
flate2 = { version = "1.0.25", features = ["zlib"] }
|
||||||
|
genco = "0.17.3"
|
||||||
|
graphql-introspection-query = "0.2.0"
|
||||||
|
graphql_client = { version = "0.12.0", features = ["reqwest"] }
|
||||||
|
hex = "0.4.3"
|
||||||
|
hex-literal = "0.3.4"
|
||||||
|
platform-info = "1.0.2"
|
||||||
|
reqwest = { version = "0.11.14", features = ["stream", "deflate"] }
|
||||||
serde = { version = "1.0.152", features = ["derive"] }
|
serde = { version = "1.0.152", features = ["derive"] }
|
||||||
serde_json = "1.0.93"
|
serde_json = "1.0.93"
|
||||||
|
sha2 = "0.10.6"
|
||||||
|
tar = "0.4.38"
|
||||||
|
tempfile = "3.3.0"
|
||||||
|
color-eyre = "0.6.2"
|
||||||
tokio = { version = "1.25.0", features = ["full"] }
|
tokio = { version = "1.25.0", features = ["full"] }
|
||||||
tracing = { version = "0.1.37", features = ["log"] }
|
|
||||||
tracing-subscriber = { version = "0.3.16", features = [
|
|
||||||
"tracing-log",
|
|
||||||
"tracing",
|
|
||||||
] }
|
|
||||||
thiserror = "1.0.40"
|
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
[target.x86_64-unknown-linux-musl]
|
|
||||||
image = "messense/rust-musl-cross:x86_64-musl"
|
|
@ -1,60 +0,0 @@
|
|||||||
[tasks.codegen]
|
|
||||||
command = "cargo"
|
|
||||||
args = ["run", "-p", "ci", "--", "codegen"]
|
|
||||||
workspace = false
|
|
||||||
|
|
||||||
[tasks.local_codegen]
|
|
||||||
command = "cargo"
|
|
||||||
args = [
|
|
||||||
"run",
|
|
||||||
"-p",
|
|
||||||
"dagger-bootstrap",
|
|
||||||
"--",
|
|
||||||
"generate",
|
|
||||||
"--output",
|
|
||||||
"crates/dagger-sdk/src/gen.rs",
|
|
||||||
]
|
|
||||||
workspace = false
|
|
||||||
|
|
||||||
[tasks.build]
|
|
||||||
command = "cargo"
|
|
||||||
args = ["run", "-p", "ci", "--", "ci"]
|
|
||||||
dependencies = ["codegen"]
|
|
||||||
workspace = false
|
|
||||||
|
|
||||||
[tasks.fmt]
|
|
||||||
command = "cargo"
|
|
||||||
args = ["fmt", "--all"]
|
|
||||||
workspace = false
|
|
||||||
|
|
||||||
[tasks.fix]
|
|
||||||
command = "cargo"
|
|
||||||
args = ["fix", "--workspace", "--allow-dirty"]
|
|
||||||
dependencies = ["fmt"]
|
|
||||||
workspace = false
|
|
||||||
|
|
||||||
[tasks.gen]
|
|
||||||
dependencies = ["local_codegen", "fmt", "fix"]
|
|
||||||
workspace = false
|
|
||||||
|
|
||||||
[tasks.release_crate]
|
|
||||||
command = "cargo"
|
|
||||||
args = [
|
|
||||||
"smart-release",
|
|
||||||
"--allow-fully-generated-changelogs",
|
|
||||||
"--update-crates-index",
|
|
||||||
"dagger-sdk",
|
|
||||||
]
|
|
||||||
dependencies = ["codegen", "fix"]
|
|
||||||
workspace = false
|
|
||||||
|
|
||||||
[tasks.release_crate_commit]
|
|
||||||
command = "cargo"
|
|
||||||
args = [
|
|
||||||
"smart-release",
|
|
||||||
"-e",
|
|
||||||
"--allow-fully-generated-changelogs",
|
|
||||||
"--update-crates-index",
|
|
||||||
"dagger-sdk",
|
|
||||||
]
|
|
||||||
workspace = false
|
|
41
README.md
41
README.md
@ -1,7 +1,40 @@
|
|||||||
# dagger-sdk
|
# dagger-rs
|
||||||
|
|
||||||
A dagger sdk written in rust
|
A dagger sdk written in rust for rust.
|
||||||
|
|
||||||
## Disclaimer:
|
# Usage
|
||||||
|
|
||||||
Repository has moved to: https://github.com/dagger/dagger/tree/main/sdk/rust
|
See [dagger-sdk](./crates/dagger-sdk/README.md)
|
||||||
|
|
||||||
|
### Status
|
||||||
|
|
||||||
|
- [x] dagger cli downloader
|
||||||
|
- [x] dagger network session
|
||||||
|
- [x] graphql rust codegen (User API)
|
||||||
|
- [x] Scalars
|
||||||
|
- [x] Enums
|
||||||
|
- [x] Input
|
||||||
|
- [x] Objects
|
||||||
|
- [x] Implement context and querier
|
||||||
|
- [x] Marshaller
|
||||||
|
- [x] Querier
|
||||||
|
- [x] Context
|
||||||
|
- [x] Deserializer for nested response (bind)
|
||||||
|
- [x] Add codegen to hook into querier
|
||||||
|
- [x] fix build / release cycle
|
||||||
|
- [x] general api stabilisation
|
||||||
|
- [x] document usage
|
||||||
|
- [x] make async variant
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
- `.` Root project mainly used for generating the CLI, which in turn is used to
|
||||||
|
bootstrap the code generation from `dagger`
|
||||||
|
- `crates/dagger-core` Contains all base types used during actual usage. This is
|
||||||
|
where the primary logic lives in which the user interacts (\*disclaimer: most
|
||||||
|
stuff haven't moved in here yet.)
|
||||||
|
- `crates/dagger-sdk` Contains the actual sdk in which the user interacts,
|
||||||
|
`dagger-core` is reexported through this API as well.
|
||||||
|
- `crates/dagger-codegen` This is the bulk of the work, it takes the input
|
||||||
|
graphql and spits out the API in which the user interacts, this is heavily
|
||||||
|
inspired by other `dagger-sdk's`. It primarily turns graphql into rust code.
|
||||||
|
@ -8,6 +8,6 @@ edition = "2021"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
clap = "4.1.6"
|
clap = "4.1.6"
|
||||||
color-eyre = "0.6.2"
|
color-eyre = "0.6.2"
|
||||||
dagger-sdk = { path = "../crates/dagger-sdk/", version = "^0.2.22" }
|
dagger-sdk = "0.2.10"
|
||||||
eyre = "0.6.8"
|
eyre = "0.6.8"
|
||||||
tokio = { version = "1.25.0", features = ["full"] }
|
tokio = { version = "1.25.0", features = ["full"] }
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
brew install docker
|
|
||||||
colima start
|
|
@ -1,6 +1,5 @@
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use clap::ArgMatches;
|
|
||||||
use dagger_sdk::{Container, HostDirectoryOpts, Query};
|
use dagger_sdk::{Container, HostDirectoryOpts, Query};
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
@ -11,7 +10,6 @@ async fn main() -> eyre::Result<()> {
|
|||||||
.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"))
|
||||||
.subcommand(clap::Command::new("codegen"))
|
|
||||||
.get_matches();
|
.get_matches();
|
||||||
|
|
||||||
let client = dagger_sdk::connect().await?;
|
let client = dagger_sdk::connect().await?;
|
||||||
@ -22,7 +20,6 @@ async fn main() -> eyre::Result<()> {
|
|||||||
return validate_pr(client, base).await;
|
return validate_pr(client, base).await;
|
||||||
}
|
}
|
||||||
Some(("release", subm)) => return release(client, subm).await,
|
Some(("release", subm)) => return release(client, subm).await,
|
||||||
Some(("codegen", subm)) => return run_codegen(client, subm).await,
|
|
||||||
Some(_) => {
|
Some(_) => {
|
||||||
panic!("invalid subcommand selected!")
|
panic!("invalid subcommand selected!")
|
||||||
}
|
}
|
||||||
@ -32,44 +29,6 @@ async fn main() -> eyre::Result<()> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn run_codegen(client: Arc<Query>, _subm: &ArgMatches) -> eyre::Result<()> {
|
|
||||||
let docker_cli = client
|
|
||||||
.container()
|
|
||||||
.from("docker:cli")
|
|
||||||
.file("/usr/local/bin/docker");
|
|
||||||
let socket = client.host().unix_socket("/var/run/docker.sock");
|
|
||||||
|
|
||||||
let container = get_dependencies(client).await?;
|
|
||||||
|
|
||||||
let generated_image = container
|
|
||||||
.with_exec(vec!["mkdir", "-p", "/mnt/output"])
|
|
||||||
.with_mounted_file("/usr/bin/docker", docker_cli.id().await?)
|
|
||||||
.with_unix_socket("/var/run/docker.sock", socket.id().await?)
|
|
||||||
.with_exec(vec![
|
|
||||||
"cargo",
|
|
||||||
"run",
|
|
||||||
"-p",
|
|
||||||
"dagger-bootstrap",
|
|
||||||
"--",
|
|
||||||
"generate",
|
|
||||||
"--output",
|
|
||||||
"crates/dagger-sdk/gen.rs",
|
|
||||||
])
|
|
||||||
.with_exec(vec!["cargo", "fmt", "--all"])
|
|
||||||
.with_exec(vec!["cargo", "fix", "--workspace", "--allow-dirty"])
|
|
||||||
.with_exec(vec!["cargo", "fmt", "--all"])
|
|
||||||
.with_exec(vec!["mv", "crates/dagger-sdk/gen.rs", "/mnt/output/gen.rs"]);
|
|
||||||
|
|
||||||
let _ = generated_image.exit_code().await?;
|
|
||||||
|
|
||||||
generated_image
|
|
||||||
.file("/mnt/output/gen.rs")
|
|
||||||
.export("crates/dagger-sdk/src/gen.rs")
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
async fn release(client: Arc<Query>, _subm: &clap::ArgMatches) -> Result<(), color_eyre::Report> {
|
async fn release(client: Arc<Query>, _subm: &clap::ArgMatches) -> Result<(), color_eyre::Report> {
|
||||||
let src_dir = client.host().directory_opts(
|
let src_dir = client.host().directory_opts(
|
||||||
".",
|
".",
|
||||||
@ -92,7 +51,7 @@ async fn release(client: Arc<Query>, _subm: &clap::ArgMatches) -> Result<(), col
|
|||||||
"--execute",
|
"--execute",
|
||||||
"--allow-fully-generated-changelogs",
|
"--allow-fully-generated-changelogs",
|
||||||
"--no-changelog-preview",
|
"--no-changelog-preview",
|
||||||
"dagger-sdk",
|
"dagger-rs",
|
||||||
"dagger-sdk",
|
"dagger-sdk",
|
||||||
]);
|
]);
|
||||||
let exit = container.exit_code().await?;
|
let exit = container.exit_code().await?;
|
||||||
@ -128,14 +87,14 @@ async fn get_dependencies(client: Arc<Query>) -> eyre::Result<Container> {
|
|||||||
);
|
);
|
||||||
|
|
||||||
let cache_cargo_index_dir = client.cache_volume("cargo_index");
|
let cache_cargo_index_dir = client.cache_volume("cargo_index");
|
||||||
let _cache_cargo_deps = client.cache_volume("cargo_deps");
|
let cache_cargo_deps = client.cache_volume("cargo_deps");
|
||||||
let cache_cargo_bin = client.cache_volume("cargo_bin_cache");
|
let cache_cargo_bin = client.cache_volume("cargo_bin_cache");
|
||||||
|
|
||||||
let minio_url = "https://github.com/mozilla/sccache/releases/download/v0.3.3/sccache-v0.3.3-x86_64-unknown-linux-musl.tar.gz";
|
let minio_url = "https://github.com/mozilla/sccache/releases/download/v0.3.3/sccache-v0.3.3-x86_64-unknown-linux-musl.tar.gz";
|
||||||
|
|
||||||
let base_image = client
|
let base_image = client
|
||||||
.container()
|
.container()
|
||||||
.from("rustlang/rust:nightly")
|
.from("rust:latest")
|
||||||
.with_workdir("app")
|
.with_workdir("app")
|
||||||
.with_exec(vec!["apt-get", "update"])
|
.with_exec(vec!["apt-get", "update"])
|
||||||
.with_exec(vec!["apt-get", "install", "--yes", "libpq-dev", "wget"])
|
.with_exec(vec!["apt-get", "install", "--yes", "libpq-dev", "wget"])
|
||||||
@ -151,7 +110,7 @@ async fn get_dependencies(client: Arc<Query>) -> eyre::Result<Container> {
|
|||||||
"/usr/local/bin/sccache",
|
"/usr/local/bin/sccache",
|
||||||
])
|
])
|
||||||
.with_exec(vec!["chmod", "+x", "/usr/local/bin/sccache"])
|
.with_exec(vec!["chmod", "+x", "/usr/local/bin/sccache"])
|
||||||
//.with_env_variable("RUSTC_WRAPPER", "/usr/local/bin/sccache")
|
.with_env_variable("RUSTC_WRAPPER", "/usr/local/bin/sccache")
|
||||||
.with_env_variable(
|
.with_env_variable(
|
||||||
"AWS_ACCESS_KEY_ID",
|
"AWS_ACCESS_KEY_ID",
|
||||||
std::env::var("AWS_ACCESS_KEY_ID").unwrap_or("".into()),
|
std::env::var("AWS_ACCESS_KEY_ID").unwrap_or("".into()),
|
||||||
@ -193,7 +152,8 @@ async fn get_dependencies(client: Arc<Query>) -> eyre::Result<Container> {
|
|||||||
"--recipe-path",
|
"--recipe-path",
|
||||||
"recipe.json",
|
"recipe.json",
|
||||||
])
|
])
|
||||||
.with_directory("/app/", src_dir.id().await?)
|
.with_mounted_cache("/app/", cache_cargo_deps.id().await?)
|
||||||
|
.with_mounted_directory("/app/", src_dir.id().await?)
|
||||||
.with_exec(vec!["cargo", "build", "--all", "--release"]);
|
.with_exec(vec!["cargo", "build", "--all", "--release"]);
|
||||||
|
|
||||||
return Ok(builder_start);
|
return Ok(builder_start);
|
||||||
@ -205,21 +165,8 @@ async fn select_base_image(client: Arc<Query>) -> eyre::Result<Container> {
|
|||||||
src_dir
|
src_dir
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn validate_pr(client: Arc<Query>, container: Container) -> eyre::Result<()> {
|
async fn validate_pr(_client: Arc<Query>, container: Container) -> eyre::Result<()> {
|
||||||
let exit = container.exit_code().await?;
|
//let container = container.with_exec(vec!["cargo", "test", "--all"], None);
|
||||||
if exit != 0 {
|
|
||||||
eyre::bail!("container failed with non-zero exit code");
|
|
||||||
}
|
|
||||||
let docker_cli = client
|
|
||||||
.container()
|
|
||||||
.from("docker:cli")
|
|
||||||
.file("/usr/local/bin/docker");
|
|
||||||
let socket = client.host().unix_socket("/var/run/docker.sock");
|
|
||||||
|
|
||||||
let container = container
|
|
||||||
.with_mounted_file("/usr/bin/docker", docker_cli.id().await?)
|
|
||||||
.with_unix_socket("/var/run/docker.sock", socket.id().await?)
|
|
||||||
.with_exec(vec!["cargo", "test", "--all"]);
|
|
||||||
|
|
||||||
let exit = container.exit_code().await?;
|
let exit = container.exit_code().await?;
|
||||||
if exit != 0 {
|
if exit != 0 {
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
[package]
|
|
||||||
name = "dagger-bootstrap"
|
|
||||||
version = "0.2.10"
|
|
||||||
edition = "2021"
|
|
||||||
readme = "README.md"
|
|
||||||
license-file = "LICENSE.MIT"
|
|
||||||
description = "A dagger sdk for rust, written in rust"
|
|
||||||
repository = "https://github.com/kjuulh/dagger-sdk"
|
|
||||||
publish = true
|
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
dagger-core = { workspace = true }
|
|
||||||
dagger-codegen = { workspace = true }
|
|
||||||
|
|
||||||
eyre = { workspace = true }
|
|
||||||
color-eyre = { workspace = true }
|
|
||||||
serde = { workspace = true }
|
|
||||||
serde_json = { workspace = true }
|
|
||||||
tokio = { workspace = true }
|
|
||||||
|
|
||||||
clap = "4.1.6"
|
|
@ -5,57 +5,6 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## v0.2.8 (2023-02-22)
|
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-266ad32dff4c8957c7cdd291f9ef6f8a8c1d055c/> with clone
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 1 commit contributed to the release.
|
|
||||||
- 2 days passed between releases.
|
|
||||||
- 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 clone ([`266ad32`](https://github.com/kjuulh/dagger-rs/commit/266ad32dff4c8957c7cdd291f9ef6f8a8c1d055c))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.7 (2023-02-20)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-a13a2a9ecbfdfac80ed8eb0cbb9e9db317da65de/> race condition in process
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 3 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.6, dagger-codegen v0.2.7, dagger-sdk v0.2.12 ([`7179f8b`](https://github.com/kjuulh/dagger-rs/commit/7179f8b598ef04e62925e39d3f55740253c01686))
|
|
||||||
- Release dagger-core v0.2.5, dagger-sdk v0.2.12, dagger-codegen v0.2.7 ([`1725c51`](https://github.com/kjuulh/dagger-rs/commit/1725c5188e8a81069ec4a4de569484c921a94927))
|
|
||||||
- race condition in process ([`a13a2a9`](https://github.com/kjuulh/dagger-rs/commit/a13a2a9ecbfdfac80ed8eb0cbb9e9db317da65de))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.6 (2023-02-20)
|
## v0.2.6 (2023-02-20)
|
||||||
|
|
||||||
<csr-id-803cfc4f8c4d72ab7d011be5523b3bfc6039de39/>
|
<csr-id-803cfc4f8c4d72ab7d011be5523b3bfc6039de39/>
|
||||||
@ -68,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
<csr-read-only-do-not-edit/>
|
||||||
|
|
||||||
- 3 commits contributed to the release.
|
- 2 commits contributed to the release.
|
||||||
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
|
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
|
||||||
- 0 issues like '(#ID)' were seen in commit messages
|
- 0 issues like '(#ID)' were seen in commit messages
|
||||||
|
|
||||||
@ -79,7 +28,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- Release dagger-core v0.2.4, dagger-codegen v0.2.6, dagger-sdk v0.2.11 ([`f869e57`](https://github.com/kjuulh/dagger-rs/commit/f869e574dd788cd60e5b1b5d502bec68e300694c))
|
|
||||||
- Release dagger-core v0.2.4, dagger-codegen v0.2.6, dagger-sdk v0.2.11 ([`17ec62a`](https://github.com/kjuulh/dagger-rs/commit/17ec62a5d58232ff57391523b9851fb7b07d02ab))
|
- Release dagger-core v0.2.4, dagger-codegen v0.2.6, dagger-sdk v0.2.11 ([`17ec62a`](https://github.com/kjuulh/dagger-rs/commit/17ec62a5d58232ff57391523b9851fb7b07d02ab))
|
||||||
- ran clippy ([`803cfc4`](https://github.com/kjuulh/dagger-rs/commit/803cfc4f8c4d72ab7d011be5523b3bfc6039de39))
|
- ran clippy ([`803cfc4`](https://github.com/kjuulh/dagger-rs/commit/803cfc4f8c4d72ab7d011be5523b3bfc6039de39))
|
||||||
</details>
|
</details>
|
||||||
|
@ -1,24 +1,21 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "dagger-codegen"
|
name = "dagger-codegen"
|
||||||
version = "0.2.8"
|
version = "0.2.6"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
license-file = "LICENSE.MIT"
|
license-file = "LICENSE.MIT"
|
||||||
description = "dagger sdk codegen library"
|
description = "dagger sdk codegen library"
|
||||||
repository = "https://github.com/kjuulh/dagger-sdk"
|
repository = "https://github.com/kjuulh/dagger-rs"
|
||||||
publish = true
|
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 = { workspace = true }
|
|
||||||
|
|
||||||
eyre = { workspace = true }
|
|
||||||
serde = { workspace = true }
|
|
||||||
serde_json = { workspace = true }
|
|
||||||
|
|
||||||
genco = "0.17.3"
|
|
||||||
convert_case = "0.6.0"
|
convert_case = "0.6.0"
|
||||||
itertools = "0.10.5"
|
dagger-core = { path = "../dagger-core", version = "^0.2.4" }
|
||||||
|
|
||||||
[dev-dependencies]
|
eyre = "0.6.8"
|
||||||
|
genco = "0.17.3"
|
||||||
|
itertools = "0.10.5"
|
||||||
pretty_assertions = "1.3.0"
|
pretty_assertions = "1.3.0"
|
||||||
|
serde = { version = "1.0.152", features = ["derive"] }
|
||||||
|
serde_json = "1.0.93"
|
||||||
|
@ -153,7 +153,6 @@ impl From<&TypeRef> for Scalar {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
|
||||||
pub fn get_type_from_name<'t>(types: &'t [FullType], name: &'t str) -> Option<&'t FullType> {
|
pub fn get_type_from_name<'t>(types: &'t [FullType], name: &'t str) -> Option<&'t FullType> {
|
||||||
types
|
types
|
||||||
.into_iter()
|
.into_iter()
|
||||||
@ -196,22 +195,6 @@ pub fn type_ref_is_scalar(type_ref: &TypeRef) -> bool {
|
|||||||
.unwrap_or(false)
|
.unwrap_or(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn type_ref_is_enum(type_ref: &TypeRef) -> bool {
|
|
||||||
let mut type_ref = type_ref.clone();
|
|
||||||
if type_ref
|
|
||||||
.kind
|
|
||||||
.pipe(|k| *k == __TypeKind::NON_NULL)
|
|
||||||
.unwrap_or(false)
|
|
||||||
{
|
|
||||||
type_ref = *type_ref.of_type.unwrap().clone();
|
|
||||||
}
|
|
||||||
|
|
||||||
type_ref
|
|
||||||
.kind
|
|
||||||
.pipe(|k| *k == __TypeKind::ENUM)
|
|
||||||
.unwrap_or(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn type_ref_is_object(type_ref: &TypeRef) -> bool {
|
pub fn type_ref_is_object(type_ref: &TypeRef) -> bool {
|
||||||
let mut type_ref = type_ref.clone();
|
let mut type_ref = type_ref.clone();
|
||||||
if type_ref
|
if type_ref
|
||||||
@ -275,7 +258,6 @@ pub fn input_values_has_optionals(input_values: &[&InputValue]) -> bool {
|
|||||||
> 0
|
> 0
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
|
||||||
pub fn input_values_is_empty(input_values: &[InputValue]) -> bool {
|
pub fn input_values_is_empty(input_values: &[InputValue]) -> bool {
|
||||||
input_values.len() > 0
|
input_values.len() > 0
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
#![deny(warnings)]
|
|
||||||
|
|
||||||
mod functions;
|
mod functions;
|
||||||
mod generator;
|
mod generator;
|
||||||
pub mod rust;
|
pub mod rust;
|
||||||
@ -13,7 +11,7 @@ use self::generator::DynGenerator;
|
|||||||
fn set_schema_parents(mut schema: Schema) -> Schema {
|
fn set_schema_parents(mut schema: Schema) -> Schema {
|
||||||
for t in schema.types.as_mut().into_iter().flatten().flatten() {
|
for t in schema.types.as_mut().into_iter().flatten().flatten() {
|
||||||
let t_parent = t.full_type.clone();
|
let t_parent = t.full_type.clone();
|
||||||
for field in t.full_type.fields.as_mut().into_iter().flatten() {
|
for mut field in t.full_type.fields.as_mut().into_iter().flatten() {
|
||||||
field.parent_type = Some(t_parent.clone());
|
field.parent_type = Some(t_parent.clone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,10 @@ use dagger_core::introspection::{FullTypeFields, TypeRef};
|
|||||||
use genco::prelude::rust;
|
use genco::prelude::rust;
|
||||||
use genco::quote;
|
use genco::quote;
|
||||||
use genco::tokens::quoted;
|
use genco::tokens::quoted;
|
||||||
use itertools::Itertools;
|
|
||||||
|
|
||||||
use crate::functions::{
|
use crate::functions::{
|
||||||
type_field_has_optional, type_ref_is_enum, type_ref_is_list, type_ref_is_list_of_objects,
|
type_field_has_optional, type_ref_is_list, type_ref_is_list_of_objects, type_ref_is_object,
|
||||||
type_ref_is_object, type_ref_is_optional, type_ref_is_scalar, CommonFunctions, Scalar,
|
type_ref_is_optional, type_ref_is_scalar, CommonFunctions, Scalar,
|
||||||
};
|
};
|
||||||
use crate::utility::OptionExt;
|
use crate::utility::OptionExt;
|
||||||
|
|
||||||
@ -134,12 +133,6 @@ fn render_required_args(_funcs: &CommonFunctions, field: &FullTypeFields) -> Opt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if type_ref_is_enum(&s.input_value.type_) {
|
|
||||||
return Some(quote! {
|
|
||||||
query = query.arg_enum($(quoted(name)), $(n));
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
if type_ref_is_list(&s.input_value.type_) {
|
if type_ref_is_list(&s.input_value.type_) {
|
||||||
let inner = *s
|
let inner = *s
|
||||||
.input_value
|
.input_value
|
||||||
@ -194,14 +187,6 @@ fn render_optional_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_enum(&s.input_value.type_) {
|
|
||||||
return Some(quote! {
|
|
||||||
if let Some($(&n)) = opts.$(&n) {
|
|
||||||
query = query.arg_enum($(quoted(name)), $(n));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
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));
|
||||||
@ -235,10 +220,8 @@ fn render_output_type(funcs: &CommonFunctions, type_ref: &TypeRef) -> rust::Toke
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
let dagger_error = rust::import("crate::errors", "DaggerError");
|
|
||||||
|
|
||||||
quote! {
|
quote! {
|
||||||
Result<$output_type, $dagger_error>
|
eyre::Result<$output_type>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,7 +232,7 @@ fn render_execution(funcs: &CommonFunctions, field: &FullTypeFields) -> rust::To
|
|||||||
return $(output_type) {
|
return $(output_type) {
|
||||||
proc: self.proc.clone(),
|
proc: self.proc.clone(),
|
||||||
selection: query,
|
selection: query,
|
||||||
graphql_client: self.graphql_client.clone(),
|
conn: self.conn.clone(),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -275,13 +258,15 @@ fn render_execution(funcs: &CommonFunctions, field: &FullTypeFields) -> rust::To
|
|||||||
return vec![$(output_type) {
|
return vec![$(output_type) {
|
||||||
proc: self.proc.clone(),
|
proc: self.proc.clone(),
|
||||||
selection: query,
|
selection: query,
|
||||||
graphql_client: self.graphql_client.clone(),
|
conn: self.conn.clone(),
|
||||||
}]
|
}]
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let graphql_client = rust::import("crate::client", "graphql_client");
|
||||||
|
|
||||||
quote! {
|
quote! {
|
||||||
query.execute(self.graphql_client.clone()).await
|
query.execute(&$graphql_client(&self.conn)).await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -406,7 +391,6 @@ pub fn format_optional_args(
|
|||||||
.map(|t| {
|
.map(|t| {
|
||||||
t.into_iter()
|
t.into_iter()
|
||||||
.filter(|t| type_ref_is_optional(&t.input_value.type_))
|
.filter(|t| type_ref_is_optional(&t.input_value.type_))
|
||||||
.sorted_by_key(|val| &val.input_value.name)
|
|
||||||
.collect::<Vec<_>>()
|
.collect::<Vec<_>>()
|
||||||
})
|
})
|
||||||
.pipe(|t| render_optional_field_args(funcs, t))
|
.pipe(|t| render_optional_field_args(funcs, t))
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
use dagger_core::introspection::FullType;
|
use dagger_core::introspection::FullType;
|
||||||
use genco::prelude::rust;
|
use genco::prelude::rust;
|
||||||
use genco::quote;
|
use genco::quote;
|
||||||
use itertools::Itertools;
|
|
||||||
|
|
||||||
fn render_enum_values(values: &FullType) -> Option<rust::Tokens> {
|
fn render_enum_values(values: &FullType) -> Option<rust::Tokens> {
|
||||||
let values = values
|
let values = values
|
||||||
@ -11,7 +10,6 @@ fn render_enum_values(values: &FullType) -> Option<rust::Tokens> {
|
|||||||
.map(|values| {
|
.map(|values| {
|
||||||
values
|
values
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.sorted_by_key(|a| &a.name)
|
|
||||||
.map(|val| quote! { $(val.name.as_ref()), })
|
.map(|val| quote! { $(val.name.as_ref()), })
|
||||||
})
|
})
|
||||||
.flatten()
|
.flatten()
|
||||||
@ -28,10 +26,9 @@ 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");
|
let serialize = rust::import("serde", "Serialize");
|
||||||
let deserialize = rust::import("serde", "Deserialize");
|
|
||||||
|
|
||||||
Ok(quote! {
|
Ok(quote! {
|
||||||
#[derive($serialize, $deserialize, Clone, PartialEq, Debug)]
|
#[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))
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
use dagger_core::introspection::{FullType, FullTypeInputFields};
|
use dagger_core::introspection::{FullType, FullTypeInputFields};
|
||||||
use genco::prelude::rust;
|
use genco::prelude::rust;
|
||||||
use genco::quote;
|
use genco::quote;
|
||||||
use itertools::Itertools;
|
|
||||||
|
|
||||||
use crate::functions::CommonFunctions;
|
use crate::functions::CommonFunctions;
|
||||||
use crate::rust::functions::{format_name, format_struct_name};
|
use crate::rust::functions::{format_name, format_struct_name};
|
||||||
@ -21,10 +20,7 @@ pub fn render_input_fields(
|
|||||||
funcs: &CommonFunctions,
|
funcs: &CommonFunctions,
|
||||||
fields: &[FullTypeInputFields],
|
fields: &[FullTypeInputFields],
|
||||||
) -> Option<rust::Tokens> {
|
) -> Option<rust::Tokens> {
|
||||||
let rendered_fields = fields
|
let rendered_fields = fields.iter().map(|f| render_input_field(funcs, f));
|
||||||
.iter()
|
|
||||||
.sorted_by_key(|val| &val.input_value.name)
|
|
||||||
.map(|f| render_input_field(funcs, f));
|
|
||||||
|
|
||||||
if rendered_fields.len() == 0 {
|
if rendered_fields.len() == 0 {
|
||||||
None
|
None
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
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::CommonFunctions;
|
use crate::functions::{CommonFunctions};
|
||||||
use crate::rust::functions::{
|
use crate::rust::functions::{
|
||||||
field_options_struct_name, format_function, format_name, format_optional_args,
|
field_options_struct_name, format_function, format_name, format_optional_args,
|
||||||
format_struct_comment, format_struct_name,
|
format_struct_comment, format_struct_name,
|
||||||
@ -11,16 +12,15 @@ use crate::utility::OptionExt;
|
|||||||
|
|
||||||
pub fn render_object(funcs: &CommonFunctions, t: &FullType) -> eyre::Result<rust::Tokens> {
|
pub fn render_object(funcs: &CommonFunctions, t: &FullType) -> eyre::Result<rust::Tokens> {
|
||||||
let selection = rust::import("crate::querybuilder", "Selection");
|
let selection = rust::import("crate::querybuilder", "Selection");
|
||||||
let child = rust::import("tokio::process", "Child");
|
let child = rust::import("std::process", "Child");
|
||||||
let graphql_client = rust::import("dagger_core::graphql_client", "DynGraphQLClient");
|
let conn = rust::import("dagger_core::connect_params", "ConnectParams");
|
||||||
let arc = rust::import("std::sync", "Arc");
|
let arc = rust::import("std::sync", "Arc");
|
||||||
|
|
||||||
Ok(quote! {
|
Ok(quote! {
|
||||||
#[derive(Clone)]
|
|
||||||
pub struct $(t.name.pipe(|s| format_name(s))) {
|
pub struct $(t.name.pipe(|s| format_name(s))) {
|
||||||
pub proc: Option<$arc<$child>>,
|
pub proc: $arc<$child>,
|
||||||
pub selection: $selection,
|
pub selection: $selection,
|
||||||
pub graphql_client: $graphql_client
|
pub conn: $conn,
|
||||||
}
|
}
|
||||||
|
|
||||||
$(t.fields.pipe(|f| render_optional_args(funcs, f)))
|
$(t.fields.pipe(|f| render_optional_args(funcs, f)))
|
||||||
@ -86,7 +86,7 @@ pub fn render_optional_field_args(
|
|||||||
}
|
}
|
||||||
quote! {
|
quote! {
|
||||||
$(a.description.pipe(|d| format_struct_comment(d)))
|
$(a.description.pipe(|d| format_struct_comment(d)))
|
||||||
#[builder(setter(into, strip_option), default)]
|
#[builder(setter(into, strip_option))]
|
||||||
pub $(format_struct_name(&a.name)): Option<$(type_)>,
|
pub $(format_struct_name(&a.name)): Option<$(type_)>,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -11,18 +11,6 @@ pub fn render_scalar(t: &FullType) -> eyre::Result<rust::Tokens> {
|
|||||||
|
|
||||||
Ok(quote! {
|
Ok(quote! {
|
||||||
#[derive($serialize, $deserialize, PartialEq, Debug, Clone)]
|
#[derive($serialize, $deserialize, PartialEq, Debug, Clone)]
|
||||||
pub struct $(t.name.pipe(|n|format_name(n)))(pub String);
|
pub struct $(t.name.pipe(|n|format_name(n)))(String);
|
||||||
|
|
||||||
impl Into<$(t.name.pipe(|n| format_name(n)))> for &str {
|
|
||||||
fn into(self) -> $(t.name.pipe(|n| format_name(n))) {
|
|
||||||
$(t.name.pipe(|n| format_name(n)))(self.to_string())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Into<$(t.name.pipe(|n| format_name(n)))> for String {
|
|
||||||
fn into(self) -> $(t.name.pipe(|n| format_name(n))) {
|
|
||||||
$(t.name.pipe(|n| format_name(n)))(self.clone())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -5,182 +5,12 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## v0.2.11 (2023-04-29)
|
## v0.2.4 (2023-02-20)
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-2a29a66217fa4d6c530ea1ce670c8836383e7051/> dagger-run support
|
|
||||||
- <csr-id-eb7470c604169d1a15976078c0889d5cc7011257/> update to dagger-5.1
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 2 commits contributed to the release.
|
|
||||||
- 4 days passed between releases.
|
|
||||||
- 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**
|
|
||||||
- dagger-run support ([`2a29a66`](https://github.com/kjuulh/dagger-sdk/commit/2a29a66217fa4d6c530ea1ce670c8836383e7051))
|
|
||||||
- update to dagger-5.1 ([`eb7470c`](https://github.com/kjuulh/dagger-sdk/commit/eb7470c604169d1a15976078c0889d5cc7011257))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.10 (2023-04-25)
|
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
- <csr-id-9d3c21d16b4a64eb7a7b1888365a4c4ea56d7225/> delete other files/folder in downloads: #57
|
- <csr-id-8385aa8a15ff7b45fecc3462c482b998118c14eb/> remove blocking
|
||||||
|
- <csr-id-921e61b5e248013cb5fbf4f1bad3eef5a2673145/> remove blocking
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 2 commits contributed to the release.
|
|
||||||
- 21 days passed between releases.
|
|
||||||
- 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.10 ([`8011c42`](https://github.com/kjuulh/dagger-sdk/commit/8011c42dc077d101b1bccaf231fac17636dd249d))
|
|
||||||
- delete other files/folder in downloads: #57 ([`9d3c21d`](https://github.com/kjuulh/dagger-sdk/commit/9d3c21d16b4a64eb7a7b1888365a4c4ea56d7225))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.9 (2023-04-03)
|
|
||||||
|
|
||||||
<csr-id-b55bcc159ffc6a61ecfcc5e3aa3de00a1a73b5b8/>
|
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-114f411cdb0e1043071c0ccc1768d344f78d4fcb/> with 0.4.2
|
|
||||||
- <csr-id-b094ae4f539a880b0bde12841b7db1fbfcc0f123/> add musl ci
|
|
||||||
This pr adds musl ci support for #50
|
|
||||||
- <csr-id-2faabb0e502a9b15c88b0bdf5673d1b458198d70/> with multi platform ci
|
|
||||||
This adds the first iteration of multi platform ci. This is the lowest level of testing added: pinned all the way to nightly. Next up will be macos, then musl and arm. And lastly windows. Each will probably require special handling, especially because of how cross and qemu interacts with the dagger-engine and docker.
|
|
||||||
- <csr-id-11d20935c697e28caaa671e8da0e70a99d4310fc/> extract client
|
|
||||||
This extracts the client (strategy pattern), this is so that it is will be possible to test the actual querier, without hitting / requiring the dagger-engine running.
|
|
||||||
- <csr-id-384294b39038123b02c406a1038105b111c3b9be/> rename projects to point to github/kjuulh/dagger-sdk
|
|
||||||
- <csr-id-79d931e908c58a0464fd9cf7d6ef02eb50f14c23/> with loggers
|
|
||||||
|
|
||||||
### Refactor
|
|
||||||
|
|
||||||
- <csr-id-b55bcc159ffc6a61ecfcc5e3aa3de00a1a73b5b8/> move dagger-rs and adopt workspace.deps
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 8 commits contributed to the release over the course of 19 calendar days.
|
|
||||||
- 23 days passed between releases.
|
|
||||||
- 7 commits were understood as [conventional](https://www.conventionalcommits.org).
|
|
||||||
- 3 unique issues were worked on: [#46](https://github.com/kjuulh/dagger-sdk/issues/46), [#48](https://github.com/kjuulh/dagger-sdk/issues/48), [#51](https://github.com/kjuulh/dagger-sdk/issues/51)
|
|
||||||
|
|
||||||
### Commit Details
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
<details><summary>view details</summary>
|
|
||||||
|
|
||||||
* **[#46](https://github.com/kjuulh/dagger-sdk/issues/46)**
|
|
||||||
- with multi platform ci ([`2faabb0`](https://github.com/kjuulh/dagger-sdk/commit/2faabb0e502a9b15c88b0bdf5673d1b458198d70))
|
|
||||||
* **[#48](https://github.com/kjuulh/dagger-sdk/issues/48)**
|
|
||||||
- extract client ([`11d2093`](https://github.com/kjuulh/dagger-sdk/commit/11d20935c697e28caaa671e8da0e70a99d4310fc))
|
|
||||||
* **[#51](https://github.com/kjuulh/dagger-sdk/issues/51)**
|
|
||||||
- add musl ci ([`b094ae4`](https://github.com/kjuulh/dagger-sdk/commit/b094ae4f539a880b0bde12841b7db1fbfcc0f123))
|
|
||||||
* **Uncategorized**
|
|
||||||
- Release dagger-core v0.2.9, dagger-sdk v0.2.20 ([`f82075c`](https://github.com/kjuulh/dagger-sdk/commit/f82075c23808073d9500df63c1cd347cd9b99cef))
|
|
||||||
- with 0.4.2 ([`114f411`](https://github.com/kjuulh/dagger-sdk/commit/114f411cdb0e1043071c0ccc1768d344f78d4fcb))
|
|
||||||
- rename projects to point to github/kjuulh/dagger-sdk ([`384294b`](https://github.com/kjuulh/dagger-sdk/commit/384294b39038123b02c406a1038105b111c3b9be))
|
|
||||||
- with loggers ([`79d931e`](https://github.com/kjuulh/dagger-sdk/commit/79d931e908c58a0464fd9cf7d6ef02eb50f14c23))
|
|
||||||
- move dagger-rs and adopt workspace.deps ([`b55bcc1`](https://github.com/kjuulh/dagger-sdk/commit/b55bcc159ffc6a61ecfcc5e3aa3de00a1a73b5b8))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.8 (2023-03-10)
|
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-41b20b6268db9d8defe333694e4d3ec019d7c923/> bump version
|
|
||||||
- <csr-id-5f9b3a19c0ab6988bc335b020052074f3f101305/> set internal warnings as errors
|
|
||||||
- <csr-id-f9e7af931d94fbedacf74f5da9a2f71b1992324b/> introduce tests again
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-ecca036bc644fee93fbcb69bf6da9f29169e473e/> fix builder pattern to actually work with default values
|
|
||||||
In previous versions the builder pattern required all values to be set.
|
|
||||||
This has not been fixed, so that default values are allowed.
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 5 commits contributed to the release over the course of 13 calendar days.
|
|
||||||
- 13 days passed between releases.
|
|
||||||
- 4 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-core v0.2.8, dagger-sdk v0.2.16 ([`f390eac`](https://github.com/kjuulh/dagger-sdk/commit/f390eac29f1d041d18d2207a5aa0a8d993aab68c))
|
|
||||||
- bump version ([`41b20b6`](https://github.com/kjuulh/dagger-sdk/commit/41b20b6268db9d8defe333694e4d3ec019d7c923))
|
|
||||||
- set internal warnings as errors ([`5f9b3a1`](https://github.com/kjuulh/dagger-sdk/commit/5f9b3a19c0ab6988bc335b020052074f3f101305))
|
|
||||||
- introduce tests again ([`f9e7af9`](https://github.com/kjuulh/dagger-sdk/commit/f9e7af931d94fbedacf74f5da9a2f71b1992324b))
|
|
||||||
- fix builder pattern to actually work with default values ([`ecca036`](https://github.com/kjuulh/dagger-sdk/commit/ecca036bc644fee93fbcb69bf6da9f29169e473e))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.7 (2023-02-24)
|
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-3e8ca8d86eafdc1f9d5e8b69f14fb60509549e0f/> update to dagger-v0.3.13
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 2 commits contributed to the release.
|
|
||||||
- 4 days passed between releases.
|
|
||||||
- 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.7, dagger-sdk v0.2.15 ([`6a9a560`](https://github.com/kjuulh/dagger-sdk/commit/6a9a560cdca097abf23371d44599a2f1b726ae7f))
|
|
||||||
- update to dagger-v0.3.13 ([`3e8ca8d`](https://github.com/kjuulh/dagger-sdk/commit/3e8ca8d86eafdc1f9d5e8b69f14fb60509549e0f))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.6 (2023-02-20)
|
|
||||||
|
|
||||||
<csr-id-1f77d90c0f0ac832a181b2322350ea395612986c/>
|
|
||||||
|
|
||||||
### Chore
|
|
||||||
|
|
||||||
- <csr-id-1f77d90c0f0ac832a181b2322350ea395612986c/> ran clippy
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-8dfecf976c5537cc2c03881de2b2fd2b2508683a/> cli session keep session alive
|
|
||||||
|
|
||||||
### Commit Statistics
|
### Commit Statistics
|
||||||
|
|
||||||
@ -197,62 +27,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- Release dagger-core v0.2.6, dagger-codegen v0.2.7, dagger-sdk v0.2.12 ([`7179f8b`](https://github.com/kjuulh/dagger-sdk/commit/7179f8b598ef04e62925e39d3f55740253c01686))
|
- remove blocking ([`921e61b`](https://github.com/kjuulh/dagger-rs/commit/921e61b5e248013cb5fbf4f1bad3eef5a2673145))
|
||||||
- ran clippy ([`1f77d90`](https://github.com/kjuulh/dagger-sdk/commit/1f77d90c0f0ac832a181b2322350ea395612986c))
|
- Release dagger-core v0.2.4, dagger-codegen v0.2.6, dagger-sdk v0.2.11 ([`17ec62a`](https://github.com/kjuulh/dagger-rs/commit/17ec62a5d58232ff57391523b9851fb7b07d02ab))
|
||||||
- cli session keep session alive ([`8dfecf9`](https://github.com/kjuulh/dagger-sdk/commit/8dfecf976c5537cc2c03881de2b2fd2b2508683a))
|
- remove blocking ([`8385aa8`](https://github.com/kjuulh/dagger-rs/commit/8385aa8a15ff7b45fecc3462c482b998118c14eb))
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.5 (2023-02-20)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-a13a2a9ecbfdfac80ed8eb0cbb9e9db317da65de/> race condition in process
|
|
||||||
|
|
||||||
### 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.5, dagger-sdk v0.2.12, dagger-codegen v0.2.7 ([`1725c51`](https://github.com/kjuulh/dagger-sdk/commit/1725c5188e8a81069ec4a4de569484c921a94927))
|
|
||||||
- race condition in process ([`a13a2a9`](https://github.com/kjuulh/dagger-sdk/commit/a13a2a9ecbfdfac80ed8eb0cbb9e9db317da65de))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.4 (2023-02-20)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-8385aa8a15ff7b45fecc3462c482b998118c14eb/> remove blocking
|
|
||||||
- <csr-id-921e61b5e248013cb5fbf4f1bad3eef5a2673145/> remove blocking
|
|
||||||
|
|
||||||
### 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-core v0.2.4, dagger-codegen v0.2.6, dagger-sdk v0.2.11 ([`f869e57`](https://github.com/kjuulh/dagger-sdk/commit/f869e574dd788cd60e5b1b5d502bec68e300694c))
|
|
||||||
- remove blocking ([`921e61b`](https://github.com/kjuulh/dagger-sdk/commit/921e61b5e248013cb5fbf4f1bad3eef5a2673145))
|
|
||||||
- Release dagger-core v0.2.4, dagger-codegen v0.2.6, dagger-sdk v0.2.11 ([`17ec62a`](https://github.com/kjuulh/dagger-sdk/commit/17ec62a5d58232ff57391523b9851fb7b07d02ab))
|
|
||||||
- remove blocking ([`8385aa8`](https://github.com/kjuulh/dagger-sdk/commit/8385aa8a15ff7b45fecc3462c482b998118c14eb))
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## v0.2.3 (2023-02-20)
|
## v0.2.3 (2023-02-20)
|
||||||
@ -277,8 +54,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- Release dagger-core v0.2.3, dagger-sdk v0.2.9, dagger-rs v0.2.10 ([`82de43a`](https://github.com/kjuulh/dagger-sdk/commit/82de43aa91d6a5e09a247d1959137fdc36a40d35))
|
- Release dagger-core v0.2.3, dagger-sdk v0.2.9, dagger-rs v0.2.10 ([`82de43a`](https://github.com/kjuulh/dagger-rs/commit/82de43aa91d6a5e09a247d1959137fdc36a40d35))
|
||||||
- Fix async panic on blocking #19 ([`75bc17e`](https://github.com/kjuulh/dagger-sdk/commit/75bc17e57db222492c6ffd2dfe80208d2bda75c9))
|
- Fix async panic on blocking #19 ([`75bc17e`](https://github.com/kjuulh/dagger-rs/commit/75bc17e57db222492c6ffd2dfe80208d2bda75c9))
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## v0.2.2 (2023-02-19)
|
## v0.2.2 (2023-02-19)
|
||||||
@ -302,8 +79,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- Release dagger-core v0.2.2, dagger-codegen v0.2.2, dagger-rs v0.2.8 ([`1638f15`](https://github.com/kjuulh/dagger-sdk/commit/1638f15fba9d16512e8452f87b908d6dce417cd9))
|
- Release dagger-core v0.2.2, dagger-codegen v0.2.2, dagger-rs v0.2.8 ([`1638f15`](https://github.com/kjuulh/dagger-rs/commit/1638f15fba9d16512e8452f87b908d6dce417cd9))
|
||||||
- update to dagger v0.3.12 ([`6e5f407`](https://github.com/kjuulh/dagger-sdk/commit/6e5f4074329ab0462445b31d4153f8497c483438))
|
- update to dagger v0.3.12 ([`6e5f407`](https://github.com/kjuulh/dagger-rs/commit/6e5f4074329ab0462445b31d4153f8497c483438))
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## v0.2.1 (2023-02-18)
|
## v0.2.1 (2023-02-18)
|
||||||
@ -318,7 +95,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
- 16 commits contributed to the release over the course of 19 calendar days.
|
- 16 commits contributed to the release over the course of 19 calendar days.
|
||||||
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
|
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
|
||||||
- 2 unique issues were worked on: [#5](https://github.com/kjuulh/dagger-sdk/issues/5), [#6](https://github.com/kjuulh/dagger-sdk/issues/6)
|
- 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
|
### Commit Details
|
||||||
|
|
||||||
@ -326,24 +103,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **[#5](https://github.com/kjuulh/dagger-sdk/issues/5)**
|
* **[#5](https://github.com/kjuulh/dagger-rs/issues/5)**
|
||||||
- update all dependencies ([`789b0e6`](https://github.com/kjuulh/dagger-sdk/commit/789b0e69c8c53d0e86d9cec89ab5345507aad514))
|
- update all dependencies ([`789b0e6`](https://github.com/kjuulh/dagger-rs/commit/789b0e69c8c53d0e86d9cec89ab5345507aad514))
|
||||||
* **[#6](https://github.com/kjuulh/dagger-sdk/issues/6)**
|
* **[#6](https://github.com/kjuulh/dagger-rs/issues/6)**
|
||||||
- feature/add impl ([`4a4c03f`](https://github.com/kjuulh/dagger-sdk/commit/4a4c03f3c2ee7f6268c65976715e70767b4ea78d))
|
- feature/add impl ([`4a4c03f`](https://github.com/kjuulh/dagger-rs/commit/4a4c03f3c2ee7f6268c65976715e70767b4ea78d))
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- Release dagger-core v0.2.1, dagger-codegen v0.2.1, dagger-rs v0.2.1 ([`1332bc8`](https://github.com/kjuulh/dagger-sdk/commit/1332bc842ce2ea0254c651419813b63b36ca590c))
|
- 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-sdk/commit/a064684fcf80196188a57d9ff9067c0b5769fb09))
|
- 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-sdk/commit/f4a20fda79063b29829cc899793775ba8cb17214))
|
- 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-sdk/commit/989d5bc26036d46a199d939b5cbbe72aff2f8fb1))
|
- with publish ([`989d5bc`](https://github.com/kjuulh/dagger-rs/commit/989d5bc26036d46a199d939b5cbbe72aff2f8fb1))
|
||||||
- with repo ([`e5383b5`](https://github.com/kjuulh/dagger-sdk/commit/e5383b51f3b290a87b729929c377e93bda3873e0))
|
- with repo ([`e5383b5`](https://github.com/kjuulh/dagger-rs/commit/e5383b51f3b290a87b729929c377e93bda3873e0))
|
||||||
- with readme and license ([`1e26b38`](https://github.com/kjuulh/dagger-sdk/commit/1e26b383d4f6dbcbe20f5f7c19c749e743f6e607))
|
- with readme and license ([`1e26b38`](https://github.com/kjuulh/dagger-rs/commit/1e26b383d4f6dbcbe20f5f7c19c749e743f6e607))
|
||||||
- bump version ([`36b0ecd`](https://github.com/kjuulh/dagger-sdk/commit/36b0ecdabf4c220cffb2d0660fb6480387e3249a))
|
- bump version ([`36b0ecd`](https://github.com/kjuulh/dagger-rs/commit/36b0ecdabf4c220cffb2d0660fb6480387e3249a))
|
||||||
- with println ([`d1726a0`](https://github.com/kjuulh/dagger-sdk/commit/d1726a052a6dc4e57f364864446cab3cbda7e0bf))
|
- with println ([`d1726a0`](https://github.com/kjuulh/dagger-rs/commit/d1726a052a6dc4e57f364864446cab3cbda7e0bf))
|
||||||
- context and querier done ([`52a0db3`](https://github.com/kjuulh/dagger-sdk/commit/52a0db3e311f9f88447882f1406701d4cd612b1c))
|
- context and querier done ([`52a0db3`](https://github.com/kjuulh/dagger-rs/commit/52a0db3e311f9f88447882f1406701d4cd612b1c))
|
||||||
- tested full flow initially ([`7a008be`](https://github.com/kjuulh/dagger-sdk/commit/7a008be59e5ca183809e5840cdfae1d87665aa20))
|
- tested full flow initially ([`7a008be`](https://github.com/kjuulh/dagger-rs/commit/7a008be59e5ca183809e5840cdfae1d87665aa20))
|
||||||
- move code to dagger-core ([`ec0d0b2`](https://github.com/kjuulh/dagger-sdk/commit/ec0d0b22e646c97acb3ce93f3afb3ddb8590e68f))
|
- move code to dagger-core ([`ec0d0b2`](https://github.com/kjuulh/dagger-rs/commit/ec0d0b22e646c97acb3ce93f3afb3ddb8590e68f))
|
||||||
- add fields ([`496a687`](https://github.com/kjuulh/dagger-sdk/commit/496a687bc34f7c58cc86df60c183be741b0b8a9c))
|
- add fields ([`496a687`](https://github.com/kjuulh/dagger-rs/commit/496a687bc34f7c58cc86df60c183be741b0b8a9c))
|
||||||
- with objects ([`5fef514`](https://github.com/kjuulh/dagger-sdk/commit/5fef5148010f384d0158361d64b8e17d357d4819))
|
- with objects ([`5fef514`](https://github.com/kjuulh/dagger-rs/commit/5fef5148010f384d0158361d64b8e17d357d4819))
|
||||||
- with enum ([`2a1f7c3`](https://github.com/kjuulh/dagger-sdk/commit/2a1f7c3f2666f1f4caebf7c22707709741c2cfad))
|
- with enum ([`2a1f7c3`](https://github.com/kjuulh/dagger-rs/commit/2a1f7c3f2666f1f4caebf7c22707709741c2cfad))
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -1,39 +1,29 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "dagger-core"
|
name = "dagger-core"
|
||||||
version = "0.2.11"
|
version = "0.2.4"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
license-file = "LICENSE.MIT"
|
license-file = "LICENSE.MIT"
|
||||||
description = "dagger sdk core library"
|
description = "dagger sdk core library"
|
||||||
repository = "https://github.com/kjuulh/dagger-sdk"
|
repository = "https://github.com/kjuulh/dagger-rs"
|
||||||
publish = true
|
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]
|
||||||
eyre = { workspace = true }
|
clap = "4.1.6"
|
||||||
serde = { workspace = true }
|
|
||||||
serde_json = { workspace = true }
|
|
||||||
tokio = { workspace = true }
|
|
||||||
tracing = { workspace = true }
|
|
||||||
tracing-subscriber = { workspace = true }
|
|
||||||
thiserror.workspace = true
|
|
||||||
|
|
||||||
base64 = "0.21.0"
|
|
||||||
dirs = "4.0.0"
|
dirs = "4.0.0"
|
||||||
flate2 = { version = "1.0.25", features = ["rust_backend"] }
|
eyre = "0.6.8"
|
||||||
graphql_client = { version = "0.12.0", features = [
|
flate2 = { version = "1.0.25", features = ["zlib"] }
|
||||||
"reqwest-rustls",
|
genco = "0.17.3"
|
||||||
"graphql_query_derive",
|
graphql-introspection-query = "0.2.0"
|
||||||
], default-features = false }
|
graphql_client = { version = "0.12.0", features = ["reqwest"] }
|
||||||
hex = "0.4.3"
|
hex = "0.4.3"
|
||||||
hex-literal = "0.3.4"
|
hex-literal = "0.3.4"
|
||||||
platform-info = "1.0.2"
|
platform-info = "1.0.2"
|
||||||
reqwest = { version = "0.11.14", features = [
|
reqwest = { version = "0.11.14", features = ["stream", "deflate"] }
|
||||||
"stream",
|
serde = { version = "1.0.152", features = ["derive"] }
|
||||||
"rustls-tls",
|
serde_json = "1.0.93"
|
||||||
], default-features = false }
|
|
||||||
|
|
||||||
sha2 = "0.10.6"
|
sha2 = "0.10.6"
|
||||||
tar = "0.4.38"
|
tar = "0.4.38"
|
||||||
tempfile = "3.3.0"
|
tempfile = "3.3.0"
|
||||||
async-trait = "0.1.67"
|
tokio = { version = "1.25.0", features = ["full"] }
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
use std::{fs::canonicalize, path::PathBuf, process::Stdio, sync::Arc};
|
use std::{
|
||||||
|
fs::canonicalize,
|
||||||
use tokio::io::AsyncBufReadExt;
|
io::{BufRead, BufReader},
|
||||||
|
path::PathBuf,
|
||||||
|
process::{Child, Stdio},
|
||||||
|
sync::Arc,
|
||||||
|
};
|
||||||
|
|
||||||
use crate::{config::Config, connect_params::ConnectParams};
|
use crate::{config::Config, connect_params::ConnectParams};
|
||||||
|
|
||||||
@ -20,7 +24,7 @@ impl CliSession {
|
|||||||
&self,
|
&self,
|
||||||
config: &Config,
|
config: &Config,
|
||||||
cli_path: &PathBuf,
|
cli_path: &PathBuf,
|
||||||
) -> eyre::Result<(ConnectParams, tokio::process::Child)> {
|
) -> eyre::Result<(ConnectParams, Child)> {
|
||||||
self.inner.connect(config, cli_path).await
|
self.inner.connect(config, cli_path).await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -33,13 +37,13 @@ impl InnerCliSession {
|
|||||||
&self,
|
&self,
|
||||||
config: &Config,
|
config: &Config,
|
||||||
cli_path: &PathBuf,
|
cli_path: &PathBuf,
|
||||||
) -> eyre::Result<(ConnectParams, tokio::process::Child)> {
|
) -> eyre::Result<(ConnectParams, Child)> {
|
||||||
let proc = self.start(config, cli_path)?;
|
let proc = self.start(config, cli_path)?;
|
||||||
let params = self.get_conn(proc, config).await?;
|
let params = self.get_conn(proc).await?;
|
||||||
Ok(params)
|
Ok(params)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn start(&self, config: &Config, cli_path: &PathBuf) -> eyre::Result<tokio::process::Child> {
|
fn start(&self, config: &Config, cli_path: &PathBuf) -> eyre::Result<std::process::Child> {
|
||||||
let mut args: Vec<String> = vec!["session".into()];
|
let mut args: Vec<String> = vec!["session".into()];
|
||||||
if let Some(workspace) = &config.workdir_path {
|
if let Some(workspace) = &config.workdir_path {
|
||||||
let abs_path = canonicalize(workspace)?;
|
let abs_path = canonicalize(workspace)?;
|
||||||
@ -50,7 +54,7 @@ impl InnerCliSession {
|
|||||||
args.extend(["--project".into(), abs_path.to_string_lossy().to_string()])
|
args.extend(["--project".into(), abs_path.to_string_lossy().to_string()])
|
||||||
}
|
}
|
||||||
|
|
||||||
let proc = tokio::process::Command::new(
|
let proc = std::process::Command::new(
|
||||||
cli_path
|
cli_path
|
||||||
.to_str()
|
.to_str()
|
||||||
.ok_or(eyre::anyhow!("could not get string from path"))?,
|
.ok_or(eyre::anyhow!("could not get string from path"))?,
|
||||||
@ -68,9 +72,8 @@ impl InnerCliSession {
|
|||||||
|
|
||||||
async fn get_conn(
|
async fn get_conn(
|
||||||
&self,
|
&self,
|
||||||
mut proc: tokio::process::Child,
|
mut proc: std::process::Child,
|
||||||
config: &Config,
|
) -> eyre::Result<(ConnectParams, std::process::Child)> {
|
||||||
) -> eyre::Result<(ConnectParams, tokio::process::Child)> {
|
|
||||||
let stdout = proc
|
let stdout = proc
|
||||||
.stdout
|
.stdout
|
||||||
.take()
|
.take()
|
||||||
@ -83,34 +86,30 @@ impl InnerCliSession {
|
|||||||
|
|
||||||
let (sender, mut receiver) = tokio::sync::mpsc::channel(1);
|
let (sender, mut receiver) = tokio::sync::mpsc::channel(1);
|
||||||
|
|
||||||
let logger = config.logger.as_ref().map(|p| p.clone());
|
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
let mut stdout_bufr = tokio::io::BufReader::new(stdout).lines();
|
let stdout_bufr = BufReader::new(stdout);
|
||||||
while let Ok(Some(line)) = stdout_bufr.next_line().await {
|
for line in stdout_bufr.lines() {
|
||||||
if let Ok(conn) = serde_json::from_str::<ConnectParams>(&line) {
|
let out = line.as_ref().unwrap();
|
||||||
|
if let Ok(conn) = serde_json::from_str::<ConnectParams>(&out) {
|
||||||
sender.send(conn).await.unwrap();
|
sender.send(conn).await.unwrap();
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
if let Ok(line) = line {
|
||||||
if let Some(logger) = &logger {
|
println!("dagger: {}", line);
|
||||||
logger.stdout(&line).unwrap();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let logger = config.logger.as_ref().map(|p| p.clone());
|
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
let mut stderr_bufr = tokio::io::BufReader::new(stderr).lines();
|
let stderr_bufr = BufReader::new(stderr);
|
||||||
while let Ok(Some(line)) = stderr_bufr.next_line().await {
|
for line in stderr_bufr.lines() {
|
||||||
if let Some(logger) = &logger {
|
if let Ok(line) = line {
|
||||||
logger.stdout(&line).unwrap();
|
println!("dagger: {}", line);
|
||||||
}
|
}
|
||||||
|
//panic!("could not start dagger session: {}", out)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let conn = receiver.recv().await.ok_or(eyre::anyhow!(
|
let conn = receiver.recv().await.ok_or(eyre::anyhow!("could not receive ok signal from dagger-engine"))?;
|
||||||
"could not receive ok signal from dagger-engine"
|
|
||||||
))?;
|
|
||||||
|
|
||||||
Ok((conn, proc))
|
Ok((conn, proc))
|
||||||
}
|
}
|
||||||
|
@ -1,18 +1,15 @@
|
|||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
use crate::logger::DynLogger;
|
|
||||||
|
|
||||||
pub struct Config {
|
pub struct Config {
|
||||||
pub workdir_path: Option<PathBuf>,
|
pub workdir_path: Option<PathBuf>,
|
||||||
pub config_path: Option<PathBuf>,
|
pub config_path: Option<PathBuf>,
|
||||||
pub timeout_ms: u64,
|
pub timeout_ms: u64,
|
||||||
pub execute_timeout_ms: Option<u64>,
|
pub execute_timeout_ms: Option<u64>,
|
||||||
pub logger: Option<DynLogger>,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Config {
|
impl Default for Config {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self::new(None, None, None, None, None)
|
Self::new(None, None, None, None)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -22,14 +19,12 @@ impl Config {
|
|||||||
config_path: Option<PathBuf>,
|
config_path: Option<PathBuf>,
|
||||||
timeout_ms: Option<u64>,
|
timeout_ms: Option<u64>,
|
||||||
execute_timeout_ms: Option<u64>,
|
execute_timeout_ms: Option<u64>,
|
||||||
logger: Option<DynLogger>,
|
|
||||||
) -> Self {
|
) -> Self {
|
||||||
Self {
|
Self {
|
||||||
workdir_path,
|
workdir_path,
|
||||||
config_path,
|
config_path,
|
||||||
timeout_ms: timeout_ms.unwrap_or(10 * 1000),
|
timeout_ms: timeout_ms.unwrap_or(10 * 1000),
|
||||||
execute_timeout_ms,
|
execute_timeout_ms,
|
||||||
logger,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use std::{
|
use std::{
|
||||||
fs::File,
|
fs::File,
|
||||||
io::{copy, Write},
|
io::{copy, Read, Write},
|
||||||
os::unix::prelude::PermissionsExt,
|
os::unix::prelude::PermissionsExt,
|
||||||
path::PathBuf,
|
path::PathBuf,
|
||||||
};
|
};
|
||||||
@ -27,7 +27,6 @@ impl Platform {
|
|||||||
let normalize_arch = match arch.as_str() {
|
let normalize_arch = match arch.as_str() {
|
||||||
"x86_64" => "amd64",
|
"x86_64" => "amd64",
|
||||||
"aarch" => "arm64",
|
"aarch" => "arm64",
|
||||||
"aarch64" => "arm64",
|
|
||||||
arch => arch,
|
arch => arch,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -130,11 +129,19 @@ impl Downloader {
|
|||||||
|
|
||||||
if !cli_bin_path.exists() {
|
if !cli_bin_path.exists() {
|
||||||
cli_bin_path = self
|
cli_bin_path = self
|
||||||
.download(cli_bin_path)
|
.download(cli_bin_path).await
|
||||||
.await
|
|
||||||
.context("failed to download CLI from archive")?;
|
.context("failed to download CLI from archive")?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for file in self.cache_dir()?.read_dir()? {
|
||||||
|
if let Ok(entry) = file {
|
||||||
|
let path = entry.path();
|
||||||
|
if path != cli_bin_path {
|
||||||
|
std::fs::remove_file(path)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(cli_bin_path)
|
Ok(cli_bin_path)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,6 +199,8 @@ impl Downloader {
|
|||||||
hasher.update(&bytes);
|
hasher.update(&bytes);
|
||||||
let res = hasher.finalize();
|
let res = hasher.finalize();
|
||||||
|
|
||||||
|
println!("{}", hex::encode(&res));
|
||||||
|
|
||||||
if archive_url.ends_with(".zip") {
|
if archive_url.ends_with(".zip") {
|
||||||
// TODO: Nothing for now
|
// TODO: Nothing for now
|
||||||
todo!()
|
todo!()
|
||||||
@ -210,6 +219,8 @@ impl Downloader {
|
|||||||
let mut entry = entry?;
|
let mut entry = entry?;
|
||||||
let path = entry.path()?;
|
let path = entry.path()?;
|
||||||
|
|
||||||
|
println!("path: {:?}", path);
|
||||||
|
|
||||||
if path.ends_with("dagger") {
|
if path.ends_with("dagger") {
|
||||||
copy(&mut entry, output)?;
|
copy(&mut entry, output)?;
|
||||||
|
|
||||||
@ -227,11 +238,7 @@ mod test {
|
|||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn download() {
|
async fn download() {
|
||||||
let cli_path = Downloader::new("0.3.10".into())
|
let cli_path = Downloader::new("0.3.10".into()).unwrap().get_cli().await.unwrap();
|
||||||
.unwrap()
|
|
||||||
.get_cli()
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
Some("dagger-0.3.10"),
|
Some("dagger-0.3.10"),
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
use crate::DAGGER_ENGINE_VERSION;
|
use std::process::Child;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
cli_session::CliSession, config::Config, connect_params::ConnectParams, downloader::Downloader,
|
cli_session::CliSession, config::Config, connect_params::ConnectParams, downloader::Downloader,
|
||||||
};
|
};
|
||||||
@ -10,38 +11,38 @@ impl Engine {
|
|||||||
Self {}
|
Self {}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn from_cli(&self, cfg: &Config) -> eyre::Result<(ConnectParams, tokio::process::Child)> {
|
async fn from_cli(&self, cfg: &Config) -> eyre::Result<(ConnectParams, Child)> {
|
||||||
let cli = Downloader::new(DAGGER_ENGINE_VERSION.into())?
|
let cli = Downloader::new("0.3.12".into())?.get_cli().await?;
|
||||||
.get_cli()
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
let cli_session = CliSession::new();
|
let cli_session = CliSession::new();
|
||||||
|
|
||||||
Ok(cli_session.connect(cfg, &cli).await?)
|
Ok(cli_session.connect(cfg, &cli).await?)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn start(
|
pub async fn start(&self, cfg: &Config) -> eyre::Result<(ConnectParams, Child)> {
|
||||||
&self,
|
// TODO: Add from existing session as well
|
||||||
cfg: &Config,
|
self.from_cli(cfg).await
|
||||||
) -> eyre::Result<(ConnectParams, Option<tokio::process::Child>)> {
|
}
|
||||||
tracing::info!("starting dagger-engine");
|
}
|
||||||
|
|
||||||
if let Ok(conn) = self.from_session_env().await {
|
#[cfg(test)]
|
||||||
return Ok((conn, None));
|
mod tests {
|
||||||
}
|
use crate::{config::Config, connect_params::ConnectParams};
|
||||||
|
|
||||||
let (conn, proc) = self.from_cli(cfg).await?;
|
use super::Engine;
|
||||||
|
|
||||||
Ok((conn, Some(proc)))
|
// TODO: these tests potentially have a race condition
|
||||||
}
|
#[tokio::test]
|
||||||
|
async fn engine_can_start() {
|
||||||
async fn from_session_env(&self) -> eyre::Result<ConnectParams> {
|
let engine = Engine::new();
|
||||||
let port = std::env::var("DAGGER_SESSION_PORT").map(|p| p.parse::<u64>())??;
|
let params = engine.start(&Config::new(None, None, None, None)).await.unwrap();
|
||||||
let token = std::env::var("DAGGER_SESSION_TOKEN")?;
|
|
||||||
|
assert_ne!(
|
||||||
Ok(ConnectParams {
|
params.0,
|
||||||
port,
|
ConnectParams {
|
||||||
session_token: token,
|
port: 123,
|
||||||
})
|
session_token: "123".into()
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,375 +0,0 @@
|
|||||||
use reqwest::Error;
|
|
||||||
use reqwest::{Client, Url};
|
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::fmt::{self, Formatter};
|
|
||||||
use std::str::FromStr;
|
|
||||||
|
|
||||||
#[derive(Clone)]
|
|
||||||
pub struct GraphQLError {
|
|
||||||
message: String,
|
|
||||||
json: Option<Vec<GraphQLErrorMessage>>,
|
|
||||||
}
|
|
||||||
|
|
||||||
// https://spec.graphql.org/June2018/#sec-Errors
|
|
||||||
#[derive(Deserialize, Debug, Clone)]
|
|
||||||
#[allow(dead_code)]
|
|
||||||
pub struct GraphQLErrorMessage {
|
|
||||||
pub message: String,
|
|
||||||
locations: Option<Vec<GraphQLErrorLocation>>,
|
|
||||||
extensions: Option<HashMap<String, String>>,
|
|
||||||
path: Option<Vec<GraphQLErrorPathParam>>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Deserialize, Debug, Clone)]
|
|
||||||
#[allow(dead_code)]
|
|
||||||
pub struct GraphQLErrorLocation {
|
|
||||||
line: u32,
|
|
||||||
column: u32,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Deserialize, Debug, Clone)]
|
|
||||||
#[serde(untagged)]
|
|
||||||
pub enum GraphQLErrorPathParam {
|
|
||||||
String(String),
|
|
||||||
Number(u32),
|
|
||||||
}
|
|
||||||
|
|
||||||
impl GraphQLError {
|
|
||||||
pub fn with_text(message: impl AsRef<str>) -> Self {
|
|
||||||
Self {
|
|
||||||
message: message.as_ref().to_string(),
|
|
||||||
json: None,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn with_message_and_json(message: impl AsRef<str>, json: Vec<GraphQLErrorMessage>) -> Self {
|
|
||||||
Self {
|
|
||||||
message: message.as_ref().to_string(),
|
|
||||||
json: Some(json),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn with_json(json: Vec<GraphQLErrorMessage>) -> Self {
|
|
||||||
Self::with_message_and_json("Look at json field for more details", json)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn message(&self) -> &str {
|
|
||||||
&self.message
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn json(&self) -> Option<Vec<GraphQLErrorMessage>> {
|
|
||||||
self.json.clone()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn format(err: &GraphQLError, f: &mut Formatter<'_>) -> fmt::Result {
|
|
||||||
// Print the main error message
|
|
||||||
writeln!(f, "\nGQLClient Error: {}", err.message)?;
|
|
||||||
|
|
||||||
// Check if query errors have been received
|
|
||||||
if err.json.is_none() {
|
|
||||||
return Ok(());
|
|
||||||
}
|
|
||||||
|
|
||||||
let errors = err.json.as_ref();
|
|
||||||
|
|
||||||
for err in errors.unwrap() {
|
|
||||||
writeln!(f, "Message: {}", err.message)?;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
impl fmt::Display for GraphQLError {
|
|
||||||
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
|
|
||||||
format(self, f)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl fmt::Debug for GraphQLError {
|
|
||||||
#[allow(clippy::needless_borrow)]
|
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
||||||
format(&self, f)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<Error> for GraphQLError {
|
|
||||||
fn from(error: Error) -> Self {
|
|
||||||
Self {
|
|
||||||
message: error.to_string(),
|
|
||||||
json: None,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// GQL client config
|
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
|
||||||
pub struct ClientConfig {
|
|
||||||
/// the endpoint about graphql server
|
|
||||||
pub endpoint: String,
|
|
||||||
/// gql query timeout, unit: seconds
|
|
||||||
pub timeout: Option<u64>,
|
|
||||||
/// additional request header
|
|
||||||
pub headers: Option<HashMap<String, String>>,
|
|
||||||
/// request proxy
|
|
||||||
pub proxy: Option<GQLProxy>,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// proxy type
|
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
|
||||||
pub enum ProxyType {
|
|
||||||
Http,
|
|
||||||
Https,
|
|
||||||
All,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// proxy auth, basic_auth
|
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
|
||||||
pub struct ProxyAuth {
|
|
||||||
pub username: String,
|
|
||||||
pub password: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// request proxy
|
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
|
||||||
pub struct GQLProxy {
|
|
||||||
/// schema, proxy url
|
|
||||||
pub schema: String,
|
|
||||||
/// proxy type
|
|
||||||
pub type_: ProxyType,
|
|
||||||
/// auth
|
|
||||||
pub auth: Option<ProxyAuth>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(not(target_arch = "wasm32"))]
|
|
||||||
impl TryFrom<GQLProxy> for reqwest::Proxy {
|
|
||||||
type Error = GraphQLError;
|
|
||||||
|
|
||||||
fn try_from(gql_proxy: GQLProxy) -> Result<Self, Self::Error> {
|
|
||||||
let proxy = match gql_proxy.type_ {
|
|
||||||
ProxyType::Http => reqwest::Proxy::http(gql_proxy.schema),
|
|
||||||
ProxyType::Https => reqwest::Proxy::https(gql_proxy.schema),
|
|
||||||
ProxyType::All => reqwest::Proxy::all(gql_proxy.schema),
|
|
||||||
}
|
|
||||||
.map_err(|e| Self::Error::with_text(format!("{:?}", e)))?;
|
|
||||||
Ok(proxy)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
|
||||||
pub struct GQLClient {
|
|
||||||
config: ClientConfig,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize)]
|
|
||||||
struct RequestBody<T: Serialize> {
|
|
||||||
query: String,
|
|
||||||
variables: T,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Deserialize, Debug)]
|
|
||||||
struct GraphQLResponse<T> {
|
|
||||||
data: Option<T>,
|
|
||||||
errors: Option<Vec<GraphQLErrorMessage>>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl GQLClient {
|
|
||||||
fn client(&self) -> Result<Client, GraphQLError> {
|
|
||||||
let mut builder = Client::builder().timeout(std::time::Duration::from_secs(
|
|
||||||
self.config.timeout.unwrap_or(5),
|
|
||||||
));
|
|
||||||
if let Some(proxy) = &self.config.proxy {
|
|
||||||
builder = builder.proxy(proxy.clone().try_into()?);
|
|
||||||
}
|
|
||||||
builder
|
|
||||||
.build()
|
|
||||||
.map_err(|e| GraphQLError::with_text(format!("Can not create client: {:?}", e)))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl GQLClient {
|
|
||||||
pub fn new(endpoint: impl AsRef<str>) -> Self {
|
|
||||||
Self {
|
|
||||||
config: ClientConfig {
|
|
||||||
endpoint: endpoint.as_ref().to_string(),
|
|
||||||
timeout: None,
|
|
||||||
headers: Default::default(),
|
|
||||||
proxy: None,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn new_with_headers(
|
|
||||||
endpoint: impl AsRef<str>,
|
|
||||||
headers: HashMap<impl ToString, impl ToString>,
|
|
||||||
) -> Self {
|
|
||||||
let _headers: HashMap<String, String> = headers
|
|
||||||
.iter()
|
|
||||||
.map(|(name, value)| (name.to_string(), value.to_string()))
|
|
||||||
.into_iter()
|
|
||||||
.collect();
|
|
||||||
Self {
|
|
||||||
config: ClientConfig {
|
|
||||||
endpoint: endpoint.as_ref().to_string(),
|
|
||||||
timeout: None,
|
|
||||||
headers: Some(_headers),
|
|
||||||
proxy: None,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn new_with_config(config: ClientConfig) -> Self {
|
|
||||||
Self { config }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl GQLClient {
|
|
||||||
pub async fn query<K>(&self, query: &str) -> Result<Option<K>, GraphQLError>
|
|
||||||
where
|
|
||||||
K: for<'de> Deserialize<'de>,
|
|
||||||
{
|
|
||||||
self.query_with_vars::<K, ()>(query, ()).await
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn query_unwrap<K>(&self, query: &str) -> Result<K, GraphQLError>
|
|
||||||
where
|
|
||||||
K: for<'de> Deserialize<'de>,
|
|
||||||
{
|
|
||||||
self.query_with_vars_unwrap::<K, ()>(query, ()).await
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn query_with_vars_unwrap<K, T: Serialize>(
|
|
||||||
&self,
|
|
||||||
query: &str,
|
|
||||||
variables: T,
|
|
||||||
) -> Result<K, GraphQLError>
|
|
||||||
where
|
|
||||||
K: for<'de> Deserialize<'de>,
|
|
||||||
{
|
|
||||||
match self.query_with_vars(query, variables).await? {
|
|
||||||
Some(v) => Ok(v),
|
|
||||||
None => Err(GraphQLError::with_text(format!(
|
|
||||||
"No data from graphql server({}) for this query",
|
|
||||||
self.config.endpoint
|
|
||||||
))),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn query_with_vars<K, T: Serialize>(
|
|
||||||
&self,
|
|
||||||
query: &str,
|
|
||||||
variables: T,
|
|
||||||
) -> Result<Option<K>, GraphQLError>
|
|
||||||
where
|
|
||||||
K: for<'de> Deserialize<'de>,
|
|
||||||
{
|
|
||||||
self.query_with_vars_by_endpoint(&self.config.endpoint, query, variables)
|
|
||||||
.await
|
|
||||||
}
|
|
||||||
|
|
||||||
async fn query_with_vars_by_endpoint<K, T: Serialize>(
|
|
||||||
&self,
|
|
||||||
endpoint: impl AsRef<str>,
|
|
||||||
query: &str,
|
|
||||||
variables: T,
|
|
||||||
) -> Result<Option<K>, GraphQLError>
|
|
||||||
where
|
|
||||||
K: for<'de> Deserialize<'de>,
|
|
||||||
{
|
|
||||||
let mut times = 1;
|
|
||||||
let mut endpoint = endpoint.as_ref().to_string();
|
|
||||||
let endpoint_url = Url::from_str(&endpoint).map_err(|e| {
|
|
||||||
GraphQLError::with_text(format!("Wrong endpoint: {}. {:?}", endpoint, e))
|
|
||||||
})?;
|
|
||||||
let schema = endpoint_url.scheme();
|
|
||||||
let host = endpoint_url
|
|
||||||
.host()
|
|
||||||
.ok_or_else(|| GraphQLError::with_text(format!("Wrong endpoint: {}", endpoint)))?;
|
|
||||||
|
|
||||||
let client: Client = self.client()?;
|
|
||||||
let body = RequestBody {
|
|
||||||
query: query.to_string(),
|
|
||||||
variables,
|
|
||||||
};
|
|
||||||
|
|
||||||
loop {
|
|
||||||
if times > 10 {
|
|
||||||
return Err(GraphQLError::with_text(format!(
|
|
||||||
"Many redirect location: {}",
|
|
||||||
endpoint
|
|
||||||
)));
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut request = client.post(&endpoint).json(&body);
|
|
||||||
if let Some(headers) = &self.config.headers {
|
|
||||||
if !headers.is_empty() {
|
|
||||||
for (name, value) in headers {
|
|
||||||
request = request.header(name, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let raw_response = request.send().await?;
|
|
||||||
if let Some(location) = raw_response.headers().get(reqwest::header::LOCATION) {
|
|
||||||
let redirect_url = location.to_str().map_err(|e| {
|
|
||||||
GraphQLError::with_text(format!(
|
|
||||||
"Failed to parse response header: Location. {:?}",
|
|
||||||
e
|
|
||||||
))
|
|
||||||
})?;
|
|
||||||
|
|
||||||
// if the response location start with http:// or https://
|
|
||||||
if redirect_url.starts_with("http://") || redirect_url.starts_with("https://") {
|
|
||||||
times += 1;
|
|
||||||
endpoint = redirect_url.to_string();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// without schema
|
|
||||||
endpoint = if redirect_url.starts_with('/') {
|
|
||||||
format!("{}://{}{}", schema, host, redirect_url)
|
|
||||||
} else {
|
|
||||||
format!("{}://{}/{}", schema, host, redirect_url)
|
|
||||||
};
|
|
||||||
times += 1;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
let status = raw_response.status();
|
|
||||||
let response_body_text = raw_response
|
|
||||||
.text()
|
|
||||||
.await
|
|
||||||
.map_err(|e| GraphQLError::with_text(format!("Can not get response: {:?}", e)))?;
|
|
||||||
|
|
||||||
let json: GraphQLResponse<K> =
|
|
||||||
serde_json::from_str(&response_body_text).map_err(|e| {
|
|
||||||
GraphQLError::with_text(format!(
|
|
||||||
"Failed to parse response: {:?}. The response body is: {}",
|
|
||||||
e, response_body_text
|
|
||||||
))
|
|
||||||
})?;
|
|
||||||
|
|
||||||
if !status.is_success() {
|
|
||||||
return Err(GraphQLError::with_message_and_json(
|
|
||||||
format!("The response is [{}]", status.as_u16()),
|
|
||||||
json.errors.unwrap_or_default(),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if error messages have been received
|
|
||||||
if json.errors.is_some() {
|
|
||||||
return Err(GraphQLError::with_json(json.errors.unwrap_or_default()));
|
|
||||||
}
|
|
||||||
if json.data.is_none() {
|
|
||||||
tracing::warn!(
|
|
||||||
target = "gql-client",
|
|
||||||
response_text = response_body_text,
|
|
||||||
"The deserialized data is none, the response",
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Ok(json.data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,90 +0,0 @@
|
|||||||
use std::collections::HashMap;
|
|
||||||
use std::sync::Arc;
|
|
||||||
|
|
||||||
use async_trait::async_trait;
|
|
||||||
use base64::engine::general_purpose;
|
|
||||||
use base64::Engine;
|
|
||||||
use thiserror::Error;
|
|
||||||
|
|
||||||
use crate::connect_params::ConnectParams;
|
|
||||||
use crate::gql_client::{ClientConfig, GQLClient};
|
|
||||||
|
|
||||||
#[async_trait]
|
|
||||||
pub trait GraphQLClient {
|
|
||||||
async fn query(&self, query: &str) -> Result<Option<serde_json::Value>, GraphQLError>;
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type DynGraphQLClient = Arc<dyn GraphQLClient + Send + Sync>;
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
|
||||||
pub struct DefaultGraphQLClient {
|
|
||||||
client: GQLClient,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl DefaultGraphQLClient {
|
|
||||||
pub fn new(conn: &ConnectParams) -> Self {
|
|
||||||
let token = general_purpose::URL_SAFE.encode(format!("{}:", conn.session_token));
|
|
||||||
|
|
||||||
let mut headers = HashMap::new();
|
|
||||||
headers.insert("Authorization".to_string(), format!("Basic {}", token));
|
|
||||||
|
|
||||||
Self {
|
|
||||||
client: GQLClient::new_with_config(ClientConfig {
|
|
||||||
endpoint: conn.url(),
|
|
||||||
timeout: Some(1000),
|
|
||||||
headers: Some(headers),
|
|
||||||
proxy: None,
|
|
||||||
}),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[async_trait]
|
|
||||||
impl GraphQLClient for DefaultGraphQLClient {
|
|
||||||
async fn query(&self, query: &str) -> Result<Option<serde_json::Value>, GraphQLError> {
|
|
||||||
let res: Option<serde_json::Value> =
|
|
||||||
self.client.query(&query).await.map_err(map_graphql_error)?;
|
|
||||||
|
|
||||||
return Ok(res);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn map_graphql_error(gql_error: crate::gql_client::GraphQLError) -> GraphQLError {
|
|
||||||
let message = gql_error.message().to_string();
|
|
||||||
let json = gql_error.json();
|
|
||||||
|
|
||||||
if let Some(json) = json {
|
|
||||||
if !json.is_empty() {
|
|
||||||
return GraphQLError::DomainError {
|
|
||||||
message,
|
|
||||||
fields: GraphqlErrorMessages(json.into_iter().map(|e| e.message).collect()),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
GraphQLError::HttpError(message)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Error, Debug)]
|
|
||||||
pub enum GraphQLError {
|
|
||||||
#[error("http error: {0}")]
|
|
||||||
HttpError(String),
|
|
||||||
#[error("domain error:\n{message}\n{fields}")]
|
|
||||||
DomainError {
|
|
||||||
message: String,
|
|
||||||
fields: GraphqlErrorMessages,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
|
||||||
pub struct GraphqlErrorMessages(Vec<String>);
|
|
||||||
|
|
||||||
impl std::fmt::Display for GraphqlErrorMessages {
|
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
||||||
for error in self.0.iter() {
|
|
||||||
f.write_fmt(format_args!("{error}\n"))?;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
}
|
|
@ -241,7 +241,6 @@ pub struct SchemaTypes {
|
|||||||
pub full_type: FullType,
|
pub full_type: FullType,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
|
||||||
#[derive(Clone, Debug, Deserialize)]
|
#[derive(Clone, Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct SchemaDirectivesArgs {
|
pub struct SchemaDirectivesArgs {
|
||||||
@ -258,7 +257,6 @@ pub struct SchemaDirectives {
|
|||||||
pub args: Option<Vec<Option<SchemaDirectivesArgs>>>,
|
pub args: Option<Vec<Option<SchemaDirectivesArgs>>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
|
||||||
#[derive(Clone, Debug, Deserialize)]
|
#[derive(Clone, Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Schema {
|
pub struct Schema {
|
||||||
|
@ -1,16 +1,9 @@
|
|||||||
#![deny(warnings)]
|
|
||||||
|
|
||||||
pub const DAGGER_ENGINE_VERSION: &'static str = "0.5.1";
|
|
||||||
|
|
||||||
pub mod cli_session;
|
pub mod cli_session;
|
||||||
pub mod config;
|
pub mod config;
|
||||||
pub mod connect_params;
|
pub mod connect_params;
|
||||||
pub mod downloader;
|
pub mod downloader;
|
||||||
pub mod engine;
|
pub mod engine;
|
||||||
pub mod gql_client;
|
|
||||||
pub mod graphql_client;
|
|
||||||
pub mod introspection;
|
pub mod introspection;
|
||||||
pub mod logger;
|
|
||||||
pub mod schema;
|
pub mod schema;
|
||||||
pub mod session;
|
pub mod session;
|
||||||
|
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
use std::sync::Arc;
|
|
||||||
|
|
||||||
pub trait Logger {
|
|
||||||
fn stdout(&self, output: &str) -> eyre::Result<()>;
|
|
||||||
fn stderr(&self, output: &str) -> eyre::Result<()>;
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type DynLogger = Arc<dyn Logger + Send + Sync>;
|
|
@ -2,7 +2,7 @@ use crate::introspection::IntrospectionResponse;
|
|||||||
use crate::{config::Config, engine::Engine, session::Session};
|
use crate::{config::Config, engine::Engine, session::Session};
|
||||||
|
|
||||||
pub async fn get_schema() -> eyre::Result<IntrospectionResponse> {
|
pub async fn get_schema() -> eyre::Result<IntrospectionResponse> {
|
||||||
let cfg = Config::default();
|
let cfg = Config::new(None, None, None, None);
|
||||||
|
|
||||||
//TODO: Implement context for proc
|
//TODO: Implement context for proc
|
||||||
let (conn, _proc) = Engine::new().start(&cfg).await?;
|
let (conn, _proc) = Engine::new().start(&cfg).await?;
|
||||||
@ -12,3 +12,13 @@ pub async fn get_schema() -> eyre::Result<IntrospectionResponse> {
|
|||||||
|
|
||||||
Ok(schema)
|
Ok(schema)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::get_schema;
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn can_get_schema() {
|
||||||
|
let _ = get_schema().await.unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -6,368 +6,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|||||||
and this project adheres to
|
and this project adheres to
|
||||||
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## v0.2.22 (2023-04-29)
|
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-2a29a66217fa4d6c530ea1ce670c8836383e7051/> dagger-run support
|
|
||||||
- <csr-id-eb7470c604169d1a15976078c0889d5cc7011257/> update to dagger-5.1
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 2 commits contributed to the release.
|
|
||||||
- 4 days passed between releases.
|
|
||||||
- 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**
|
|
||||||
- dagger-run support ([`2a29a66`](https://github.com/kjuulh/dagger-sdk/commit/2a29a66217fa4d6c530ea1ce670c8836383e7051))
|
|
||||||
- update to dagger-5.1 ([`eb7470c`](https://github.com/kjuulh/dagger-sdk/commit/eb7470c604169d1a15976078c0889d5cc7011257))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.21 (2023-04-25)
|
|
||||||
|
|
||||||
<csr-id-09881ee39bdfb9201d104e4679a51c3b76b5fe27/>
|
|
||||||
|
|
||||||
### Chore
|
|
||||||
|
|
||||||
- <csr-id-09881ee39bdfb9201d104e4679a51c3b76b5fe27/> add new dagger-core-version
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 2 commits contributed to the release.
|
|
||||||
- 21 days passed between releases.
|
|
||||||
- 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.21 ([`6937ef0`](https://github.com/kjuulh/dagger-sdk/commit/6937ef0ace797315013513aa7e2af39a9206a738))
|
|
||||||
- add new dagger-core-version ([`09881ee`](https://github.com/kjuulh/dagger-sdk/commit/09881ee39bdfb9201d104e4679a51c3b76b5fe27))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.20 (2023-04-03)
|
|
||||||
|
|
||||||
<csr-id-ea27fa8168cc54b20fac87c016f479061c6eda91/>
|
|
||||||
<csr-id-6ef4bdf587e4aea290b722e7a0aed3184e72d6bb/>
|
|
||||||
<csr-id-b55bcc159ffc6a61ecfcc5e3aa3de00a1a73b5b8/>
|
|
||||||
|
|
||||||
### Chore
|
|
||||||
|
|
||||||
- <csr-id-ea27fa8168cc54b20fac87c016f479061c6eda91/> fmt
|
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-9ea18700e78a7ee09f43e6976b0339dfc2747458/> with gen
|
|
||||||
- <csr-id-11d20935c697e28caaa671e8da0e70a99d4310fc/> extract client
|
|
||||||
This extracts the client (strategy pattern), this is so that it is will be possible to test the actual querier, without hitting / requiring the dagger-engine running.
|
|
||||||
- <csr-id-384294b39038123b02c406a1038105b111c3b9be/> rename projects to point to github/kjuulh/dagger-sdk
|
|
||||||
- <csr-id-79d931e908c58a0464fd9cf7d6ef02eb50f14c23/> with loggers
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-696007cf45ccbdfc1b8eb45e726940a040f52494/> update rust crate futures to 0.3.28
|
|
||||||
- <csr-id-756a0805336d477f33e7868570a89a86fc14c1dd/> stable input fields and args
|
|
||||||
- <csr-id-71f98d0293a773df3917f13174273c536854a197/> stable enum entries
|
|
||||||
|
|
||||||
### Refactor
|
|
||||||
|
|
||||||
- <csr-id-6ef4bdf587e4aea290b722e7a0aed3184e72d6bb/> add basic cargo make gen command
|
|
||||||
- <csr-id-b55bcc159ffc6a61ecfcc5e3aa3de00a1a73b5b8/> move dagger-rs and adopt workspace.deps
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 11 commits contributed to the release over the course of 19 calendar days.
|
|
||||||
- 20 days passed between releases.
|
|
||||||
- 10 commits were understood as [conventional](https://www.conventionalcommits.org).
|
|
||||||
- 1 unique issue was worked on: [#48](https://github.com/kjuulh/dagger-sdk/issues/48)
|
|
||||||
|
|
||||||
### Commit Details
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
<details><summary>view details</summary>
|
|
||||||
|
|
||||||
* **[#48](https://github.com/kjuulh/dagger-sdk/issues/48)**
|
|
||||||
- extract client ([`11d2093`](https://github.com/kjuulh/dagger-sdk/commit/11d20935c697e28caaa671e8da0e70a99d4310fc))
|
|
||||||
* **Uncategorized**
|
|
||||||
- Release dagger-core v0.2.9, dagger-sdk v0.2.20 ([`f82075c`](https://github.com/kjuulh/dagger-sdk/commit/f82075c23808073d9500df63c1cd347cd9b99cef))
|
|
||||||
- with gen ([`9ea1870`](https://github.com/kjuulh/dagger-sdk/commit/9ea18700e78a7ee09f43e6976b0339dfc2747458))
|
|
||||||
- update rust crate futures to 0.3.28 ([`696007c`](https://github.com/kjuulh/dagger-sdk/commit/696007cf45ccbdfc1b8eb45e726940a040f52494))
|
|
||||||
- rename projects to point to github/kjuulh/dagger-sdk ([`384294b`](https://github.com/kjuulh/dagger-sdk/commit/384294b39038123b02c406a1038105b111c3b9be))
|
|
||||||
- with loggers ([`79d931e`](https://github.com/kjuulh/dagger-sdk/commit/79d931e908c58a0464fd9cf7d6ef02eb50f14c23))
|
|
||||||
- stable input fields and args ([`756a080`](https://github.com/kjuulh/dagger-sdk/commit/756a0805336d477f33e7868570a89a86fc14c1dd))
|
|
||||||
- fmt ([`ea27fa8`](https://github.com/kjuulh/dagger-sdk/commit/ea27fa8168cc54b20fac87c016f479061c6eda91))
|
|
||||||
- stable enum entries ([`71f98d0`](https://github.com/kjuulh/dagger-sdk/commit/71f98d0293a773df3917f13174273c536854a197))
|
|
||||||
- add basic cargo make gen command ([`6ef4bdf`](https://github.com/kjuulh/dagger-sdk/commit/6ef4bdf587e4aea290b722e7a0aed3184e72d6bb))
|
|
||||||
- move dagger-rs and adopt workspace.deps ([`b55bcc1`](https://github.com/kjuulh/dagger-sdk/commit/b55bcc159ffc6a61ecfcc5e3aa3de00a1a73b5b8))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.19 (2023-03-14)
|
|
||||||
|
|
||||||
<csr-id-6629d2db4fbc7cdba9b2e4a241e4b0a2592cf384/>
|
|
||||||
|
|
||||||
### Chore
|
|
||||||
|
|
||||||
- <csr-id-6629d2db4fbc7cdba9b2e4a241e4b0a2592cf384/> fix release version
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-8fd6bb983ef00b1aa2cf1ba3088028329033c38f/> serialization of enum args for graphql
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 3 commits contributed to the release.
|
|
||||||
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
|
|
||||||
- 1 unique issue was worked on: [#34](https://github.com/kjuulh/dagger-sdk/issues/34)
|
|
||||||
|
|
||||||
### Commit Details
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
<details><summary>view details</summary>
|
|
||||||
|
|
||||||
* **[#34](https://github.com/kjuulh/dagger-sdk/issues/34)**
|
|
||||||
- serialization of enum args for graphql ([`8fd6bb9`](https://github.com/kjuulh/dagger-sdk/commit/8fd6bb983ef00b1aa2cf1ba3088028329033c38f))
|
|
||||||
* **Uncategorized**
|
|
||||||
- Release dagger-sdk v0.2.19 ([`76fab3f`](https://github.com/kjuulh/dagger-sdk/commit/76fab3f4662020c33af9b57daed715f6f65a8c7c))
|
|
||||||
- fix release version ([`6629d2d`](https://github.com/kjuulh/dagger-sdk/commit/6629d2db4fbc7cdba9b2e4a241e4b0a2592cf384))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.17 (2023-03-13)
|
|
||||||
|
|
||||||
<csr-id-f67928155f02076cbb41abd4010523879ff3caf1/>
|
|
||||||
<csr-id-2cc0231c5f29993081f0f7e15e44cac95a7d6086/>
|
|
||||||
<csr-id-9ba01396cb44ee02cf7a16008e3f0bdae9f78754/>
|
|
||||||
<csr-id-e9e35edb1cb67eee8cc033212aba3b1888def78f/>
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-1bfd084cd28e2b984c61de7f3f9a065cc41be007/> make sure tests have a command to execute
|
|
||||||
- <csr-id-5593fce2e16e0aa97a2e6843f15d3bb1121048f5/> remove unused imports
|
|
||||||
- <csr-id-c025d1742482d701946c292dcf104421d3cade8e/> add support for String as well
|
|
||||||
- <csr-id-d7317e5cf34ee84a7b092357f5fbb15cd2bae2e3/> add public tuple field and into func
|
|
||||||
- <csr-id-44fa0240f8197f49fdf942b5c3d89079b59195d1/> update rust crate futures to 0.3.27
|
|
||||||
|
|
||||||
### Other
|
|
||||||
|
|
||||||
- <csr-id-f67928155f02076cbb41abd4010523879ff3caf1/> initial issue
|
|
||||||
|
|
||||||
### Refactor
|
|
||||||
|
|
||||||
- <csr-id-2cc0231c5f29993081f0f7e15e44cac95a7d6086/> remove export and instead use exitcode
|
|
||||||
- <csr-id-9ba01396cb44ee02cf7a16008e3f0bdae9f78754/> move issues to actual tests and refactor
|
|
||||||
- <csr-id-e9e35edb1cb67eee8cc033212aba3b1888def78f/> move issues to another folder
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 10 commits contributed to the release over the course of 2 calendar days.
|
|
||||||
- 2 days passed between releases.
|
|
||||||
- 9 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.17 ([`a8e6dde`](https://github.com/kjuulh/dagger-sdk/commit/a8e6dde615029d9a94d159ed84b5373121cd201f))
|
|
||||||
- make sure tests have a command to execute ([`1bfd084`](https://github.com/kjuulh/dagger-sdk/commit/1bfd084cd28e2b984c61de7f3f9a065cc41be007))
|
|
||||||
- remove unused imports ([`5593fce`](https://github.com/kjuulh/dagger-sdk/commit/5593fce2e16e0aa97a2e6843f15d3bb1121048f5))
|
|
||||||
- remove export and instead use exitcode ([`2cc0231`](https://github.com/kjuulh/dagger-sdk/commit/2cc0231c5f29993081f0f7e15e44cac95a7d6086))
|
|
||||||
- move issues to actual tests and refactor ([`9ba0139`](https://github.com/kjuulh/dagger-sdk/commit/9ba01396cb44ee02cf7a16008e3f0bdae9f78754))
|
|
||||||
- add support for String as well ([`c025d17`](https://github.com/kjuulh/dagger-sdk/commit/c025d1742482d701946c292dcf104421d3cade8e))
|
|
||||||
- move issues to another folder ([`e9e35ed`](https://github.com/kjuulh/dagger-sdk/commit/e9e35edb1cb67eee8cc033212aba3b1888def78f))
|
|
||||||
- add public tuple field and into func ([`d7317e5`](https://github.com/kjuulh/dagger-sdk/commit/d7317e5cf34ee84a7b092357f5fbb15cd2bae2e3))
|
|
||||||
- initial issue ([`f679281`](https://github.com/kjuulh/dagger-sdk/commit/f67928155f02076cbb41abd4010523879ff3caf1))
|
|
||||||
- update rust crate futures to 0.3.27 ([`44fa024`](https://github.com/kjuulh/dagger-sdk/commit/44fa0240f8197f49fdf942b5c3d89079b59195d1))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.16 (2023-03-10)
|
|
||||||
|
|
||||||
<csr-id-e642778d9028726dfb07217814e15ad1dd3b83f2/>
|
|
||||||
|
|
||||||
### Chore
|
|
||||||
|
|
||||||
- <csr-id-e642778d9028726dfb07217814e15ad1dd3b83f2/> fix tasks
|
|
||||||
|
|
||||||
### Documentation
|
|
||||||
|
|
||||||
- <csr-id-13b7805e7e6fcf47e0a1318adcc25b4ab773a3c9/> fix missing await in connect
|
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-7133bfae9508bc5977548e373c49342a1248d6e4/> with dagger-engine v.0.4.0
|
|
||||||
- <csr-id-4381af029521c2cbac9325278d261db79a994657/> add tests to sdk
|
|
||||||
- <csr-id-5f9b3a19c0ab6988bc335b020052074f3f101305/> set internal warnings as errors
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-ecca036bc644fee93fbcb69bf6da9f29169e473e/> fix builder pattern to actually work with default values
|
|
||||||
In previous versions the builder pattern required all values to be set.
|
|
||||||
This has not been fixed, so that default values are allowed.
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 7 commits contributed to the release over the course of 13 calendar days.
|
|
||||||
- 13 days passed between releases.
|
|
||||||
- 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**
|
|
||||||
- Release dagger-core v0.2.8, dagger-sdk v0.2.16 ([`f390eac`](https://github.com/kjuulh/dagger-sdk/commit/f390eac29f1d041d18d2207a5aa0a8d993aab68c))
|
|
||||||
- fix tasks ([`e642778`](https://github.com/kjuulh/dagger-sdk/commit/e642778d9028726dfb07217814e15ad1dd3b83f2))
|
|
||||||
- with dagger-engine v.0.4.0 ([`7133bfa`](https://github.com/kjuulh/dagger-sdk/commit/7133bfae9508bc5977548e373c49342a1248d6e4))
|
|
||||||
- fix missing await in connect ([`13b7805`](https://github.com/kjuulh/dagger-sdk/commit/13b7805e7e6fcf47e0a1318adcc25b4ab773a3c9))
|
|
||||||
- add tests to sdk ([`4381af0`](https://github.com/kjuulh/dagger-sdk/commit/4381af029521c2cbac9325278d261db79a994657))
|
|
||||||
- set internal warnings as errors ([`5f9b3a1`](https://github.com/kjuulh/dagger-sdk/commit/5f9b3a19c0ab6988bc335b020052074f3f101305))
|
|
||||||
- fix builder pattern to actually work with default values ([`ecca036`](https://github.com/kjuulh/dagger-sdk/commit/ecca036bc644fee93fbcb69bf6da9f29169e473e))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.15 (2023-02-24)
|
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-3e8ca8d86eafdc1f9d5e8b69f14fb60509549e0f/> update to dagger-v0.3.13
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-e578b0e371e13bc30ada793b7cd6ebe75ba83a07/> set deserialize on enums as well
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 3 commits contributed to the release.
|
|
||||||
- 2 days passed between releases.
|
|
||||||
- 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-core v0.2.7, dagger-sdk v0.2.15 ([`6a9a560`](https://github.com/kjuulh/dagger-sdk/commit/6a9a560cdca097abf23371d44599a2f1b726ae7f))
|
|
||||||
- set deserialize on enums as well ([`e578b0e`](https://github.com/kjuulh/dagger-sdk/commit/e578b0e371e13bc30ada793b7cd6ebe75ba83a07))
|
|
||||||
- update to dagger-v0.3.13 ([`3e8ca8d`](https://github.com/kjuulh/dagger-sdk/commit/3e8ca8d86eafdc1f9d5e8b69f14fb60509549e0f))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.14 (2023-02-22)
|
|
||||||
|
|
||||||
<csr-id-e331ca003546f4ebe00f33b65c3b45c6b0586514/>
|
|
||||||
|
|
||||||
### Chore
|
|
||||||
|
|
||||||
- <csr-id-e331ca003546f4ebe00f33b65c3b45c6b0586514/> fix whitespace
|
|
||||||
|
|
||||||
### 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.14 ([`88b055c`](https://github.com/kjuulh/dagger-sdk/commit/88b055cb47d3d474e2c37d8fa8259df5faad9da5))
|
|
||||||
- fix whitespace ([`e331ca0`](https://github.com/kjuulh/dagger-sdk/commit/e331ca003546f4ebe00f33b65c3b45c6b0586514))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.13 (2023-02-22)
|
|
||||||
|
|
||||||
<csr-id-7c3654d276bb5f66e692a210cb60cdf46b19e226/>
|
|
||||||
<csr-id-1f77d90c0f0ac832a181b2322350ea395612986c/>
|
|
||||||
|
|
||||||
### Chore
|
|
||||||
|
|
||||||
- <csr-id-7c3654d276bb5f66e692a210cb60cdf46b19e226/> ran clippy
|
|
||||||
- <csr-id-1f77d90c0f0ac832a181b2322350ea395612986c/> ran clippy
|
|
||||||
|
|
||||||
### New Features
|
|
||||||
|
|
||||||
- <csr-id-266ad32dff4c8957c7cdd291f9ef6f8a8c1d055c/> with clone
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-a13a2a9ecbfdfac80ed8eb0cbb9e9db317da65de/> race condition in process
|
|
||||||
|
|
||||||
### Commit Statistics
|
|
||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
|
||||||
|
|
||||||
- 7 commits contributed to the release over the course of 2 calendar days.
|
|
||||||
- 2 days passed between releases.
|
|
||||||
- 4 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-codegen v0.2.8, dagger-sdk v0.2.13 ([`456f483`](https://github.com/kjuulh/dagger-sdk/commit/456f48389b5514d7f743a600a7732fb02dd87418))
|
|
||||||
- ran clippy ([`7c3654d`](https://github.com/kjuulh/dagger-sdk/commit/7c3654d276bb5f66e692a210cb60cdf46b19e226))
|
|
||||||
- with clone ([`266ad32`](https://github.com/kjuulh/dagger-sdk/commit/266ad32dff4c8957c7cdd291f9ef6f8a8c1d055c))
|
|
||||||
- Release dagger-core v0.2.6, dagger-codegen v0.2.7, dagger-sdk v0.2.12 ([`7179f8b`](https://github.com/kjuulh/dagger-sdk/commit/7179f8b598ef04e62925e39d3f55740253c01686))
|
|
||||||
- ran clippy ([`1f77d90`](https://github.com/kjuulh/dagger-sdk/commit/1f77d90c0f0ac832a181b2322350ea395612986c))
|
|
||||||
- Release dagger-core v0.2.5, dagger-sdk v0.2.12, dagger-codegen v0.2.7 ([`1725c51`](https://github.com/kjuulh/dagger-sdk/commit/1725c5188e8a81069ec4a4de569484c921a94927))
|
|
||||||
- race condition in process ([`a13a2a9`](https://github.com/kjuulh/dagger-sdk/commit/a13a2a9ecbfdfac80ed8eb0cbb9e9db317da65de))
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## v0.2.12 (2023-02-20)
|
|
||||||
|
|
||||||
<csr-id-1f77d90c0f0ac832a181b2322350ea395612986c/>
|
|
||||||
|
|
||||||
### Chore
|
|
||||||
|
|
||||||
- <csr-id-1f77d90c0f0ac832a181b2322350ea395612986c/> ran clippy
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- <csr-id-a13a2a9ecbfdfac80ed8eb0cbb9e9db317da65de/> race condition in process
|
|
||||||
|
|
||||||
## v0.2.11 (2023-02-20)
|
## v0.2.11 (2023-02-20)
|
||||||
|
|
||||||
<csr-id-803cfc4f8c4d72ab7d011be5523b3bfc6039de39/>
|
<csr-id-803cfc4f8c4d72ab7d011be5523b3bfc6039de39/>
|
||||||
@ -380,7 +18,7 @@ and this project adheres to
|
|||||||
|
|
||||||
<csr-read-only-do-not-edit/>
|
<csr-read-only-do-not-edit/>
|
||||||
|
|
||||||
- 3 commits contributed to the release.
|
- 2 commits contributed to the release.
|
||||||
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
|
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
|
||||||
- 0 issues like '(#ID)' were seen in commit messages
|
- 0 issues like '(#ID)' were seen in commit messages
|
||||||
|
|
||||||
@ -391,9 +29,8 @@ and this project adheres to
|
|||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- Release dagger-core v0.2.4, dagger-codegen v0.2.6, dagger-sdk v0.2.11 ([`f869e57`](https://github.com/kjuulh/dagger-sdk/commit/f869e574dd788cd60e5b1b5d502bec68e300694c))
|
- Release dagger-core v0.2.4, dagger-codegen v0.2.6, dagger-sdk v0.2.11 ([`17ec62a`](https://github.com/kjuulh/dagger-rs/commit/17ec62a5d58232ff57391523b9851fb7b07d02ab))
|
||||||
- Release dagger-core v0.2.4, dagger-codegen v0.2.6, dagger-sdk v0.2.11 ([`17ec62a`](https://github.com/kjuulh/dagger-sdk/commit/17ec62a5d58232ff57391523b9851fb7b07d02ab))
|
- ran clippy ([`803cfc4`](https://github.com/kjuulh/dagger-rs/commit/803cfc4f8c4d72ab7d011be5523b3bfc6039de39))
|
||||||
- ran clippy ([`803cfc4`](https://github.com/kjuulh/dagger-sdk/commit/803cfc4f8c4d72ab7d011be5523b3bfc6039de39))
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## v0.2.10 (2023-02-20)
|
## v0.2.10 (2023-02-20)
|
||||||
@ -419,14 +56,14 @@ Alignment release
|
|||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- Release dagger-sdk v0.2.10 ([`5cb9729`](https://github.com/kjuulh/dagger-sdk/commit/5cb97296b61677fb37e4bdb8519d30a484f93621))
|
- Release dagger-sdk v0.2.10 ([`5cb9729`](https://github.com/kjuulh/dagger-rs/commit/5cb97296b61677fb37e4bdb8519d30a484f93621))
|
||||||
- changelog ([`b100285`](https://github.com/kjuulh/dagger-sdk/commit/b100285312df522218bfd4bc00bbf41b857a81bf))
|
- changelog ([`b100285`](https://github.com/kjuulh/dagger-rs/commit/b100285312df522218bfd4bc00bbf41b857a81bf))
|
||||||
- Adjusting changelogs prior to release of dagger-sdk v0.2.10 ([`8ed0647`](https://github.com/kjuulh/dagger-sdk/commit/8ed06476e56f3290a419d2a67e7f25da575c63ad))
|
- Adjusting changelogs prior to release of dagger-sdk v0.2.10 ([`8ed0647`](https://github.com/kjuulh/dagger-rs/commit/8ed06476e56f3290a419d2a67e7f25da575c63ad))
|
||||||
- update changelog ([`09aa658`](https://github.com/kjuulh/dagger-sdk/commit/09aa658b6fb3c1e9a2de668c4a69bbe5be13202f))
|
- update changelog ([`09aa658`](https://github.com/kjuulh/dagger-rs/commit/09aa658b6fb3c1e9a2de668c4a69bbe5be13202f))
|
||||||
- Adjusting changelogs prior to release of dagger-sdk v0.2.10 ([`b436f27`](https://github.com/kjuulh/dagger-sdk/commit/b436f27a535f085bb8a4e66c7c4b3df461e74c21))
|
- Adjusting changelogs prior to release of dagger-sdk v0.2.10 ([`b436f27`](https://github.com/kjuulh/dagger-rs/commit/b436f27a535f085bb8a4e66c7c4b3df461e74c21))
|
||||||
- Adjusting changelogs prior to release of dagger-sdk v0.2.10, dagger-rs v0.2.10 ([`577a293`](https://github.com/kjuulh/dagger-sdk/commit/577a293c6777b9305a4f5fc7c3abee4aff4d74b5))
|
- Adjusting changelogs prior to release of dagger-sdk v0.2.10, dagger-rs v0.2.10 ([`577a293`](https://github.com/kjuulh/dagger-rs/commit/577a293c6777b9305a4f5fc7c3abee4aff4d74b5))
|
||||||
- Adjusting changelogs prior to release of dagger-sdk v0.2.10, dagger-rs v0.2.10 ([`76bb1fc`](https://github.com/kjuulh/dagger-sdk/commit/76bb1fcedd03bd2d3b1e0f841f10325e4a85e108))
|
- Adjusting changelogs prior to release of dagger-sdk v0.2.10, dagger-rs v0.2.10 ([`76bb1fc`](https://github.com/kjuulh/dagger-rs/commit/76bb1fcedd03bd2d3b1e0f841f10325e4a85e108))
|
||||||
- Release dagger-rs v0.2.10 ([`dc3487b`](https://github.com/kjuulh/dagger-sdk/commit/dc3487b840beb9543699f72d4282147e4ebc72f2))
|
- Release dagger-rs v0.2.10 ([`dc3487b`](https://github.com/kjuulh/dagger-rs/commit/dc3487b840beb9543699f72d4282147e4ebc72f2))
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## v0.2.10
|
## v0.2.10
|
||||||
@ -479,8 +116,8 @@ Alignment release
|
|||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- Release dagger-core v0.2.3, dagger-sdk v0.2.9, dagger-rs v0.2.10 ([`82de43a`](https://github.com/kjuulh/dagger-sdk/commit/82de43aa91d6a5e09a247d1959137fdc36a40d35))
|
- Release dagger-core v0.2.3, dagger-sdk v0.2.9, dagger-rs v0.2.10 ([`82de43a`](https://github.com/kjuulh/dagger-rs/commit/82de43aa91d6a5e09a247d1959137fdc36a40d35))
|
||||||
- Fix async panic on blocking #19 ([`75bc17e`](https://github.com/kjuulh/dagger-sdk/commit/75bc17e57db222492c6ffd2dfe80208d2bda75c9))
|
- Fix async panic on blocking #19 ([`75bc17e`](https://github.com/kjuulh/dagger-rs/commit/75bc17e57db222492c6ffd2dfe80208d2bda75c9))
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## v0.2.8 (2023-02-19)
|
## v0.2.8 (2023-02-19)
|
||||||
@ -504,8 +141,8 @@ Alignment release
|
|||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- Release dagger-sdk v0.2.8, dagger-codegen v0.2.5 ([`0499024`](https://github.com/kjuulh/dagger-sdk/commit/04990247ba8e9d0555847f582fef14849dbedebf))
|
- Release dagger-sdk v0.2.8, dagger-codegen v0.2.5 ([`0499024`](https://github.com/kjuulh/dagger-rs/commit/04990247ba8e9d0555847f582fef14849dbedebf))
|
||||||
- add documentation strings ([`978ede6`](https://github.com/kjuulh/dagger-sdk/commit/978ede68ae52f5b5150a2aa45b8d6e1fbbbee2f4))
|
- add documentation strings ([`978ede6`](https://github.com/kjuulh/dagger-rs/commit/978ede68ae52f5b5150a2aa45b8d6e1fbbbee2f4))
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## v0.2.7 (2023-02-19)
|
## v0.2.7 (2023-02-19)
|
||||||
@ -554,9 +191,9 @@ Alignment release
|
|||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- Release dagger-sdk v0.2.7 ([`a1887af`](https://github.com/kjuulh/dagger-sdk/commit/a1887afc8b51f61491ba7f13c5e7a5b7619623c4))
|
- Release dagger-sdk v0.2.7 ([`a1887af`](https://github.com/kjuulh/dagger-rs/commit/a1887afc8b51f61491ba7f13c5e7a5b7619623c4))
|
||||||
- change to await syntax ([`93f40b3`](https://github.com/kjuulh/dagger-sdk/commit/93f40b356c48f14e910968516bed9487912095c1))
|
- change to await syntax ([`93f40b3`](https://github.com/kjuulh/dagger-rs/commit/93f40b356c48f14e910968516bed9487912095c1))
|
||||||
- Use async runtime instead of blocking. ([`9be6f43`](https://github.com/kjuulh/dagger-sdk/commit/9be6f435d9ea39f31a8906e55dbd3e8b1e5ec598))
|
- Use async runtime instead of blocking. ([`9be6f43`](https://github.com/kjuulh/dagger-rs/commit/9be6f435d9ea39f31a8906e55dbd3e8b1e5ec598))
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## v0.2.6 (2023-02-19)
|
## v0.2.6 (2023-02-19)
|
||||||
@ -580,8 +217,8 @@ Alignment release
|
|||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- Release dagger-sdk v0.2.6 ([`c312bc5`](https://github.com/kjuulh/dagger-sdk/commit/c312bc57ad3e5380b6a2a927f3bb758aa5344efd))
|
- Release dagger-sdk v0.2.6 ([`c312bc5`](https://github.com/kjuulh/dagger-rs/commit/c312bc57ad3e5380b6a2a927f3bb758aa5344efd))
|
||||||
- fix readme ([`04e70ce`](https://github.com/kjuulh/dagger-sdk/commit/04e70ce964b343e28b3dbd0c46d10ccda958ab8c))
|
- fix readme ([`04e70ce`](https://github.com/kjuulh/dagger-rs/commit/04e70ce964b343e28b3dbd0c46d10ccda958ab8c))
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## v0.2.5 (2023-02-19)
|
## v0.2.5 (2023-02-19)
|
||||||
@ -642,13 +279,13 @@ Alignment release
|
|||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- Release dagger-sdk v0.2.5, dagger-codegen v0.2.4 ([`f727318`](https://github.com/kjuulh/dagger-sdk/commit/f72731807d8358fdb3d80432136b7a08bb7b1773))
|
- Release dagger-sdk v0.2.5, dagger-codegen v0.2.4 ([`f727318`](https://github.com/kjuulh/dagger-rs/commit/f72731807d8358fdb3d80432136b7a08bb7b1773))
|
||||||
- cargo clippy ([`c627595`](https://github.com/kjuulh/dagger-sdk/commit/c627595fd2695e236924175d137c42f1480ccd6b))
|
- cargo clippy ([`c627595`](https://github.com/kjuulh/dagger-rs/commit/c627595fd2695e236924175d137c42f1480ccd6b))
|
||||||
- without Some in _opts functions ([`f29ff83`](https://github.com/kjuulh/dagger-sdk/commit/f29ff836cfd72d5e051ca6a71a230ba1e9933091))
|
- without Some in _opts functions ([`f29ff83`](https://github.com/kjuulh/dagger-rs/commit/f29ff836cfd72d5e051ca6a71a230ba1e9933091))
|
||||||
- with _opts methods ([`9762da8`](https://github.com/kjuulh/dagger-sdk/commit/9762da895a164e30c5dc60e89a83e934ceae47ab))
|
- with _opts methods ([`9762da8`](https://github.com/kjuulh/dagger-rs/commit/9762da895a164e30c5dc60e89a83e934ceae47ab))
|
||||||
- without phantom data ([`02006d4`](https://github.com/kjuulh/dagger-sdk/commit/02006d40fc2c0383e0412c15c36db9af7eda991f))
|
- 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-sdk/commit/94336d06378f035464e233b921dc3858070f582d))
|
- 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-sdk/commit/6e2292cf11942fbd26a52fe4e0fc8471e6eb70a3))
|
- dependencies ([`6e2292c`](https://github.com/kjuulh/dagger-rs/commit/6e2292cf11942fbd26a52fe4e0fc8471e6eb70a3))
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## v0.2.4 (2023-02-19)
|
## v0.2.4 (2023-02-19)
|
||||||
@ -673,8 +310,8 @@ Alignment release
|
|||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- Release dagger-sdk v0.2.4 ([`cc81124`](https://github.com/kjuulh/dagger-sdk/commit/cc81124f899f44f80c1ee7d1e23a7e02d8cc4b7c))
|
- 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-sdk/commit/7d04ab1240e497e7804fed23a378d28c78f50a0a))
|
- readme dagger-rs -> dagger-sdk ([`7d04ab1`](https://github.com/kjuulh/dagger-rs/commit/7d04ab1240e497e7804fed23a378d28c78f50a0a))
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## v0.2.3 (2023-02-19)
|
## v0.2.3 (2023-02-19)
|
||||||
@ -704,10 +341,10 @@ Alignment release
|
|||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- Release dagger-sdk v0.2.3, dagger-codegen v0.2.3, dagger-rs v0.2.9 ([`9235030`](https://github.com/kjuulh/dagger-sdk/commit/92350306b3f0da40b4fc6dcaffcd90b891e83f70))
|
- 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-sdk/commit/19ed6c267f779b72430422c463ceed553f6fc618))
|
- 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-sdk/commit/de063eae858eb3335d2558a57ee6a88689635200))
|
- 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-sdk/commit/5d667369900a47d3a6015cd3814c240bc5c54436))
|
- remove unnecessary option returns ([`5d66736`](https://github.com/kjuulh/dagger-rs/commit/5d667369900a47d3a6015cd3814c240bc5c54436))
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## v0.2.2 (2023-02-19)
|
## v0.2.2 (2023-02-19)
|
||||||
@ -735,10 +372,10 @@ Alignment release
|
|||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- Release dagger-sdk v0.2.2 ([`e921ba1`](https://github.com/kjuulh/dagger-sdk/commit/e921ba13638987ccf5beaa48c4be9be5fd879bd0))
|
- 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-sdk/commit/1638f15fba9d16512e8452f87b908d6dce417cd9))
|
- Release dagger-core v0.2.2, dagger-codegen v0.2.2, dagger-rs v0.2.8 ([`1638f15`](https://github.com/kjuulh/dagger-rs/commit/1638f15fba9d16512e8452f87b908d6dce417cd9))
|
||||||
- fixed fmt errors ([`10bc6f3`](https://github.com/kjuulh/dagger-sdk/commit/10bc6f3846b65cc82c2fb343d8cfe921784bef1b))
|
- fixed fmt errors ([`10bc6f3`](https://github.com/kjuulh/dagger-rs/commit/10bc6f3846b65cc82c2fb343d8cfe921784bef1b))
|
||||||
- update to dagger v0.3.12 ([`6e5f407`](https://github.com/kjuulh/dagger-sdk/commit/6e5f4074329ab0462445b31d4153f8497c483438))
|
- update to dagger v0.3.12 ([`6e5f407`](https://github.com/kjuulh/dagger-rs/commit/6e5f4074329ab0462445b31d4153f8497c483438))
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## v0.2.1 (2023-02-18)
|
## v0.2.1 (2023-02-18)
|
||||||
@ -753,7 +390,7 @@ Alignment release
|
|||||||
|
|
||||||
- 40 commits contributed to the release over the course of 20 calendar days.
|
- 40 commits contributed to the release over the course of 20 calendar days.
|
||||||
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
|
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
|
||||||
- 2 unique issues were worked on: [#5](https://github.com/kjuulh/dagger-sdk/issues/5), [#6](https://github.com/kjuulh/dagger-sdk/issues/6)
|
- 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
|
### Commit Details
|
||||||
|
|
||||||
@ -761,48 +398,48 @@ Alignment release
|
|||||||
|
|
||||||
<details><summary>view details</summary>
|
<details><summary>view details</summary>
|
||||||
|
|
||||||
* **[#5](https://github.com/kjuulh/dagger-sdk/issues/5)**
|
* **[#5](https://github.com/kjuulh/dagger-rs/issues/5)**
|
||||||
- update all dependencies ([`789b0e6`](https://github.com/kjuulh/dagger-sdk/commit/789b0e69c8c53d0e86d9cec89ab5345507aad514))
|
- update all dependencies ([`789b0e6`](https://github.com/kjuulh/dagger-rs/commit/789b0e69c8c53d0e86d9cec89ab5345507aad514))
|
||||||
* **[#6](https://github.com/kjuulh/dagger-sdk/issues/6)**
|
* **[#6](https://github.com/kjuulh/dagger-rs/issues/6)**
|
||||||
- feature/add impl ([`4a4c03f`](https://github.com/kjuulh/dagger-sdk/commit/4a4c03f3c2ee7f6268c65976715e70767b4ea78d))
|
- feature/add impl ([`4a4c03f`](https://github.com/kjuulh/dagger-rs/commit/4a4c03f3c2ee7f6268c65976715e70767b4ea78d))
|
||||||
* **Uncategorized**
|
* **Uncategorized**
|
||||||
- Release dagger-sdk v0.2.1 ([`aa0c397`](https://github.com/kjuulh/dagger-sdk/commit/aa0c397b15566840eb59ca6186c083f631cc460b))
|
- 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-sdk/commit/11a5247933736bc6a4c5300c29599c88597fefb7))
|
- 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-sdk/commit/20c71189f6d5d978286ee16f8e958c6045756d80))
|
- 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-sdk/commit/f4a20fda79063b29829cc899793775ba8cb17214))
|
- 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-sdk/commit/7153c24f0105a05f170efd10ef2535d83ce0c87e))
|
- with actual versions ([`7153c24`](https://github.com/kjuulh/dagger-rs/commit/7153c24f0105a05f170efd10ef2535d83ce0c87e))
|
||||||
- with publish ([`989d5bc`](https://github.com/kjuulh/dagger-sdk/commit/989d5bc26036d46a199d939b5cbbe72aff2f8fb1))
|
- with publish ([`989d5bc`](https://github.com/kjuulh/dagger-rs/commit/989d5bc26036d46a199d939b5cbbe72aff2f8fb1))
|
||||||
- with repo ([`e5383b5`](https://github.com/kjuulh/dagger-sdk/commit/e5383b51f3b290a87b729929c377e93bda3873e0))
|
- with repo ([`e5383b5`](https://github.com/kjuulh/dagger-rs/commit/e5383b51f3b290a87b729929c377e93bda3873e0))
|
||||||
- with wildcard version ([`533b9df`](https://github.com/kjuulh/dagger-sdk/commit/533b9dfef0165c514127a8437d08daf52adf5739))
|
- with wildcard version ([`533b9df`](https://github.com/kjuulh/dagger-rs/commit/533b9dfef0165c514127a8437d08daf52adf5739))
|
||||||
- cargo version 0.2.0 ([`bec62de`](https://github.com/kjuulh/dagger-sdk/commit/bec62de62ff5638428174e232a36eee3ddd0f5ef))
|
- cargo version 0.2.0 ([`bec62de`](https://github.com/kjuulh/dagger-rs/commit/bec62de62ff5638428174e232a36eee3ddd0f5ef))
|
||||||
- bump version ([`36b0ecd`](https://github.com/kjuulh/dagger-sdk/commit/36b0ecdabf4c220cffb2d0660fb6480387e3249a))
|
- bump version ([`36b0ecd`](https://github.com/kjuulh/dagger-rs/commit/36b0ecdabf4c220cffb2d0660fb6480387e3249a))
|
||||||
- document usage ([`578c2a6`](https://github.com/kjuulh/dagger-sdk/commit/578c2a68830eb40da888823a8770af4a764ed4c7))
|
- document usage ([`578c2a6`](https://github.com/kjuulh/dagger-rs/commit/578c2a68830eb40da888823a8770af4a764ed4c7))
|
||||||
- fix all clippy ([`6be8482`](https://github.com/kjuulh/dagger-sdk/commit/6be8482b461e098384bbf1371ed7d67b259197fa))
|
- fix all clippy ([`6be8482`](https://github.com/kjuulh/dagger-rs/commit/6be8482b461e098384bbf1371ed7d67b259197fa))
|
||||||
- add with dockerfile ([`0cbd179`](https://github.com/kjuulh/dagger-sdk/commit/0cbd1790b0b4030c68f0a0dd619325da26f14f60))
|
- add with dockerfile ([`0cbd179`](https://github.com/kjuulh/dagger-rs/commit/0cbd1790b0b4030c68f0a0dd619325da26f14f60))
|
||||||
- with caching ([`728840c`](https://github.com/kjuulh/dagger-sdk/commit/728840ca8e48b8bec66da4e5fa677bfa60d1d147))
|
- with caching ([`728840c`](https://github.com/kjuulh/dagger-rs/commit/728840ca8e48b8bec66da4e5fa677bfa60d1d147))
|
||||||
- add more quickstart ([`59e2572`](https://github.com/kjuulh/dagger-sdk/commit/59e2572173872c8091a0613a387a01e0cccc51bf))
|
- add more quickstart ([`59e2572`](https://github.com/kjuulh/dagger-rs/commit/59e2572173872c8091a0613a387a01e0cccc51bf))
|
||||||
- build the application ([`d894def`](https://github.com/kjuulh/dagger-sdk/commit/d894def70c85ff2fc567bf614e3be6f4134965e2))
|
- build the application ([`d894def`](https://github.com/kjuulh/dagger-rs/commit/d894def70c85ff2fc567bf614e3be6f4134965e2))
|
||||||
- add test-the-application ([`cb9a4dd`](https://github.com/kjuulh/dagger-sdk/commit/cb9a4dd84fc13ef03ca3ad539646e95c3c047676))
|
- add test-the-application ([`cb9a4dd`](https://github.com/kjuulh/dagger-rs/commit/cb9a4dd84fc13ef03ca3ad539646e95c3c047676))
|
||||||
- with println ([`d1726a0`](https://github.com/kjuulh/dagger-sdk/commit/d1726a052a6dc4e57f364864446cab3cbda7e0bf))
|
- with println ([`d1726a0`](https://github.com/kjuulh/dagger-rs/commit/d1726a052a6dc4e57f364864446cab3cbda7e0bf))
|
||||||
- unpack response ([`3b5b59b`](https://github.com/kjuulh/dagger-sdk/commit/3b5b59ba1c20cc68218dc5c0af18ff7a78f6953d))
|
- unpack response ([`3b5b59b`](https://github.com/kjuulh/dagger-rs/commit/3b5b59ba1c20cc68218dc5c0af18ff7a78f6953d))
|
||||||
- tested full flow initially ([`7a008be`](https://github.com/kjuulh/dagger-sdk/commit/7a008be59e5ca183809e5840cdfae1d87665aa20))
|
- tested full flow initially ([`7a008be`](https://github.com/kjuulh/dagger-rs/commit/7a008be59e5ca183809e5840cdfae1d87665aa20))
|
||||||
- move code to dagger-core ([`ec0d0b2`](https://github.com/kjuulh/dagger-sdk/commit/ec0d0b22e646c97acb3ce93f3afb3ddb8590e68f))
|
- move code to dagger-core ([`ec0d0b2`](https://github.com/kjuulh/dagger-rs/commit/ec0d0b22e646c97acb3ce93f3afb3ddb8590e68f))
|
||||||
- with selection impl default ([`9f0021b`](https://github.com/kjuulh/dagger-sdk/commit/9f0021b7086046c80b3f455f205149e03eb72da2))
|
- with selection impl default ([`9f0021b`](https://github.com/kjuulh/dagger-rs/commit/9f0021b7086046c80b3f455f205149e03eb72da2))
|
||||||
- fix warnings ([`2b49f9c`](https://github.com/kjuulh/dagger-sdk/commit/2b49f9c19098d96df2bb735253710774b0831c94))
|
- fix warnings ([`2b49f9c`](https://github.com/kjuulh/dagger-rs/commit/2b49f9c19098d96df2bb735253710774b0831c94))
|
||||||
- fix test ([`03366b7`](https://github.com/kjuulh/dagger-sdk/commit/03366b7c5b3cce5ec42b5c7655843170236c56a1))
|
- fix test ([`03366b7`](https://github.com/kjuulh/dagger-rs/commit/03366b7c5b3cce5ec42b5c7655843170236c56a1))
|
||||||
- test marshaller ([`c5dfceb`](https://github.com/kjuulh/dagger-sdk/commit/c5dfcebaad9c255b10ba8c6e4d4dba00821c8941))
|
- test marshaller ([`c5dfceb`](https://github.com/kjuulh/dagger-rs/commit/c5dfcebaad9c255b10ba8c6e4d4dba00821c8941))
|
||||||
- test marshaller ([`c4ec6f0`](https://github.com/kjuulh/dagger-sdk/commit/c4ec6f0c976ce0af2e05e818731b5e2bed7f0522))
|
- test marshaller ([`c4ec6f0`](https://github.com/kjuulh/dagger-rs/commit/c4ec6f0c976ce0af2e05e818731b5e2bed7f0522))
|
||||||
- implement sort by name and type ([`d9b51c1`](https://github.com/kjuulh/dagger-sdk/commit/d9b51c1ac90c00fb3af24332b6140e1201bc9be7))
|
- 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-sdk/commit/26069a82a69ec7265216c8ddaceb37228dd0fb81))
|
- fix optional types for real ([`26069a8`](https://github.com/kjuulh/dagger-rs/commit/26069a82a69ec7265216c8ddaceb37228dd0fb81))
|
||||||
- fix description ([`f4581ba`](https://github.com/kjuulh/dagger-sdk/commit/f4581ba4cd1693a906eaf6c58054398ceae3bfac))
|
- fix description ([`f4581ba`](https://github.com/kjuulh/dagger-rs/commit/f4581ba4cd1693a906eaf6c58054398ceae3bfac))
|
||||||
- with proper optional types ([`f4a812a`](https://github.com/kjuulh/dagger-sdk/commit/f4a812a7d24e9e09cb4e3cbde56ee0b3ac774b62))
|
- with proper optional types ([`f4a812a`](https://github.com/kjuulh/dagger-rs/commit/f4a812a7d24e9e09cb4e3cbde56ee0b3ac774b62))
|
||||||
- set proper option type ([`8549cfc`](https://github.com/kjuulh/dagger-sdk/commit/8549cfc3a7d9f831febaeadc22db36604e465ea8))
|
- set proper option type ([`8549cfc`](https://github.com/kjuulh/dagger-rs/commit/8549cfc3a7d9f831febaeadc22db36604e465ea8))
|
||||||
- add fields ([`496a687`](https://github.com/kjuulh/dagger-sdk/commit/496a687bc34f7c58cc86df60c183be741b0b8a9c))
|
- add fields ([`496a687`](https://github.com/kjuulh/dagger-rs/commit/496a687bc34f7c58cc86df60c183be741b0b8a9c))
|
||||||
- add input_fields ([`d2cddff`](https://github.com/kjuulh/dagger-sdk/commit/d2cddff365c636feceb3f20a73df812fcab11a19))
|
- add input_fields ([`d2cddff`](https://github.com/kjuulh/dagger-rs/commit/d2cddff365c636feceb3f20a73df812fcab11a19))
|
||||||
- with objects ([`5fef514`](https://github.com/kjuulh/dagger-sdk/commit/5fef5148010f384d0158361d64b8e17d357d4819))
|
- with objects ([`5fef514`](https://github.com/kjuulh/dagger-rs/commit/5fef5148010f384d0158361d64b8e17d357d4819))
|
||||||
- with enum ([`2a1f7c3`](https://github.com/kjuulh/dagger-sdk/commit/2a1f7c3f2666f1f4caebf7c22707709741c2cfad))
|
- with enum ([`2a1f7c3`](https://github.com/kjuulh/dagger-rs/commit/2a1f7c3f2666f1f4caebf7c22707709741c2cfad))
|
||||||
- with codegen output ([`0bf6b0e`](https://github.com/kjuulh/dagger-sdk/commit/0bf6b0e91ecc31c1f6b51338234137eb185810a0))
|
- with codegen output ([`0bf6b0e`](https://github.com/kjuulh/dagger-rs/commit/0bf6b0e91ecc31c1f6b51338234137eb185810a0))
|
||||||
- split out codegen parts ([`3263f1d`](https://github.com/kjuulh/dagger-sdk/commit/3263f1d589aee78065401c666533cb0cbadd06ce))
|
- split out codegen parts ([`3263f1d`](https://github.com/kjuulh/dagger-rs/commit/3263f1d589aee78065401c666533cb0cbadd06ce))
|
||||||
- add dagger-sdk ([`9dccb83`](https://github.com/kjuulh/dagger-sdk/commit/9dccb83d94a720dd58deffe9f3e5aaea784336f3))
|
- add dagger-sdk ([`9dccb83`](https://github.com/kjuulh/dagger-rs/commit/9dccb83d94a720dd58deffe9f3e5aaea784336f3))
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -1,31 +1,28 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "dagger-sdk"
|
name = "dagger-sdk"
|
||||||
version = "0.2.22"
|
version = "0.2.11"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
license-file = "LICENSE.MIT"
|
license-file = "LICENSE.MIT"
|
||||||
description = "A dagger sdk for rust, written in rust"
|
description = "A dagger sdk for rust, written in rust"
|
||||||
repository = "https://github.com/kjuulh/dagger-sdk"
|
repository = "https://github.com/kjuulh/dagger-rs"
|
||||||
publish = true
|
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 = { workspace = true, version = "^0.2.11" }
|
dagger-core = { path = "../dagger-core", version = "^0.2.4" }
|
||||||
|
|
||||||
eyre = { workspace = true }
|
base64 = "0.21.0"
|
||||||
tokio = { workspace = true }
|
eyre = "0.6.8"
|
||||||
serde = { workspace = true }
|
futures = "0.3.26"
|
||||||
serde_json = { workspace = true }
|
gql_client = "1.0.7"
|
||||||
tracing.workspace = true
|
serde = { version = "1.0.152", features = ["derive"] }
|
||||||
tracing-subscriber.workspace = true
|
serde_json = "1.0.93"
|
||||||
thiserror.workspace = true
|
tokio = { version = "1.25.0", features = ["full"] }
|
||||||
|
|
||||||
futures = "0.3.28"
|
|
||||||
derive_builder = "0.12.0"
|
derive_builder = "0.12.0"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
pretty_assertions = "1.3.0"
|
pretty_assertions = "1.3.0"
|
||||||
rand = "0.8.5"
|
rand = "0.8.5"
|
||||||
genco = "0.17.3"
|
genco = "0.17.3"
|
||||||
tracing-test = "0.2.4"
|
|
||||||
|
@ -27,7 +27,7 @@ cargo add dagger-sdk
|
|||||||
```rust
|
```rust
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> eyre::Result<()> {
|
async fn main() -> eyre::Result<()> {
|
||||||
let client = dagger_sdk::connect().await?;
|
let client = dagger_sdk::connect()?;
|
||||||
|
|
||||||
let version = client
|
let version = client
|
||||||
.container()
|
.container()
|
||||||
@ -46,3 +46,9 @@ And run it like a normal application:
|
|||||||
```bash
|
```bash
|
||||||
cargo run
|
cargo run
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Disclaimer
|
||||||
|
|
||||||
|
You are free to use something else than `tokio`, I haven't tested it with
|
||||||
|
anything else, but it should work with any other runtime. We don't rely on it
|
||||||
|
specifically. That might change in the future though.
|
||||||
|
@ -7,7 +7,7 @@ async fn main() -> eyre::Result<()> {
|
|||||||
let host_source_dir = client.host().directory_opts(
|
let host_source_dir = client.host().directory_opts(
|
||||||
"./examples/caching/app",
|
"./examples/caching/app",
|
||||||
dagger_sdk::HostDirectoryOptsBuilder::default()
|
dagger_sdk::HostDirectoryOptsBuilder::default()
|
||||||
.exclude(vec!["node_modules/", "ci/"])
|
.exclude(vec!["node_modules", "ci/"])
|
||||||
.build()?,
|
.build()?,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -35,8 +35,7 @@ async fn main() -> eyre::Result<()> {
|
|||||||
.container()
|
.container()
|
||||||
.from("nginx")
|
.from("nginx")
|
||||||
.with_directory("/usr/share/nginx/html", build_dir.id().await?)
|
.with_directory("/usr/share/nginx/html", build_dir.id().await?)
|
||||||
.publish(format!("ttl.sh/hello-dagger-sdk-{}:1h", rng.gen::<u64>()))
|
.publish(format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>())).await?;
|
||||||
.await?;
|
|
||||||
|
|
||||||
println!("published image to: {}", ref_);
|
println!("published image to: {}", ref_);
|
||||||
|
|
||||||
|
@ -13,8 +13,7 @@ async fn main() -> eyre::Result<()> {
|
|||||||
let ref_ = client
|
let ref_ = client
|
||||||
.container()
|
.container()
|
||||||
.build(context_dir.id().await?)
|
.build(context_dir.id().await?)
|
||||||
.publish(format!("ttl.sh/hello-dagger-sdk-{}:1h", rng.gen::<u64>()))
|
.publish(format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>())).await?;
|
||||||
.await?;
|
|
||||||
|
|
||||||
println!("published image to: {}", ref_);
|
println!("published image to: {}", ref_);
|
||||||
|
|
||||||
|
@ -6,8 +6,7 @@ async fn main() -> eyre::Result<()> {
|
|||||||
.container()
|
.container()
|
||||||
.from("golang:1.19")
|
.from("golang:1.19")
|
||||||
.with_exec(vec!["go", "version"])
|
.with_exec(vec!["go", "version"])
|
||||||
.stdout()
|
.stdout().await?;
|
||||||
.await?;
|
|
||||||
|
|
||||||
println!("Hello from Dagger and {}", version.trim());
|
println!("Hello from Dagger and {}", version.trim());
|
||||||
|
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
|
||||||
|
|
||||||
# dependencies
|
|
||||||
/node_modules
|
|
||||||
/.pnp
|
|
||||||
.pnp.js
|
|
||||||
|
|
||||||
# testing
|
|
||||||
/coverage
|
|
||||||
|
|
||||||
# production
|
|
||||||
/build
|
|
||||||
|
|
||||||
# misc
|
|
||||||
.DS_Store
|
|
||||||
.env.local
|
|
||||||
.env.development.local
|
|
||||||
.env.test.local
|
|
||||||
.env.production.local
|
|
||||||
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
|
|
||||||
build-*
|
|
@ -1,17 +0,0 @@
|
|||||||
# React Build
|
|
||||||
|
|
||||||
This is based on the [Getting Started guide for Nodejs](https://docs.dagger.io/sdk/nodejs/783645/get-started#step-5-test-against-multiple-nodejs-versions)
|
|
||||||
|
|
||||||
A simple react app is created with `create-react-app` which is built and tested by `build.js` or `build.ts`.
|
|
||||||
|
|
||||||
Run:
|
|
||||||
|
|
||||||
`npm install`
|
|
||||||
|
|
||||||
and then:
|
|
||||||
|
|
||||||
`node --loader ts-node/esm ./build.ts`
|
|
||||||
|
|
||||||
or
|
|
||||||
|
|
||||||
`node ./build.js`
|
|
29700
crates/dagger-sdk/examples/logging/app/package-lock.json
generated
29700
crates/dagger-sdk/examples/logging/app/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,48 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "react-build",
|
|
||||||
"version": "0.1.0",
|
|
||||||
"private": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@testing-library/jest-dom": "^5.16.5",
|
|
||||||
"@testing-library/react": "^13.4.0",
|
|
||||||
"@testing-library/user-event": "^13.5.0",
|
|
||||||
"@types/jest": "^27.5.2",
|
|
||||||
"@types/node": "^16.18.6",
|
|
||||||
"@types/react": "^18.0.26",
|
|
||||||
"@types/react-dom": "^18.0.9",
|
|
||||||
"react": "^18.2.0",
|
|
||||||
"react-dom": "^18.2.0",
|
|
||||||
"react-scripts": "5.0.1",
|
|
||||||
"ts-node": "^10.9.1",
|
|
||||||
"typescript": "^4.9.3",
|
|
||||||
"web-vitals": "^2.1.4"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"start": "react-scripts start",
|
|
||||||
"build": "react-scripts build",
|
|
||||||
"test": "react-scripts test",
|
|
||||||
"eject": "react-scripts eject"
|
|
||||||
},
|
|
||||||
"eslintConfig": {
|
|
||||||
"extends": [
|
|
||||||
"react-app",
|
|
||||||
"react-app/jest"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"browserslist": {
|
|
||||||
"production": [
|
|
||||||
">0.2%",
|
|
||||||
"not dead",
|
|
||||||
"not op_mini all"
|
|
||||||
],
|
|
||||||
"development": [
|
|
||||||
"last 1 chrome version",
|
|
||||||
"last 1 firefox version",
|
|
||||||
"last 1 safari version"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"type": "module",
|
|
||||||
"devDependencies": {
|
|
||||||
"@dagger.io/dagger": "^0.3.2"
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
Before Width: | Height: | Size: 3.8 KiB |
@ -1,43 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
||||||
<meta name="theme-color" content="#000000" />
|
|
||||||
<meta
|
|
||||||
name="description"
|
|
||||||
content="Web site created using create-react-app"
|
|
||||||
/>
|
|
||||||
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
|
|
||||||
<!--
|
|
||||||
manifest.json provides metadata used when your web app is installed on a
|
|
||||||
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
|
||||||
-->
|
|
||||||
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
|
||||||
<!--
|
|
||||||
Notice the use of %PUBLIC_URL% in the tags above.
|
|
||||||
It will be replaced with the URL of the `public` folder during the build.
|
|
||||||
Only files inside the `public` folder can be referenced from the HTML.
|
|
||||||
|
|
||||||
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
|
|
||||||
work correctly both with client-side routing and a non-root public URL.
|
|
||||||
Learn how to configure a non-root public URL by running `npm run build`.
|
|
||||||
-->
|
|
||||||
<title>React App</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
|
||||||
<div id="root"></div>
|
|
||||||
<!--
|
|
||||||
This HTML file is a template.
|
|
||||||
If you open it directly in the browser, you will see an empty page.
|
|
||||||
|
|
||||||
You can add webfonts, meta tags, or analytics to this file.
|
|
||||||
The build step will place the bundled scripts into the <body> tag.
|
|
||||||
|
|
||||||
To begin the development, run `npm start` or `yarn start`.
|
|
||||||
To create a production bundle, use `npm run build` or `yarn build`.
|
|
||||||
-->
|
|
||||||
</body>
|
|
||||||
</html>
|
|
Binary file not shown.
Before Width: | Height: | Size: 5.2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 9.4 KiB |
@ -1,25 +0,0 @@
|
|||||||
{
|
|
||||||
"short_name": "React App",
|
|
||||||
"name": "Create React App Sample",
|
|
||||||
"icons": [
|
|
||||||
{
|
|
||||||
"src": "favicon.ico",
|
|
||||||
"sizes": "64x64 32x32 24x24 16x16",
|
|
||||||
"type": "image/x-icon"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "logo192.png",
|
|
||||||
"type": "image/png",
|
|
||||||
"sizes": "192x192"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "logo512.png",
|
|
||||||
"type": "image/png",
|
|
||||||
"sizes": "512x512"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"start_url": ".",
|
|
||||||
"display": "standalone",
|
|
||||||
"theme_color": "#000000",
|
|
||||||
"background_color": "#ffffff"
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
# https://www.robotstxt.org/robotstxt.html
|
|
||||||
User-agent: *
|
|
||||||
Disallow:
|
|
@ -1,38 +0,0 @@
|
|||||||
.App {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.App-logo {
|
|
||||||
height: 40vmin;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-reduced-motion: no-preference) {
|
|
||||||
.App-logo {
|
|
||||||
animation: App-logo-spin infinite 20s linear;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.App-header {
|
|
||||||
background-color: #282c34;
|
|
||||||
min-height: 100vh;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
font-size: calc(10px + 2vmin);
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.App-link {
|
|
||||||
color: #61dafb;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes App-logo-spin {
|
|
||||||
from {
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
transform: rotate(360deg);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
import { render, screen } from '@testing-library/react';
|
|
||||||
import App from './App';
|
|
||||||
|
|
||||||
test('renders learn react link', () => {
|
|
||||||
render(<App />);
|
|
||||||
const linkElement = screen.getByText(/learn react/i);
|
|
||||||
expect(linkElement).toBeInTheDocument();
|
|
||||||
});
|
|
@ -1,26 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
import logo from './logo.svg';
|
|
||||||
import './App.css';
|
|
||||||
|
|
||||||
function App() {
|
|
||||||
return (
|
|
||||||
<div className="App">
|
|
||||||
<header className="App-header">
|
|
||||||
<img src={logo} className="App-logo" alt="logo" />
|
|
||||||
<p>
|
|
||||||
Edit <code>src/App.tsx</code> and save to reload.
|
|
||||||
</p>
|
|
||||||
<a
|
|
||||||
className="App-link"
|
|
||||||
href="https://reactjs.org"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>
|
|
||||||
Learn React
|
|
||||||
</a>
|
|
||||||
</header>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default App;
|
|
@ -1,13 +0,0 @@
|
|||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
|
|
||||||
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
|
|
||||||
sans-serif;
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
-moz-osx-font-smoothing: grayscale;
|
|
||||||
}
|
|
||||||
|
|
||||||
code {
|
|
||||||
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
|
|
||||||
monospace;
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
import ReactDOM from 'react-dom/client';
|
|
||||||
import './index.css';
|
|
||||||
import App from './App';
|
|
||||||
import reportWebVitals from './reportWebVitals';
|
|
||||||
|
|
||||||
const root = ReactDOM.createRoot(
|
|
||||||
document.getElementById('root') as HTMLElement
|
|
||||||
);
|
|
||||||
root.render(
|
|
||||||
<React.StrictMode>
|
|
||||||
<App />
|
|
||||||
</React.StrictMode>
|
|
||||||
);
|
|
||||||
|
|
||||||
// If you want to start measuring performance in your app, pass a function
|
|
||||||
// to log results (for example: reportWebVitals(console.log))
|
|
||||||
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
|
|
||||||
reportWebVitals();
|
|
@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>
|
|
Before Width: | Height: | Size: 2.6 KiB |
@ -1 +0,0 @@
|
|||||||
/// <reference types="react-scripts" />
|
|
@ -1,15 +0,0 @@
|
|||||||
import { ReportHandler } from 'web-vitals';
|
|
||||||
|
|
||||||
const reportWebVitals = (onPerfEntry?: ReportHandler) => {
|
|
||||||
if (onPerfEntry && onPerfEntry instanceof Function) {
|
|
||||||
import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
|
|
||||||
getCLS(onPerfEntry);
|
|
||||||
getFID(onPerfEntry);
|
|
||||||
getFCP(onPerfEntry);
|
|
||||||
getLCP(onPerfEntry);
|
|
||||||
getTTFB(onPerfEntry);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export default reportWebVitals;
|
|
@ -1,5 +0,0 @@
|
|||||||
// jest-dom adds custom jest matchers for asserting on DOM nodes.
|
|
||||||
// allows you to do things like:
|
|
||||||
// expect(element).toHaveTextContent(/react/i)
|
|
||||||
// learn more: https://github.com/testing-library/jest-dom
|
|
||||||
import '@testing-library/jest-dom';
|
|
@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"target": "es5",
|
|
||||||
"lib": [
|
|
||||||
"dom",
|
|
||||||
"dom.iterable",
|
|
||||||
"esnext"
|
|
||||||
],
|
|
||||||
"allowJs": true,
|
|
||||||
"skipLibCheck": true,
|
|
||||||
"esModuleInterop": true,
|
|
||||||
"allowSyntheticDefaultImports": true,
|
|
||||||
"strict": true,
|
|
||||||
"forceConsistentCasingInFileNames": true,
|
|
||||||
"noFallthroughCasesInSwitch": true,
|
|
||||||
"module": "esnext",
|
|
||||||
"moduleResolution": "node",
|
|
||||||
"resolveJsonModule": true,
|
|
||||||
"isolatedModules": true,
|
|
||||||
"noEmit": true,
|
|
||||||
"jsx": "react-jsx"
|
|
||||||
},
|
|
||||||
"include": [
|
|
||||||
"src"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,49 +0,0 @@
|
|||||||
use std::sync::Arc;
|
|
||||||
|
|
||||||
use dagger_sdk::logging::TracingLogger;
|
|
||||||
use dagger_sdk::HostDirectoryOpts;
|
|
||||||
|
|
||||||
#[tokio::main]
|
|
||||||
async fn main() -> eyre::Result<()> {
|
|
||||||
dagger_sdk::logging::default_logging()?;
|
|
||||||
|
|
||||||
let client = dagger_sdk::connect_opts(dagger_sdk::Config {
|
|
||||||
workdir_path: None,
|
|
||||||
config_path: None,
|
|
||||||
timeout_ms: 1000,
|
|
||||||
execute_timeout_ms: None,
|
|
||||||
logger: Some(Arc::new(TracingLogger::default())),
|
|
||||||
})
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
let host_source_dir = client.host().directory_opts(
|
|
||||||
"examples/build-the-application/app",
|
|
||||||
HostDirectoryOpts {
|
|
||||||
exclude: Some(vec!["node_modules".into(), "ci/".into()]),
|
|
||||||
include: None,
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
let source = client
|
|
||||||
.container()
|
|
||||||
.from("node:16")
|
|
||||||
.with_mounted_directory("/src", host_source_dir.id().await?);
|
|
||||||
|
|
||||||
let runner = source
|
|
||||||
.with_workdir("/src")
|
|
||||||
.with_exec(vec!["npm", "install"]);
|
|
||||||
|
|
||||||
let test = runner.with_exec(vec!["npm", "test", "--", "--watchAll=false"]);
|
|
||||||
|
|
||||||
let build_dir = test
|
|
||||||
.with_exec(vec!["npm", "run", "build"])
|
|
||||||
.directory("./build");
|
|
||||||
|
|
||||||
let _ = build_dir.export("./build");
|
|
||||||
|
|
||||||
let entries = build_dir.entries().await;
|
|
||||||
|
|
||||||
println!("build dir contents: \n {:?}", entries);
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
@ -34,7 +34,7 @@ async fn main() -> eyre::Result<()> {
|
|||||||
.container()
|
.container()
|
||||||
.from("nginx")
|
.from("nginx")
|
||||||
.with_directory("/usr/share/nginx/html", build_dir.id().await?)
|
.with_directory("/usr/share/nginx/html", build_dir.id().await?)
|
||||||
.publish(format!("ttl.sh/hello-dagger-sdk-{}:1h", rng.gen::<u64>()))
|
.publish(format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()))
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
println!("published image to: {}", ref_);
|
println!("published image to: {}", ref_);
|
||||||
|
@ -39,8 +39,7 @@ async fn main() -> eyre::Result<()> {
|
|||||||
"/usr/share/nginx/html",
|
"/usr/share/nginx/html",
|
||||||
client.host().directory(output).id().await?,
|
client.host().directory(output).id().await?,
|
||||||
)
|
)
|
||||||
.publish(format!("ttl.sh/hello-dagger-sdk-{}:1h", rng.gen::<u64>()))
|
.publish(format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>())).await?;
|
||||||
.await?;
|
|
||||||
|
|
||||||
println!("published image to: {}", ref_);
|
println!("published image to: {}", ref_);
|
||||||
|
|
||||||
|
@ -23,8 +23,7 @@ async fn main() -> eyre::Result<()> {
|
|||||||
|
|
||||||
let out = runner
|
let out = runner
|
||||||
.with_exec(vec!["npm", "test", "--", "--watchAll=false"])
|
.with_exec(vec!["npm", "test", "--", "--watchAll=false"])
|
||||||
.stderr()
|
.stderr().await?;
|
||||||
.await?;
|
|
||||||
|
|
||||||
println!("{}", out);
|
println!("{}", out);
|
||||||
|
|
||||||
|
@ -1,36 +1,43 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use dagger_core::graphql_client::DefaultGraphQLClient;
|
use base64::engine::general_purpose;
|
||||||
|
use base64::Engine;
|
||||||
use dagger_core::config::Config;
|
use dagger_core::config::Config;
|
||||||
|
use dagger_core::connect_params::ConnectParams;
|
||||||
use dagger_core::engine::Engine as DaggerEngine;
|
use dagger_core::engine::Engine as DaggerEngine;
|
||||||
|
use gql_client::ClientConfig;
|
||||||
|
|
||||||
use crate::errors::ConnectError;
|
|
||||||
use crate::gen::Query;
|
use crate::gen::Query;
|
||||||
use crate::logging::StdLogger;
|
|
||||||
use crate::querybuilder::query;
|
use crate::querybuilder::query;
|
||||||
|
|
||||||
pub type DaggerConn = Arc<Query>;
|
pub type DaggerConn = Arc<Query>;
|
||||||
|
|
||||||
pub async fn connect() -> Result<DaggerConn, ConnectError> {
|
pub async fn connect() -> eyre::Result<DaggerConn> {
|
||||||
let cfg = Config::new(None, None, None, None, Some(Arc::new(StdLogger::default())));
|
let cfg = Config::default();
|
||||||
|
let (conn, proc) = DaggerEngine::new().start(&cfg).await?;
|
||||||
connect_opts(cfg).await
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn connect_opts(cfg: Config) -> Result<DaggerConn, ConnectError> {
|
|
||||||
let (conn, proc) = DaggerEngine::new()
|
|
||||||
.start(&cfg)
|
|
||||||
.await
|
|
||||||
.map_err(ConnectError::FailedToConnect)?;
|
|
||||||
|
|
||||||
Ok(Arc::new(Query {
|
Ok(Arc::new(Query {
|
||||||
proc: proc.map(|p| Arc::new(p)),
|
conn,
|
||||||
|
proc: Arc::new(proc),
|
||||||
selection: query(),
|
selection: query(),
|
||||||
graphql_client: Arc::new(DefaultGraphQLClient::new(&conn)),
|
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn graphql_client(conn: &ConnectParams) -> gql_client::Client {
|
||||||
|
let token = general_purpose::URL_SAFE.encode(format!("{}:", conn.session_token));
|
||||||
|
|
||||||
|
let mut headers = HashMap::new();
|
||||||
|
headers.insert("Authorization".to_string(), format!("Basic {}", token));
|
||||||
|
|
||||||
|
gql_client::Client::new_with_config(ClientConfig {
|
||||||
|
endpoint: conn.url(),
|
||||||
|
timeout: Some(1000),
|
||||||
|
headers: Some(headers),
|
||||||
|
proxy: None,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// Conn will automatically close on drop of proc
|
// Conn will automatically close on drop of proc
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
use thiserror::Error;
|
|
||||||
|
|
||||||
#[derive(Error, Debug)]
|
|
||||||
pub enum ConnectError {
|
|
||||||
#[error("failed to connect to dagger engine")]
|
|
||||||
FailedToConnect(#[source] eyre::Error),
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Error, Debug)]
|
|
||||||
pub enum DaggerError {
|
|
||||||
#[error("failed to build dagger internal graph")]
|
|
||||||
Build(#[source] eyre::Error),
|
|
||||||
#[error("failed to parse input type")]
|
|
||||||
Serialize(#[source] eyre::Error),
|
|
||||||
#[error("failed to query dagger engine: {0}")]
|
|
||||||
Query(#[source] dagger_core::graphql_client::GraphQLError),
|
|
||||||
#[error("failed to unpack response")]
|
|
||||||
Unpack(#[source] DaggerUnpackError),
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Error, Debug)]
|
|
||||||
pub enum DaggerUnpackError {
|
|
||||||
#[error("Too many nested objects inside graphql response")]
|
|
||||||
TooManyNestedObjects,
|
|
||||||
#[error("failed to deserialize response")]
|
|
||||||
Deserialize(#[source] serde_json::Error),
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,6 @@
|
|||||||
#![deny(warnings)]
|
|
||||||
|
|
||||||
mod client;
|
mod client;
|
||||||
pub mod errors;
|
|
||||||
mod gen;
|
mod gen;
|
||||||
pub mod logging;
|
|
||||||
mod querybuilder;
|
mod querybuilder;
|
||||||
|
|
||||||
pub use client::*;
|
pub use client::*;
|
||||||
pub use dagger_core::config::Config;
|
|
||||||
pub use gen::*;
|
pub use gen::*;
|
||||||
|
@ -1,81 +0,0 @@
|
|||||||
use dagger_core::logger::{DynLogger, Logger};
|
|
||||||
use tracing::Level;
|
|
||||||
|
|
||||||
pub fn default_logging() -> eyre::Result<()> {
|
|
||||||
tracing_subscriber::fmt().with_max_level(Level::INFO).init();
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct StdLogger {}
|
|
||||||
|
|
||||||
impl Default for StdLogger {
|
|
||||||
fn default() -> Self {
|
|
||||||
Self {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Logger for StdLogger {
|
|
||||||
fn stdout(&self, output: &str) -> eyre::Result<()> {
|
|
||||||
println!("{}", output);
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn stderr(&self, output: &str) -> eyre::Result<()> {
|
|
||||||
eprintln!("{}", output);
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct TracingLogger {}
|
|
||||||
|
|
||||||
impl Default for TracingLogger {
|
|
||||||
fn default() -> Self {
|
|
||||||
Self {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Logger for TracingLogger {
|
|
||||||
fn stdout(&self, output: &str) -> eyre::Result<()> {
|
|
||||||
tracing::info!(output = output, "dagger-sdk");
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn stderr(&self, output: &str) -> eyre::Result<()> {
|
|
||||||
tracing::warn!(output = output, "dagger-sdk");
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct AggregateLogger {
|
|
||||||
pub loggers: Vec<DynLogger>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Default for AggregateLogger {
|
|
||||||
fn default() -> Self {
|
|
||||||
Self {
|
|
||||||
loggers: Vec::new(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Logger for AggregateLogger {
|
|
||||||
fn stdout(&self, output: &str) -> eyre::Result<()> {
|
|
||||||
for logger in &self.loggers {
|
|
||||||
logger.stdout(output).unwrap()
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn stderr(&self, output: &str) -> eyre::Result<()> {
|
|
||||||
for logger in &self.loggers {
|
|
||||||
logger.stderr(output).unwrap()
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,10 +1,8 @@
|
|||||||
use std::{collections::HashMap, ops::Add, sync::Arc};
|
use std::{collections::HashMap, ops::Add, sync::Arc};
|
||||||
|
|
||||||
use dagger_core::graphql_client::DynGraphQLClient;
|
use eyre::Context;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::errors::{DaggerError, DaggerUnpackError};
|
|
||||||
|
|
||||||
pub fn query() -> Selection {
|
pub fn query() -> Selection {
|
||||||
Selection::default()
|
Selection::default()
|
||||||
}
|
}
|
||||||
@ -70,30 +68,7 @@ impl Selection {
|
|||||||
s
|
s
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn arg_enum<S>(&self, name: &str, value: S) -> Selection
|
pub fn build(&self) -> eyre::Result<String> {
|
||||||
where
|
|
||||||
S: Serialize,
|
|
||||||
{
|
|
||||||
let mut s = self.clone();
|
|
||||||
|
|
||||||
let val = serde_json::to_string(&value).unwrap();
|
|
||||||
let val = val[1..val.len() - 1].to_string();
|
|
||||||
|
|
||||||
match s.args.as_mut() {
|
|
||||||
Some(args) => {
|
|
||||||
let _ = args.insert(name.to_string(), val);
|
|
||||||
}
|
|
||||||
None => {
|
|
||||||
let mut hm = HashMap::new();
|
|
||||||
let _ = hm.insert(name.to_string(), val);
|
|
||||||
s.args = Some(hm);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
s
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn build(&self) -> Result<String, DaggerError> {
|
|
||||||
let mut fields = vec!["query".to_string()];
|
let mut fields = vec!["query".to_string()];
|
||||||
|
|
||||||
for sel in self.path() {
|
for sel in self.path() {
|
||||||
@ -101,7 +76,7 @@ impl Selection {
|
|||||||
if let Some(args) = sel.args {
|
if let Some(args) = sel.args {
|
||||||
let actualargs = args
|
let actualargs = args
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(name, arg)| format!("{name}:{}", arg.as_str()))
|
.map(|(name, arg)| format!("{name}:{arg}"))
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
query = query.add(&format!("({})", actualargs.join(", ")));
|
query = query.add(&format!("({})", actualargs.join(", ")));
|
||||||
@ -118,17 +93,15 @@ impl Selection {
|
|||||||
Ok(fields.join("{") + &"}".repeat(fields.len() - 1))
|
Ok(fields.join("{") + &"}".repeat(fields.len() - 1))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn execute<D>(&self, gql_client: DynGraphQLClient) -> Result<D, DaggerError>
|
pub async fn execute<D>(&self, gql_client: &gql_client::Client) -> eyre::Result<D>
|
||||||
where
|
where
|
||||||
D: for<'de> Deserialize<'de>,
|
D: for<'de> Deserialize<'de>,
|
||||||
{
|
{
|
||||||
let query = self.build()?;
|
let query = self.build()?;
|
||||||
|
|
||||||
tracing::trace!(query = query.as_str(), "dagger-query");
|
|
||||||
|
|
||||||
let resp: Option<serde_json::Value> = match gql_client.query(&query).await {
|
let resp: Option<serde_json::Value> = match gql_client.query(&query).await {
|
||||||
Ok(r) => r,
|
Ok(r) => r,
|
||||||
Err(e) => return Err(DaggerError::Query(e)),
|
Err(e) => eyre::bail!(e),
|
||||||
};
|
};
|
||||||
|
|
||||||
let resp: Option<D> = self.unpack_resp(resp)?;
|
let resp: Option<D> = self.unpack_resp(resp)?;
|
||||||
@ -152,10 +125,7 @@ impl Selection {
|
|||||||
selections
|
selections
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn unpack_resp<D>(
|
pub(crate) fn unpack_resp<D>(&self, resp: Option<serde_json::Value>) -> eyre::Result<Option<D>>
|
||||||
&self,
|
|
||||||
resp: Option<serde_json::Value>,
|
|
||||||
) -> Result<Option<D>, DaggerError>
|
|
||||||
where
|
where
|
||||||
D: for<'de> Deserialize<'de>,
|
D: for<'de> Deserialize<'de>,
|
||||||
{
|
{
|
||||||
@ -165,23 +135,21 @@ impl Selection {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn unpack_resp_value<D>(&self, r: serde_json::Value) -> Result<D, DaggerError>
|
fn unpack_resp_value<D>(&self, r: serde_json::Value) -> eyre::Result<D>
|
||||||
where
|
where
|
||||||
D: for<'de> Deserialize<'de>,
|
D: for<'de> Deserialize<'de>,
|
||||||
{
|
{
|
||||||
if let Some(o) = r.as_object() {
|
if let Some(o) = r.as_object() {
|
||||||
let keys = o.keys();
|
let keys = o.keys();
|
||||||
if keys.len() != 1 {
|
if keys.len() != 1 {
|
||||||
return Err(DaggerError::Unpack(DaggerUnpackError::TooManyNestedObjects));
|
eyre::bail!("too many nested objects inside graphql response")
|
||||||
}
|
}
|
||||||
|
|
||||||
let first = keys.into_iter().next().unwrap();
|
let first = keys.into_iter().next().unwrap();
|
||||||
return self.unpack_resp_value(o.get(first).unwrap().clone());
|
return self.unpack_resp_value(o.get(first).unwrap().clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
serde_json::from_value::<D>(r)
|
serde_json::from_value::<D>(r).context("could not deserialize response")
|
||||||
.map_err(DaggerUnpackError::Deserialize)
|
|
||||||
.map_err(DaggerError::Unpack)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,47 +0,0 @@
|
|||||||
use dagger_sdk::{QueryContainerOpts, QueryContainerOptsBuilder};
|
|
||||||
|
|
||||||
static PLATFORMS: [&str; 2] = ["linux/arm64", "linux/x86_64"];
|
|
||||||
|
|
||||||
#[tokio::test]
|
|
||||||
async fn test_issue_30_alt() -> eyre::Result<()> {
|
|
||||||
let client = dagger_sdk::connect().await?;
|
|
||||||
|
|
||||||
for platform in PLATFORMS {
|
|
||||||
let ref_ = client
|
|
||||||
.container_opts(QueryContainerOpts {
|
|
||||||
id: None,
|
|
||||||
platform: Some(platform.to_string().into()),
|
|
||||||
})
|
|
||||||
.from("alpine")
|
|
||||||
.with_exec(vec!["echo", "'hello'"])
|
|
||||||
.exit_code()
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
println!("published image to: {:#?}", ref_);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tokio::test]
|
|
||||||
async fn test_issue_30() -> eyre::Result<()> {
|
|
||||||
let client = dagger_sdk::connect().await?;
|
|
||||||
|
|
||||||
for platform in PLATFORMS {
|
|
||||||
let ref_ = client
|
|
||||||
.container_opts(
|
|
||||||
QueryContainerOptsBuilder::default()
|
|
||||||
.platform(platform)
|
|
||||||
.build()
|
|
||||||
.unwrap(),
|
|
||||||
)
|
|
||||||
.from("alpine")
|
|
||||||
.with_exec(vec!["echo", "'hello'"])
|
|
||||||
.exit_code()
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
println!("published image to: {:#?}", ref_);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
use dagger_sdk::{ContainerWithExposedPortOpts, NetworkProtocol};
|
|
||||||
|
|
||||||
#[tokio::test]
|
|
||||||
async fn test_issue_30_alt() -> eyre::Result<()> {
|
|
||||||
let client = dagger_sdk::connect().await?;
|
|
||||||
|
|
||||||
client
|
|
||||||
.container()
|
|
||||||
.from("denoland/deno:debian-1.30.3")
|
|
||||||
.with_exposed_port_opts(
|
|
||||||
53,
|
|
||||||
ContainerWithExposedPortOpts {
|
|
||||||
protocol: Some(NetworkProtocol::TCP),
|
|
||||||
description: None,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.with_exposed_port_opts(
|
|
||||||
53,
|
|
||||||
ContainerWithExposedPortOpts {
|
|
||||||
protocol: Some(NetworkProtocol::UDP),
|
|
||||||
description: None,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.with_exec(vec!["echo", "hello"])
|
|
||||||
.exit_code()
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
mod iss_30;
|
|
||||||
mod iss_33;
|
|
@ -1,7 +1,4 @@
|
|||||||
mod issues;
|
|
||||||
|
|
||||||
use dagger_sdk::{connect, ContainerExecOptsBuilder};
|
use dagger_sdk::{connect, ContainerExecOptsBuilder};
|
||||||
use pretty_assertions::assert_eq;
|
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn test_example_container() {
|
async fn test_example_container() {
|
||||||
@ -22,99 +19,3 @@ async fn test_example_container() {
|
|||||||
|
|
||||||
assert_eq!(out, "3.16.2\n".to_string())
|
assert_eq!(out, "3.16.2\n".to_string())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
|
||||||
async fn test_directory() {
|
|
||||||
let c = connect().await.unwrap();
|
|
||||||
|
|
||||||
let contents = c
|
|
||||||
.directory()
|
|
||||||
.with_new_file("/hello.txt", "world")
|
|
||||||
.file("/hello.txt")
|
|
||||||
.contents()
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
assert_eq!("world", contents)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tokio::test]
|
|
||||||
async fn test_git() {
|
|
||||||
let c = connect().await.unwrap();
|
|
||||||
|
|
||||||
let tree = c.git("github.com/dagger/dagger").branch("main").tree();
|
|
||||||
|
|
||||||
let _ = tree
|
|
||||||
.entries()
|
|
||||||
.await
|
|
||||||
.unwrap()
|
|
||||||
.iter()
|
|
||||||
.find(|f| f.as_str() == "README.md")
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let readme_file = tree.file("README.md");
|
|
||||||
|
|
||||||
let readme = readme_file.contents().await.unwrap();
|
|
||||||
assert_eq!(true, readme.find("Dagger").is_some());
|
|
||||||
|
|
||||||
let readme_id = readme_file.id().await.unwrap();
|
|
||||||
let other_readme = c.file(readme_id).contents().await.unwrap();
|
|
||||||
|
|
||||||
assert_eq!(readme, other_readme);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tokio::test]
|
|
||||||
async fn test_container() {
|
|
||||||
let client = connect().await.unwrap();
|
|
||||||
|
|
||||||
let alpine = client.container().from("alpine:3.16.2");
|
|
||||||
|
|
||||||
let contents = alpine
|
|
||||||
.fs()
|
|
||||||
.file("/etc/alpine-release")
|
|
||||||
.contents()
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
assert_eq!(contents, "3.16.2\n".to_string());
|
|
||||||
|
|
||||||
let out = alpine
|
|
||||||
.exec_opts(
|
|
||||||
ContainerExecOptsBuilder::default()
|
|
||||||
.args(vec!["cat", "/etc/alpine-release"])
|
|
||||||
.build()
|
|
||||||
.unwrap(),
|
|
||||||
)
|
|
||||||
.stdout()
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
assert_eq!(out, "3.16.2\n".to_string());
|
|
||||||
|
|
||||||
let id = alpine.id().await.unwrap();
|
|
||||||
let contents = client
|
|
||||||
.container_opts(dagger_sdk::QueryContainerOpts {
|
|
||||||
id: Some(id),
|
|
||||||
platform: None,
|
|
||||||
})
|
|
||||||
.fs()
|
|
||||||
.file("/etc/alpine-release")
|
|
||||||
.contents()
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
assert_eq!(contents, "3.16.2\n".to_string());
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tokio::test]
|
|
||||||
async fn test_err_message() {
|
|
||||||
let client = connect().await.unwrap();
|
|
||||||
|
|
||||||
let alpine = client.container().from("fake.invalid:latest").id().await;
|
|
||||||
assert_eq!(alpine.is_err(), true);
|
|
||||||
let err = alpine.expect_err("Tests expect err");
|
|
||||||
|
|
||||||
let error_msg = r#"failed to query dagger engine: domain error:
|
|
||||||
Look at json field for more details
|
|
||||||
pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed
|
|
||||||
"#;
|
|
||||||
|
|
||||||
assert_eq!(err.to_string().as_str(), error_msg);
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user