#![allow(clippy::needless_lifetimes)]
use crate::core::cli_session::DaggerSessionProc;
use crate::core::graphql_client::DynGraphQLClient;
use crate::errors::DaggerError;
use crate::id::IntoID;
use crate::querybuilder::Selection;
use derive_builder::Builder;
use serde::{Deserialize, Serialize};
use std::sync::Arc;
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct CacheVolumeId(pub String);
impl From<&str> for CacheVolumeId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for CacheVolumeId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<CacheVolumeId> for CacheVolume {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<CacheVolumeId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<CacheVolumeId> for CacheVolumeId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<CacheVolumeId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<CacheVolumeId, DaggerError>(self) })
}
}
impl CacheVolumeId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct ContainerId(pub String);
impl From<&str> for ContainerId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for ContainerId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<ContainerId> for Container {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<ContainerId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<ContainerId> for ContainerId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<ContainerId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<ContainerId, DaggerError>(self) })
}
}
impl ContainerId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct CurrentModuleId(pub String);
impl From<&str> for CurrentModuleId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for CurrentModuleId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<CurrentModuleId> for CurrentModule {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<CurrentModuleId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<CurrentModuleId> for CurrentModuleId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<CurrentModuleId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<CurrentModuleId, DaggerError>(self) })
}
}
impl CurrentModuleId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct DirectoryId(pub String);
impl From<&str> for DirectoryId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for DirectoryId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<DirectoryId> for Directory {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<DirectoryId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<DirectoryId> for DirectoryId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<DirectoryId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<DirectoryId, DaggerError>(self) })
}
}
impl DirectoryId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct EngineCacheEntryId(pub String);
impl From<&str> for EngineCacheEntryId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for EngineCacheEntryId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<EngineCacheEntryId> for EngineCacheEntry {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<EngineCacheEntryId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<EngineCacheEntryId> for EngineCacheEntryId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<EngineCacheEntryId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<EngineCacheEntryId, DaggerError>(self) })
}
}
impl EngineCacheEntryId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct EngineCacheEntrySetId(pub String);
impl From<&str> for EngineCacheEntrySetId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for EngineCacheEntrySetId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<EngineCacheEntrySetId> for EngineCacheEntrySet {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<EngineCacheEntrySetId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<EngineCacheEntrySetId> for EngineCacheEntrySetId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<EngineCacheEntrySetId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<EngineCacheEntrySetId, DaggerError>(self) })
}
}
impl EngineCacheEntrySetId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct EngineCacheId(pub String);
impl From<&str> for EngineCacheId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for EngineCacheId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<EngineCacheId> for EngineCache {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<EngineCacheId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<EngineCacheId> for EngineCacheId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<EngineCacheId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<EngineCacheId, DaggerError>(self) })
}
}
impl EngineCacheId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct EngineId(pub String);
impl From<&str> for EngineId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for EngineId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<EngineId> for Engine {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<EngineId, DaggerError>> + Send>>
{
Box::pin(async move { self.id().await })
}
}
impl IntoID<EngineId> for EngineId {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<EngineId, DaggerError>> + Send>>
{
Box::pin(async move { Ok::<EngineId, DaggerError>(self) })
}
}
impl EngineId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct EnumTypeDefId(pub String);
impl From<&str> for EnumTypeDefId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for EnumTypeDefId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<EnumTypeDefId> for EnumTypeDef {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<EnumTypeDefId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<EnumTypeDefId> for EnumTypeDefId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<EnumTypeDefId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<EnumTypeDefId, DaggerError>(self) })
}
}
impl EnumTypeDefId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct EnumValueTypeDefId(pub String);
impl From<&str> for EnumValueTypeDefId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for EnumValueTypeDefId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<EnumValueTypeDefId> for EnumValueTypeDef {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<EnumValueTypeDefId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<EnumValueTypeDefId> for EnumValueTypeDefId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<EnumValueTypeDefId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<EnumValueTypeDefId, DaggerError>(self) })
}
}
impl EnumValueTypeDefId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct EnvVariableId(pub String);
impl From<&str> for EnvVariableId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for EnvVariableId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<EnvVariableId> for EnvVariable {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<EnvVariableId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<EnvVariableId> for EnvVariableId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<EnvVariableId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<EnvVariableId, DaggerError>(self) })
}
}
impl EnvVariableId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct ErrorId(pub String);
impl From<&str> for ErrorId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for ErrorId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<ErrorId> for Error {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<ErrorId, DaggerError>> + Send>>
{
Box::pin(async move { self.id().await })
}
}
impl IntoID<ErrorId> for ErrorId {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<ErrorId, DaggerError>> + Send>>
{
Box::pin(async move { Ok::<ErrorId, DaggerError>(self) })
}
}
impl ErrorId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct FieldTypeDefId(pub String);
impl From<&str> for FieldTypeDefId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for FieldTypeDefId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<FieldTypeDefId> for FieldTypeDef {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<FieldTypeDefId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<FieldTypeDefId> for FieldTypeDefId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<FieldTypeDefId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<FieldTypeDefId, DaggerError>(self) })
}
}
impl FieldTypeDefId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct FileId(pub String);
impl From<&str> for FileId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for FileId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<FileId> for File {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<FileId, DaggerError>> + Send>>
{
Box::pin(async move { self.id().await })
}
}
impl IntoID<FileId> for FileId {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<FileId, DaggerError>> + Send>>
{
Box::pin(async move { Ok::<FileId, DaggerError>(self) })
}
}
impl FileId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct FunctionArgId(pub String);
impl From<&str> for FunctionArgId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for FunctionArgId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<FunctionArgId> for FunctionArg {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<FunctionArgId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<FunctionArgId> for FunctionArgId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<FunctionArgId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<FunctionArgId, DaggerError>(self) })
}
}
impl FunctionArgId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct FunctionCallArgValueId(pub String);
impl From<&str> for FunctionCallArgValueId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for FunctionCallArgValueId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<FunctionCallArgValueId> for FunctionCallArgValue {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<FunctionCallArgValueId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<FunctionCallArgValueId> for FunctionCallArgValueId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<FunctionCallArgValueId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<FunctionCallArgValueId, DaggerError>(self) })
}
}
impl FunctionCallArgValueId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct FunctionCallId(pub String);
impl From<&str> for FunctionCallId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for FunctionCallId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<FunctionCallId> for FunctionCall {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<FunctionCallId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<FunctionCallId> for FunctionCallId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<FunctionCallId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<FunctionCallId, DaggerError>(self) })
}
}
impl FunctionCallId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct FunctionId(pub String);
impl From<&str> for FunctionId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for FunctionId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<FunctionId> for Function {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<FunctionId, DaggerError>> + Send>>
{
Box::pin(async move { self.id().await })
}
}
impl IntoID<FunctionId> for FunctionId {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<FunctionId, DaggerError>> + Send>>
{
Box::pin(async move { Ok::<FunctionId, DaggerError>(self) })
}
}
impl FunctionId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct GeneratedCodeId(pub String);
impl From<&str> for GeneratedCodeId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for GeneratedCodeId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<GeneratedCodeId> for GeneratedCode {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<GeneratedCodeId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<GeneratedCodeId> for GeneratedCodeId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<GeneratedCodeId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<GeneratedCodeId, DaggerError>(self) })
}
}
impl GeneratedCodeId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct GitModuleSourceId(pub String);
impl From<&str> for GitModuleSourceId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for GitModuleSourceId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<GitModuleSourceId> for GitModuleSource {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<GitModuleSourceId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<GitModuleSourceId> for GitModuleSourceId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<GitModuleSourceId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<GitModuleSourceId, DaggerError>(self) })
}
}
impl GitModuleSourceId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct GitRefId(pub String);
impl From<&str> for GitRefId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for GitRefId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<GitRefId> for GitRef {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<GitRefId, DaggerError>> + Send>>
{
Box::pin(async move { self.id().await })
}
}
impl IntoID<GitRefId> for GitRefId {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<GitRefId, DaggerError>> + Send>>
{
Box::pin(async move { Ok::<GitRefId, DaggerError>(self) })
}
}
impl GitRefId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct GitRepositoryId(pub String);
impl From<&str> for GitRepositoryId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for GitRepositoryId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<GitRepositoryId> for GitRepository {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<GitRepositoryId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<GitRepositoryId> for GitRepositoryId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<GitRepositoryId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<GitRepositoryId, DaggerError>(self) })
}
}
impl GitRepositoryId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct HostId(pub String);
impl From<&str> for HostId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for HostId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<HostId> for Host {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<HostId, DaggerError>> + Send>>
{
Box::pin(async move { self.id().await })
}
}
impl IntoID<HostId> for HostId {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<HostId, DaggerError>> + Send>>
{
Box::pin(async move { Ok::<HostId, DaggerError>(self) })
}
}
impl HostId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct InputTypeDefId(pub String);
impl From<&str> for InputTypeDefId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for InputTypeDefId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<InputTypeDefId> for InputTypeDef {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<InputTypeDefId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<InputTypeDefId> for InputTypeDefId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<InputTypeDefId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<InputTypeDefId, DaggerError>(self) })
}
}
impl InputTypeDefId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct InterfaceTypeDefId(pub String);
impl From<&str> for InterfaceTypeDefId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for InterfaceTypeDefId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<InterfaceTypeDefId> for InterfaceTypeDef {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<InterfaceTypeDefId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<InterfaceTypeDefId> for InterfaceTypeDefId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<InterfaceTypeDefId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<InterfaceTypeDefId, DaggerError>(self) })
}
}
impl InterfaceTypeDefId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct Json(pub String);
impl From<&str> for Json {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for Json {
fn from(value: String) -> Self {
Self(value)
}
}
impl Json {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct LabelId(pub String);
impl From<&str> for LabelId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for LabelId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<LabelId> for Label {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<LabelId, DaggerError>> + Send>>
{
Box::pin(async move { self.id().await })
}
}
impl IntoID<LabelId> for LabelId {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<LabelId, DaggerError>> + Send>>
{
Box::pin(async move { Ok::<LabelId, DaggerError>(self) })
}
}
impl LabelId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct ListTypeDefId(pub String);
impl From<&str> for ListTypeDefId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for ListTypeDefId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<ListTypeDefId> for ListTypeDef {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<ListTypeDefId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<ListTypeDefId> for ListTypeDefId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<ListTypeDefId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<ListTypeDefId, DaggerError>(self) })
}
}
impl ListTypeDefId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct LocalModuleSourceId(pub String);
impl From<&str> for LocalModuleSourceId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for LocalModuleSourceId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<LocalModuleSourceId> for LocalModuleSource {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<LocalModuleSourceId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<LocalModuleSourceId> for LocalModuleSourceId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<LocalModuleSourceId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<LocalModuleSourceId, DaggerError>(self) })
}
}
impl LocalModuleSourceId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct ModuleDependencyId(pub String);
impl From<&str> for ModuleDependencyId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for ModuleDependencyId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<ModuleDependencyId> for ModuleDependency {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<ModuleDependencyId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<ModuleDependencyId> for ModuleDependencyId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<ModuleDependencyId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<ModuleDependencyId, DaggerError>(self) })
}
}
impl ModuleDependencyId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct ModuleId(pub String);
impl From<&str> for ModuleId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for ModuleId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<ModuleId> for Module {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<ModuleId, DaggerError>> + Send>>
{
Box::pin(async move { self.id().await })
}
}
impl IntoID<ModuleId> for ModuleId {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<ModuleId, DaggerError>> + Send>>
{
Box::pin(async move { Ok::<ModuleId, DaggerError>(self) })
}
}
impl ModuleId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct ModuleSourceId(pub String);
impl From<&str> for ModuleSourceId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for ModuleSourceId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<ModuleSourceId> for ModuleSource {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<ModuleSourceId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<ModuleSourceId> for ModuleSourceId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<ModuleSourceId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<ModuleSourceId, DaggerError>(self) })
}
}
impl ModuleSourceId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct ModuleSourceViewId(pub String);
impl From<&str> for ModuleSourceViewId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for ModuleSourceViewId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<ModuleSourceViewId> for ModuleSourceView {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<ModuleSourceViewId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<ModuleSourceViewId> for ModuleSourceViewId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<ModuleSourceViewId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<ModuleSourceViewId, DaggerError>(self) })
}
}
impl ModuleSourceViewId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct ObjectTypeDefId(pub String);
impl From<&str> for ObjectTypeDefId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for ObjectTypeDefId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<ObjectTypeDefId> for ObjectTypeDef {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<ObjectTypeDefId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<ObjectTypeDefId> for ObjectTypeDefId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<ObjectTypeDefId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<ObjectTypeDefId, DaggerError>(self) })
}
}
impl ObjectTypeDefId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct Platform(pub String);
impl From<&str> for Platform {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for Platform {
fn from(value: String) -> Self {
Self(value)
}
}
impl Platform {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct PortId(pub String);
impl From<&str> for PortId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for PortId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<PortId> for Port {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<PortId, DaggerError>> + Send>>
{
Box::pin(async move { self.id().await })
}
}
impl IntoID<PortId> for PortId {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<PortId, DaggerError>> + Send>>
{
Box::pin(async move { Ok::<PortId, DaggerError>(self) })
}
}
impl PortId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct ScalarTypeDefId(pub String);
impl From<&str> for ScalarTypeDefId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for ScalarTypeDefId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<ScalarTypeDefId> for ScalarTypeDef {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<ScalarTypeDefId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<ScalarTypeDefId> for ScalarTypeDefId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<ScalarTypeDefId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<ScalarTypeDefId, DaggerError>(self) })
}
}
impl ScalarTypeDefId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct SecretId(pub String);
impl From<&str> for SecretId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for SecretId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<SecretId> for Secret {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<SecretId, DaggerError>> + Send>>
{
Box::pin(async move { self.id().await })
}
}
impl IntoID<SecretId> for SecretId {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<SecretId, DaggerError>> + Send>>
{
Box::pin(async move { Ok::<SecretId, DaggerError>(self) })
}
}
impl SecretId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct ServiceId(pub String);
impl From<&str> for ServiceId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for ServiceId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<ServiceId> for Service {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<ServiceId, DaggerError>> + Send>>
{
Box::pin(async move { self.id().await })
}
}
impl IntoID<ServiceId> for ServiceId {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<ServiceId, DaggerError>> + Send>>
{
Box::pin(async move { Ok::<ServiceId, DaggerError>(self) })
}
}
impl ServiceId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct SocketId(pub String);
impl From<&str> for SocketId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for SocketId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<SocketId> for Socket {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<SocketId, DaggerError>> + Send>>
{
Box::pin(async move { self.id().await })
}
}
impl IntoID<SocketId> for SocketId {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<SocketId, DaggerError>> + Send>>
{
Box::pin(async move { Ok::<SocketId, DaggerError>(self) })
}
}
impl SocketId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct SourceMapId(pub String);
impl From<&str> for SourceMapId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for SourceMapId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<SourceMapId> for SourceMap {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<SourceMapId, DaggerError>> + Send>,
> {
Box::pin(async move { self.id().await })
}
}
impl IntoID<SourceMapId> for SourceMapId {
fn into_id(
self,
) -> std::pin::Pin<
Box<dyn core::future::Future<Output = Result<SourceMapId, DaggerError>> + Send>,
> {
Box::pin(async move { Ok::<SourceMapId, DaggerError>(self) })
}
}
impl SourceMapId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct TerminalId(pub String);
impl From<&str> for TerminalId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for TerminalId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<TerminalId> for Terminal {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<TerminalId, DaggerError>> + Send>>
{
Box::pin(async move { self.id().await })
}
}
impl IntoID<TerminalId> for TerminalId {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<TerminalId, DaggerError>> + Send>>
{
Box::pin(async move { Ok::<TerminalId, DaggerError>(self) })
}
}
impl TerminalId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct TypeDefId(pub String);
impl From<&str> for TypeDefId {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for TypeDefId {
fn from(value: String) -> Self {
Self(value)
}
}
impl IntoID<TypeDefId> for TypeDef {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<TypeDefId, DaggerError>> + Send>>
{
Box::pin(async move { self.id().await })
}
}
impl IntoID<TypeDefId> for TypeDefId {
fn into_id(
self,
) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<TypeDefId, DaggerError>> + Send>>
{
Box::pin(async move { Ok::<TypeDefId, DaggerError>(self) })
}
}
impl TypeDefId {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct Void(pub String);
impl From<&str> for Void {
fn from(value: &str) -> Self {
Self(value.to_string())
}
}
impl From<String> for Void {
fn from(value: String) -> Self {
Self(value)
}
}
impl Void {
fn quote(&self) -> String {
format!("\"{}\"", self.0.clone())
}
}
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
pub struct BuildArg {
pub name: String,
pub value: String,
}
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
pub struct PipelineLabel {
pub name: String,
pub value: String,
}
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
pub struct PortForward {
pub backend: isize,
pub frontend: isize,
pub protocol: NetworkProtocol,
}
#[derive(Clone)]
pub struct CacheVolume {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl CacheVolume {
pub async fn id(&self) -> Result<CacheVolumeId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct Container {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerAsServiceOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub args: Option<Vec<&'a str>>,
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub experimental_privileged_nesting: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub insecure_root_capabilities: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub no_init: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub use_entrypoint: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerAsTarballOpts {
#[builder(setter(into, strip_option), default)]
pub forced_compression: Option<ImageLayerCompression>,
#[builder(setter(into, strip_option), default)]
pub media_types: Option<ImageMediaTypes>,
#[builder(setter(into, strip_option), default)]
pub platform_variants: Option<Vec<ContainerId>>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerBuildOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub build_args: Option<Vec<BuildArg>>,
#[builder(setter(into, strip_option), default)]
pub dockerfile: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub secrets: Option<Vec<SecretId>>,
#[builder(setter(into, strip_option), default)]
pub target: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerDirectoryOpts {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerExportOpts {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub forced_compression: Option<ImageLayerCompression>,
#[builder(setter(into, strip_option), default)]
pub media_types: Option<ImageMediaTypes>,
#[builder(setter(into, strip_option), default)]
pub platform_variants: Option<Vec<ContainerId>>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerFileOpts {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerImportOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub tag: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerPublishOpts {
#[builder(setter(into, strip_option), default)]
pub forced_compression: Option<ImageLayerCompression>,
#[builder(setter(into, strip_option), default)]
pub media_types: Option<ImageMediaTypes>,
#[builder(setter(into, strip_option), default)]
pub platform_variants: Option<Vec<ContainerId>>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerTerminalOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub cmd: Option<Vec<&'a str>>,
#[builder(setter(into, strip_option), default)]
pub experimental_privileged_nesting: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub insecure_root_capabilities: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerUpOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub args: Option<Vec<&'a str>>,
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub experimental_privileged_nesting: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub insecure_root_capabilities: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub no_init: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub ports: Option<Vec<PortForward>>,
#[builder(setter(into, strip_option), default)]
pub random: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub use_entrypoint: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithDefaultTerminalCmdOpts {
#[builder(setter(into, strip_option), default)]
pub experimental_privileged_nesting: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub insecure_root_capabilities: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithDirectoryOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub exclude: Option<Vec<&'a str>>,
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub include: Option<Vec<&'a str>>,
#[builder(setter(into, strip_option), default)]
pub owner: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithEntrypointOpts {
#[builder(setter(into, strip_option), default)]
pub keep_default_args: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithEnvVariableOpts {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithExecOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub expect: Option<ReturnType>,
#[builder(setter(into, strip_option), default)]
pub experimental_privileged_nesting: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub insecure_root_capabilities: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub no_init: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub redirect_stderr: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub redirect_stdout: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub stdin: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub use_entrypoint: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithExposedPortOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub description: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub experimental_skip_healthcheck: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub protocol: Option<NetworkProtocol>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithFileOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub owner: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub permissions: Option<isize>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithFilesOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub owner: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub permissions: Option<isize>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithMountedCacheOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub owner: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub sharing: Option<CacheSharingMode>,
#[builder(setter(into, strip_option), default)]
pub source: Option<DirectoryId>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithMountedDirectoryOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub owner: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithMountedFileOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub owner: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithMountedSecretOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub mode: Option<isize>,
#[builder(setter(into, strip_option), default)]
pub owner: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithMountedTempOpts {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub size: Option<isize>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithNewFileOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub owner: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub permissions: Option<isize>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithUnixSocketOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub owner: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithWorkdirOpts {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithoutDirectoryOpts {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithoutEntrypointOpts {
#[builder(setter(into, strip_option), default)]
pub keep_default_args: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithoutExposedPortOpts {
#[builder(setter(into, strip_option), default)]
pub protocol: Option<NetworkProtocol>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithoutFileOpts {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithoutFilesOpts {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithoutMountOpts {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithoutUnixSocketOpts {
#[builder(setter(into, strip_option), default)]
pub expand: Option<bool>,
}
impl Container {
pub fn as_service(&self) -> Service {
let query = self.selection.select("asService");
Service {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn as_service_opts<'a>(&self, opts: ContainerAsServiceOpts<'a>) -> Service {
let mut query = self.selection.select("asService");
if let Some(args) = opts.args {
query = query.arg("args", args);
}
if let Some(use_entrypoint) = opts.use_entrypoint {
query = query.arg("useEntrypoint", use_entrypoint);
}
if let Some(experimental_privileged_nesting) = opts.experimental_privileged_nesting {
query = query.arg(
"experimentalPrivilegedNesting",
experimental_privileged_nesting,
);
}
if let Some(insecure_root_capabilities) = opts.insecure_root_capabilities {
query = query.arg("insecureRootCapabilities", insecure_root_capabilities);
}
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
if let Some(no_init) = opts.no_init {
query = query.arg("noInit", no_init);
}
Service {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn as_tarball(&self) -> File {
let query = self.selection.select("asTarball");
File {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn as_tarball_opts(&self, opts: ContainerAsTarballOpts) -> File {
let mut query = self.selection.select("asTarball");
if let Some(platform_variants) = opts.platform_variants {
query = query.arg("platformVariants", platform_variants);
}
if let Some(forced_compression) = opts.forced_compression {
query = query.arg("forcedCompression", forced_compression);
}
if let Some(media_types) = opts.media_types {
query = query.arg("mediaTypes", media_types);
}
File {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn build(&self, context: impl IntoID<DirectoryId>) -> Container {
let mut query = self.selection.select("build");
query = query.arg_lazy(
"context",
Box::new(move || {
let context = context.clone();
Box::pin(async move { context.into_id().await.unwrap().quote() })
}),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn build_opts<'a>(
&self,
context: impl IntoID<DirectoryId>,
opts: ContainerBuildOpts<'a>,
) -> Container {
let mut query = self.selection.select("build");
query = query.arg_lazy(
"context",
Box::new(move || {
let context = context.clone();
Box::pin(async move { context.into_id().await.unwrap().quote() })
}),
);
if let Some(dockerfile) = opts.dockerfile {
query = query.arg("dockerfile", dockerfile);
}
if let Some(target) = opts.target {
query = query.arg("target", target);
}
if let Some(build_args) = opts.build_args {
query = query.arg("buildArgs", build_args);
}
if let Some(secrets) = opts.secrets {
query = query.arg("secrets", secrets);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn default_args(&self) -> Result<Vec<String>, DaggerError> {
let query = self.selection.select("defaultArgs");
query.execute(self.graphql_client.clone()).await
}
pub fn directory(&self, path: impl Into<String>) -> Directory {
let mut query = self.selection.select("directory");
query = query.arg("path", path.into());
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn directory_opts(
&self,
path: impl Into<String>,
opts: ContainerDirectoryOpts,
) -> Directory {
let mut query = self.selection.select("directory");
query = query.arg("path", path.into());
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn entrypoint(&self) -> Result<Vec<String>, DaggerError> {
let query = self.selection.select("entrypoint");
query.execute(self.graphql_client.clone()).await
}
pub async fn env_variable(&self, name: impl Into<String>) -> Result<String, DaggerError> {
let mut query = self.selection.select("envVariable");
query = query.arg("name", name.into());
query.execute(self.graphql_client.clone()).await
}
pub fn env_variables(&self) -> Vec<EnvVariable> {
let query = self.selection.select("envVariables");
vec![EnvVariable {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub async fn exit_code(&self) -> Result<isize, DaggerError> {
let query = self.selection.select("exitCode");
query.execute(self.graphql_client.clone()).await
}
pub fn experimental_with_all_gp_us(&self) -> Container {
let query = self.selection.select("experimentalWithAllGPUs");
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn experimental_with_gpu(&self, devices: Vec<impl Into<String>>) -> Container {
let mut query = self.selection.select("experimentalWithGPU");
query = query.arg(
"devices",
devices
.into_iter()
.map(|i| i.into())
.collect::<Vec<String>>(),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn export(&self, path: impl Into<String>) -> Result<String, DaggerError> {
let mut query = self.selection.select("export");
query = query.arg("path", path.into());
query.execute(self.graphql_client.clone()).await
}
pub async fn export_opts(
&self,
path: impl Into<String>,
opts: ContainerExportOpts,
) -> Result<String, DaggerError> {
let mut query = self.selection.select("export");
query = query.arg("path", path.into());
if let Some(platform_variants) = opts.platform_variants {
query = query.arg("platformVariants", platform_variants);
}
if let Some(forced_compression) = opts.forced_compression {
query = query.arg("forcedCompression", forced_compression);
}
if let Some(media_types) = opts.media_types {
query = query.arg("mediaTypes", media_types);
}
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
query.execute(self.graphql_client.clone()).await
}
pub fn exposed_ports(&self) -> Vec<Port> {
let query = self.selection.select("exposedPorts");
vec![Port {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub fn file(&self, path: impl Into<String>) -> File {
let mut query = self.selection.select("file");
query = query.arg("path", path.into());
File {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn file_opts(&self, path: impl Into<String>, opts: ContainerFileOpts) -> File {
let mut query = self.selection.select("file");
query = query.arg("path", path.into());
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
File {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn from(&self, address: impl Into<String>) -> Container {
let mut query = self.selection.select("from");
query = query.arg("address", address.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn id(&self) -> Result<ContainerId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn image_ref(&self) -> Result<String, DaggerError> {
let query = self.selection.select("imageRef");
query.execute(self.graphql_client.clone()).await
}
pub fn import(&self, source: impl IntoID<FileId>) -> Container {
let mut query = self.selection.select("import");
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn import_opts<'a>(
&self,
source: impl IntoID<FileId>,
opts: ContainerImportOpts<'a>,
) -> Container {
let mut query = self.selection.select("import");
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
if let Some(tag) = opts.tag {
query = query.arg("tag", tag);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn label(&self, name: impl Into<String>) -> Result<String, DaggerError> {
let mut query = self.selection.select("label");
query = query.arg("name", name.into());
query.execute(self.graphql_client.clone()).await
}
pub fn labels(&self) -> Vec<Label> {
let query = self.selection.select("labels");
vec![Label {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub async fn mounts(&self) -> Result<Vec<String>, DaggerError> {
let query = self.selection.select("mounts");
query.execute(self.graphql_client.clone()).await
}
pub async fn platform(&self) -> Result<Platform, DaggerError> {
let query = self.selection.select("platform");
query.execute(self.graphql_client.clone()).await
}
pub async fn publish(&self, address: impl Into<String>) -> Result<String, DaggerError> {
let mut query = self.selection.select("publish");
query = query.arg("address", address.into());
query.execute(self.graphql_client.clone()).await
}
pub async fn publish_opts(
&self,
address: impl Into<String>,
opts: ContainerPublishOpts,
) -> Result<String, DaggerError> {
let mut query = self.selection.select("publish");
query = query.arg("address", address.into());
if let Some(platform_variants) = opts.platform_variants {
query = query.arg("platformVariants", platform_variants);
}
if let Some(forced_compression) = opts.forced_compression {
query = query.arg("forcedCompression", forced_compression);
}
if let Some(media_types) = opts.media_types {
query = query.arg("mediaTypes", media_types);
}
query.execute(self.graphql_client.clone()).await
}
pub fn rootfs(&self) -> Directory {
let query = self.selection.select("rootfs");
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn stderr(&self) -> Result<String, DaggerError> {
let query = self.selection.select("stderr");
query.execute(self.graphql_client.clone()).await
}
pub async fn stdout(&self) -> Result<String, DaggerError> {
let query = self.selection.select("stdout");
query.execute(self.graphql_client.clone()).await
}
pub async fn sync(&self) -> Result<ContainerId, DaggerError> {
let query = self.selection.select("sync");
query.execute(self.graphql_client.clone()).await
}
pub fn terminal(&self) -> Container {
let query = self.selection.select("terminal");
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn terminal_opts<'a>(&self, opts: ContainerTerminalOpts<'a>) -> Container {
let mut query = self.selection.select("terminal");
if let Some(cmd) = opts.cmd {
query = query.arg("cmd", cmd);
}
if let Some(experimental_privileged_nesting) = opts.experimental_privileged_nesting {
query = query.arg(
"experimentalPrivilegedNesting",
experimental_privileged_nesting,
);
}
if let Some(insecure_root_capabilities) = opts.insecure_root_capabilities {
query = query.arg("insecureRootCapabilities", insecure_root_capabilities);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn up(&self) -> Result<Void, DaggerError> {
let query = self.selection.select("up");
query.execute(self.graphql_client.clone()).await
}
pub async fn up_opts<'a>(&self, opts: ContainerUpOpts<'a>) -> Result<Void, DaggerError> {
let mut query = self.selection.select("up");
if let Some(ports) = opts.ports {
query = query.arg("ports", ports);
}
if let Some(random) = opts.random {
query = query.arg("random", random);
}
if let Some(args) = opts.args {
query = query.arg("args", args);
}
if let Some(use_entrypoint) = opts.use_entrypoint {
query = query.arg("useEntrypoint", use_entrypoint);
}
if let Some(experimental_privileged_nesting) = opts.experimental_privileged_nesting {
query = query.arg(
"experimentalPrivilegedNesting",
experimental_privileged_nesting,
);
}
if let Some(insecure_root_capabilities) = opts.insecure_root_capabilities {
query = query.arg("insecureRootCapabilities", insecure_root_capabilities);
}
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
if let Some(no_init) = opts.no_init {
query = query.arg("noInit", no_init);
}
query.execute(self.graphql_client.clone()).await
}
pub async fn user(&self) -> Result<String, DaggerError> {
let query = self.selection.select("user");
query.execute(self.graphql_client.clone()).await
}
pub fn with_annotation(&self, name: impl Into<String>, value: impl Into<String>) -> Container {
let mut query = self.selection.select("withAnnotation");
query = query.arg("name", name.into());
query = query.arg("value", value.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_default_args(&self, args: Vec<impl Into<String>>) -> Container {
let mut query = self.selection.select("withDefaultArgs");
query = query.arg(
"args",
args.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_default_terminal_cmd(&self, args: Vec<impl Into<String>>) -> Container {
let mut query = self.selection.select("withDefaultTerminalCmd");
query = query.arg(
"args",
args.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_default_terminal_cmd_opts(
&self,
args: Vec<impl Into<String>>,
opts: ContainerWithDefaultTerminalCmdOpts,
) -> Container {
let mut query = self.selection.select("withDefaultTerminalCmd");
query = query.arg(
"args",
args.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
);
if let Some(experimental_privileged_nesting) = opts.experimental_privileged_nesting {
query = query.arg(
"experimentalPrivilegedNesting",
experimental_privileged_nesting,
);
}
if let Some(insecure_root_capabilities) = opts.insecure_root_capabilities {
query = query.arg("insecureRootCapabilities", insecure_root_capabilities);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_directory(
&self,
path: impl Into<String>,
directory: impl IntoID<DirectoryId>,
) -> Container {
let mut query = self.selection.select("withDirectory");
query = query.arg("path", path.into());
query = query.arg_lazy(
"directory",
Box::new(move || {
let directory = directory.clone();
Box::pin(async move { directory.into_id().await.unwrap().quote() })
}),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_directory_opts<'a>(
&self,
path: impl Into<String>,
directory: impl IntoID<DirectoryId>,
opts: ContainerWithDirectoryOpts<'a>,
) -> Container {
let mut query = self.selection.select("withDirectory");
query = query.arg("path", path.into());
query = query.arg_lazy(
"directory",
Box::new(move || {
let directory = directory.clone();
Box::pin(async move { directory.into_id().await.unwrap().quote() })
}),
);
if let Some(exclude) = opts.exclude {
query = query.arg("exclude", exclude);
}
if let Some(include) = opts.include {
query = query.arg("include", include);
}
if let Some(owner) = opts.owner {
query = query.arg("owner", owner);
}
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_entrypoint(&self, args: Vec<impl Into<String>>) -> Container {
let mut query = self.selection.select("withEntrypoint");
query = query.arg(
"args",
args.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_entrypoint_opts(
&self,
args: Vec<impl Into<String>>,
opts: ContainerWithEntrypointOpts,
) -> Container {
let mut query = self.selection.select("withEntrypoint");
query = query.arg(
"args",
args.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
);
if let Some(keep_default_args) = opts.keep_default_args {
query = query.arg("keepDefaultArgs", keep_default_args);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_env_variable(
&self,
name: impl Into<String>,
value: impl Into<String>,
) -> Container {
let mut query = self.selection.select("withEnvVariable");
query = query.arg("name", name.into());
query = query.arg("value", value.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_env_variable_opts(
&self,
name: impl Into<String>,
value: impl Into<String>,
opts: ContainerWithEnvVariableOpts,
) -> Container {
let mut query = self.selection.select("withEnvVariable");
query = query.arg("name", name.into());
query = query.arg("value", value.into());
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_exec(&self, args: Vec<impl Into<String>>) -> Container {
let mut query = self.selection.select("withExec");
query = query.arg(
"args",
args.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_exec_opts<'a>(
&self,
args: Vec<impl Into<String>>,
opts: ContainerWithExecOpts<'a>,
) -> Container {
let mut query = self.selection.select("withExec");
query = query.arg(
"args",
args.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
);
if let Some(use_entrypoint) = opts.use_entrypoint {
query = query.arg("useEntrypoint", use_entrypoint);
}
if let Some(stdin) = opts.stdin {
query = query.arg("stdin", stdin);
}
if let Some(redirect_stdout) = opts.redirect_stdout {
query = query.arg("redirectStdout", redirect_stdout);
}
if let Some(redirect_stderr) = opts.redirect_stderr {
query = query.arg("redirectStderr", redirect_stderr);
}
if let Some(expect) = opts.expect {
query = query.arg("expect", expect);
}
if let Some(experimental_privileged_nesting) = opts.experimental_privileged_nesting {
query = query.arg(
"experimentalPrivilegedNesting",
experimental_privileged_nesting,
);
}
if let Some(insecure_root_capabilities) = opts.insecure_root_capabilities {
query = query.arg("insecureRootCapabilities", insecure_root_capabilities);
}
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
if let Some(no_init) = opts.no_init {
query = query.arg("noInit", no_init);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_exposed_port(&self, port: isize) -> Container {
let mut query = self.selection.select("withExposedPort");
query = query.arg("port", port);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_exposed_port_opts<'a>(
&self,
port: isize,
opts: ContainerWithExposedPortOpts<'a>,
) -> Container {
let mut query = self.selection.select("withExposedPort");
query = query.arg("port", port);
if let Some(protocol) = opts.protocol {
query = query.arg("protocol", protocol);
}
if let Some(description) = opts.description {
query = query.arg("description", description);
}
if let Some(experimental_skip_healthcheck) = opts.experimental_skip_healthcheck {
query = query.arg("experimentalSkipHealthcheck", experimental_skip_healthcheck);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_file(&self, path: impl Into<String>, source: impl IntoID<FileId>) -> Container {
let mut query = self.selection.select("withFile");
query = query.arg("path", path.into());
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_file_opts<'a>(
&self,
path: impl Into<String>,
source: impl IntoID<FileId>,
opts: ContainerWithFileOpts<'a>,
) -> Container {
let mut query = self.selection.select("withFile");
query = query.arg("path", path.into());
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
if let Some(permissions) = opts.permissions {
query = query.arg("permissions", permissions);
}
if let Some(owner) = opts.owner {
query = query.arg("owner", owner);
}
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_files(&self, path: impl Into<String>, sources: Vec<FileId>) -> Container {
let mut query = self.selection.select("withFiles");
query = query.arg("path", path.into());
query = query.arg("sources", sources);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_files_opts<'a>(
&self,
path: impl Into<String>,
sources: Vec<FileId>,
opts: ContainerWithFilesOpts<'a>,
) -> Container {
let mut query = self.selection.select("withFiles");
query = query.arg("path", path.into());
query = query.arg("sources", sources);
if let Some(permissions) = opts.permissions {
query = query.arg("permissions", permissions);
}
if let Some(owner) = opts.owner {
query = query.arg("owner", owner);
}
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_label(&self, name: impl Into<String>, value: impl Into<String>) -> Container {
let mut query = self.selection.select("withLabel");
query = query.arg("name", name.into());
query = query.arg("value", value.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_mounted_cache(
&self,
path: impl Into<String>,
cache: impl IntoID<CacheVolumeId>,
) -> Container {
let mut query = self.selection.select("withMountedCache");
query = query.arg("path", path.into());
query = query.arg_lazy(
"cache",
Box::new(move || {
let cache = cache.clone();
Box::pin(async move { cache.into_id().await.unwrap().quote() })
}),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_mounted_cache_opts<'a>(
&self,
path: impl Into<String>,
cache: impl IntoID<CacheVolumeId>,
opts: ContainerWithMountedCacheOpts<'a>,
) -> Container {
let mut query = self.selection.select("withMountedCache");
query = query.arg("path", path.into());
query = query.arg_lazy(
"cache",
Box::new(move || {
let cache = cache.clone();
Box::pin(async move { cache.into_id().await.unwrap().quote() })
}),
);
if let Some(source) = opts.source {
query = query.arg("source", source);
}
if let Some(sharing) = opts.sharing {
query = query.arg("sharing", sharing);
}
if let Some(owner) = opts.owner {
query = query.arg("owner", owner);
}
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_mounted_directory(
&self,
path: impl Into<String>,
source: impl IntoID<DirectoryId>,
) -> Container {
let mut query = self.selection.select("withMountedDirectory");
query = query.arg("path", path.into());
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_mounted_directory_opts<'a>(
&self,
path: impl Into<String>,
source: impl IntoID<DirectoryId>,
opts: ContainerWithMountedDirectoryOpts<'a>,
) -> Container {
let mut query = self.selection.select("withMountedDirectory");
query = query.arg("path", path.into());
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
if let Some(owner) = opts.owner {
query = query.arg("owner", owner);
}
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_mounted_file(
&self,
path: impl Into<String>,
source: impl IntoID<FileId>,
) -> Container {
let mut query = self.selection.select("withMountedFile");
query = query.arg("path", path.into());
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_mounted_file_opts<'a>(
&self,
path: impl Into<String>,
source: impl IntoID<FileId>,
opts: ContainerWithMountedFileOpts<'a>,
) -> Container {
let mut query = self.selection.select("withMountedFile");
query = query.arg("path", path.into());
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
if let Some(owner) = opts.owner {
query = query.arg("owner", owner);
}
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_mounted_secret(
&self,
path: impl Into<String>,
source: impl IntoID<SecretId>,
) -> Container {
let mut query = self.selection.select("withMountedSecret");
query = query.arg("path", path.into());
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_mounted_secret_opts<'a>(
&self,
path: impl Into<String>,
source: impl IntoID<SecretId>,
opts: ContainerWithMountedSecretOpts<'a>,
) -> Container {
let mut query = self.selection.select("withMountedSecret");
query = query.arg("path", path.into());
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
if let Some(owner) = opts.owner {
query = query.arg("owner", owner);
}
if let Some(mode) = opts.mode {
query = query.arg("mode", mode);
}
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_mounted_temp(&self, path: impl Into<String>) -> Container {
let mut query = self.selection.select("withMountedTemp");
query = query.arg("path", path.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_mounted_temp_opts(
&self,
path: impl Into<String>,
opts: ContainerWithMountedTempOpts,
) -> Container {
let mut query = self.selection.select("withMountedTemp");
query = query.arg("path", path.into());
if let Some(size) = opts.size {
query = query.arg("size", size);
}
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_new_file(&self, path: impl Into<String>, contents: impl Into<String>) -> Container {
let mut query = self.selection.select("withNewFile");
query = query.arg("path", path.into());
query = query.arg("contents", contents.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_new_file_opts<'a>(
&self,
path: impl Into<String>,
contents: impl Into<String>,
opts: ContainerWithNewFileOpts<'a>,
) -> Container {
let mut query = self.selection.select("withNewFile");
query = query.arg("path", path.into());
query = query.arg("contents", contents.into());
if let Some(permissions) = opts.permissions {
query = query.arg("permissions", permissions);
}
if let Some(owner) = opts.owner {
query = query.arg("owner", owner);
}
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_registry_auth(
&self,
address: impl Into<String>,
username: impl Into<String>,
secret: impl IntoID<SecretId>,
) -> Container {
let mut query = self.selection.select("withRegistryAuth");
query = query.arg("address", address.into());
query = query.arg("username", username.into());
query = query.arg_lazy(
"secret",
Box::new(move || {
let secret = secret.clone();
Box::pin(async move { secret.into_id().await.unwrap().quote() })
}),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_rootfs(&self, directory: impl IntoID<DirectoryId>) -> Container {
let mut query = self.selection.select("withRootfs");
query = query.arg_lazy(
"directory",
Box::new(move || {
let directory = directory.clone();
Box::pin(async move { directory.into_id().await.unwrap().quote() })
}),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_secret_variable(
&self,
name: impl Into<String>,
secret: impl IntoID<SecretId>,
) -> Container {
let mut query = self.selection.select("withSecretVariable");
query = query.arg("name", name.into());
query = query.arg_lazy(
"secret",
Box::new(move || {
let secret = secret.clone();
Box::pin(async move { secret.into_id().await.unwrap().quote() })
}),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_service_binding(
&self,
alias: impl Into<String>,
service: impl IntoID<ServiceId>,
) -> Container {
let mut query = self.selection.select("withServiceBinding");
query = query.arg("alias", alias.into());
query = query.arg_lazy(
"service",
Box::new(move || {
let service = service.clone();
Box::pin(async move { service.into_id().await.unwrap().quote() })
}),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_unix_socket(
&self,
path: impl Into<String>,
source: impl IntoID<SocketId>,
) -> Container {
let mut query = self.selection.select("withUnixSocket");
query = query.arg("path", path.into());
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_unix_socket_opts<'a>(
&self,
path: impl Into<String>,
source: impl IntoID<SocketId>,
opts: ContainerWithUnixSocketOpts<'a>,
) -> Container {
let mut query = self.selection.select("withUnixSocket");
query = query.arg("path", path.into());
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
if let Some(owner) = opts.owner {
query = query.arg("owner", owner);
}
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_user(&self, name: impl Into<String>) -> Container {
let mut query = self.selection.select("withUser");
query = query.arg("name", name.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_workdir(&self, path: impl Into<String>) -> Container {
let mut query = self.selection.select("withWorkdir");
query = query.arg("path", path.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_workdir_opts(
&self,
path: impl Into<String>,
opts: ContainerWithWorkdirOpts,
) -> Container {
let mut query = self.selection.select("withWorkdir");
query = query.arg("path", path.into());
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_annotation(&self, name: impl Into<String>) -> Container {
let mut query = self.selection.select("withoutAnnotation");
query = query.arg("name", name.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_default_args(&self) -> Container {
let query = self.selection.select("withoutDefaultArgs");
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_directory(&self, path: impl Into<String>) -> Container {
let mut query = self.selection.select("withoutDirectory");
query = query.arg("path", path.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_directory_opts(
&self,
path: impl Into<String>,
opts: ContainerWithoutDirectoryOpts,
) -> Container {
let mut query = self.selection.select("withoutDirectory");
query = query.arg("path", path.into());
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_entrypoint(&self) -> Container {
let query = self.selection.select("withoutEntrypoint");
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_entrypoint_opts(&self, opts: ContainerWithoutEntrypointOpts) -> Container {
let mut query = self.selection.select("withoutEntrypoint");
if let Some(keep_default_args) = opts.keep_default_args {
query = query.arg("keepDefaultArgs", keep_default_args);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_env_variable(&self, name: impl Into<String>) -> Container {
let mut query = self.selection.select("withoutEnvVariable");
query = query.arg("name", name.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_exposed_port(&self, port: isize) -> Container {
let mut query = self.selection.select("withoutExposedPort");
query = query.arg("port", port);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_exposed_port_opts(
&self,
port: isize,
opts: ContainerWithoutExposedPortOpts,
) -> Container {
let mut query = self.selection.select("withoutExposedPort");
query = query.arg("port", port);
if let Some(protocol) = opts.protocol {
query = query.arg("protocol", protocol);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_file(&self, path: impl Into<String>) -> Container {
let mut query = self.selection.select("withoutFile");
query = query.arg("path", path.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_file_opts(
&self,
path: impl Into<String>,
opts: ContainerWithoutFileOpts,
) -> Container {
let mut query = self.selection.select("withoutFile");
query = query.arg("path", path.into());
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_files(&self, paths: Vec<impl Into<String>>) -> Container {
let mut query = self.selection.select("withoutFiles");
query = query.arg(
"paths",
paths.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_files_opts(
&self,
paths: Vec<impl Into<String>>,
opts: ContainerWithoutFilesOpts,
) -> Container {
let mut query = self.selection.select("withoutFiles");
query = query.arg(
"paths",
paths.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
);
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_label(&self, name: impl Into<String>) -> Container {
let mut query = self.selection.select("withoutLabel");
query = query.arg("name", name.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_mount(&self, path: impl Into<String>) -> Container {
let mut query = self.selection.select("withoutMount");
query = query.arg("path", path.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_mount_opts(
&self,
path: impl Into<String>,
opts: ContainerWithoutMountOpts,
) -> Container {
let mut query = self.selection.select("withoutMount");
query = query.arg("path", path.into());
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_registry_auth(&self, address: impl Into<String>) -> Container {
let mut query = self.selection.select("withoutRegistryAuth");
query = query.arg("address", address.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_secret_variable(&self, name: impl Into<String>) -> Container {
let mut query = self.selection.select("withoutSecretVariable");
query = query.arg("name", name.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_unix_socket(&self, path: impl Into<String>) -> Container {
let mut query = self.selection.select("withoutUnixSocket");
query = query.arg("path", path.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_unix_socket_opts(
&self,
path: impl Into<String>,
opts: ContainerWithoutUnixSocketOpts,
) -> Container {
let mut query = self.selection.select("withoutUnixSocket");
query = query.arg("path", path.into());
if let Some(expand) = opts.expand {
query = query.arg("expand", expand);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_user(&self) -> Container {
let query = self.selection.select("withoutUser");
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_workdir(&self) -> Container {
let query = self.selection.select("withoutWorkdir");
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn workdir(&self) -> Result<String, DaggerError> {
let query = self.selection.select("workdir");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct CurrentModule {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
#[derive(Builder, Debug, PartialEq)]
pub struct CurrentModuleWorkdirOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub exclude: Option<Vec<&'a str>>,
#[builder(setter(into, strip_option), default)]
pub include: Option<Vec<&'a str>>,
}
impl CurrentModule {
pub async fn id(&self) -> Result<CurrentModuleId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub fn source(&self) -> Directory {
let query = self.selection.select("source");
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn workdir(&self, path: impl Into<String>) -> Directory {
let mut query = self.selection.select("workdir");
query = query.arg("path", path.into());
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn workdir_opts<'a>(
&self,
path: impl Into<String>,
opts: CurrentModuleWorkdirOpts<'a>,
) -> Directory {
let mut query = self.selection.select("workdir");
query = query.arg("path", path.into());
if let Some(exclude) = opts.exclude {
query = query.arg("exclude", exclude);
}
if let Some(include) = opts.include {
query = query.arg("include", include);
}
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn workdir_file(&self, path: impl Into<String>) -> File {
let mut query = self.selection.select("workdirFile");
query = query.arg("path", path.into());
File {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Clone)]
pub struct Directory {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
#[derive(Builder, Debug, PartialEq)]
pub struct DirectoryAsModuleOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub engine_version: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub source_root_path: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct DirectoryDockerBuildOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub build_args: Option<Vec<BuildArg>>,
#[builder(setter(into, strip_option), default)]
pub dockerfile: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub platform: Option<Platform>,
#[builder(setter(into, strip_option), default)]
pub secrets: Option<Vec<SecretId>>,
#[builder(setter(into, strip_option), default)]
pub target: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct DirectoryEntriesOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub path: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct DirectoryExportOpts {
#[builder(setter(into, strip_option), default)]
pub wipe: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct DirectoryTerminalOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub cmd: Option<Vec<&'a str>>,
#[builder(setter(into, strip_option), default)]
pub container: Option<ContainerId>,
#[builder(setter(into, strip_option), default)]
pub experimental_privileged_nesting: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub insecure_root_capabilities: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct DirectoryWithDirectoryOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub exclude: Option<Vec<&'a str>>,
#[builder(setter(into, strip_option), default)]
pub include: Option<Vec<&'a str>>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct DirectoryWithFileOpts {
#[builder(setter(into, strip_option), default)]
pub permissions: Option<isize>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct DirectoryWithFilesOpts {
#[builder(setter(into, strip_option), default)]
pub permissions: Option<isize>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct DirectoryWithNewDirectoryOpts {
#[builder(setter(into, strip_option), default)]
pub permissions: Option<isize>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct DirectoryWithNewFileOpts {
#[builder(setter(into, strip_option), default)]
pub permissions: Option<isize>,
}
impl Directory {
pub fn as_module(&self) -> Module {
let query = self.selection.select("asModule");
Module {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn as_module_opts<'a>(&self, opts: DirectoryAsModuleOpts<'a>) -> Module {
let mut query = self.selection.select("asModule");
if let Some(source_root_path) = opts.source_root_path {
query = query.arg("sourceRootPath", source_root_path);
}
if let Some(engine_version) = opts.engine_version {
query = query.arg("engineVersion", engine_version);
}
Module {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn diff(&self, other: impl IntoID<DirectoryId>) -> Directory {
let mut query = self.selection.select("diff");
query = query.arg_lazy(
"other",
Box::new(move || {
let other = other.clone();
Box::pin(async move { other.into_id().await.unwrap().quote() })
}),
);
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn digest(&self) -> Result<String, DaggerError> {
let query = self.selection.select("digest");
query.execute(self.graphql_client.clone()).await
}
pub fn directory(&self, path: impl Into<String>) -> Directory {
let mut query = self.selection.select("directory");
query = query.arg("path", path.into());
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn docker_build(&self) -> Container {
let query = self.selection.select("dockerBuild");
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn docker_build_opts<'a>(&self, opts: DirectoryDockerBuildOpts<'a>) -> Container {
let mut query = self.selection.select("dockerBuild");
if let Some(platform) = opts.platform {
query = query.arg("platform", platform);
}
if let Some(dockerfile) = opts.dockerfile {
query = query.arg("dockerfile", dockerfile);
}
if let Some(target) = opts.target {
query = query.arg("target", target);
}
if let Some(build_args) = opts.build_args {
query = query.arg("buildArgs", build_args);
}
if let Some(secrets) = opts.secrets {
query = query.arg("secrets", secrets);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn entries(&self) -> Result<Vec<String>, DaggerError> {
let query = self.selection.select("entries");
query.execute(self.graphql_client.clone()).await
}
pub async fn entries_opts<'a>(
&self,
opts: DirectoryEntriesOpts<'a>,
) -> Result<Vec<String>, DaggerError> {
let mut query = self.selection.select("entries");
if let Some(path) = opts.path {
query = query.arg("path", path);
}
query.execute(self.graphql_client.clone()).await
}
pub async fn export(&self, path: impl Into<String>) -> Result<String, DaggerError> {
let mut query = self.selection.select("export");
query = query.arg("path", path.into());
query.execute(self.graphql_client.clone()).await
}
pub async fn export_opts(
&self,
path: impl Into<String>,
opts: DirectoryExportOpts,
) -> Result<String, DaggerError> {
let mut query = self.selection.select("export");
query = query.arg("path", path.into());
if let Some(wipe) = opts.wipe {
query = query.arg("wipe", wipe);
}
query.execute(self.graphql_client.clone()).await
}
pub fn file(&self, path: impl Into<String>) -> File {
let mut query = self.selection.select("file");
query = query.arg("path", path.into());
File {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn glob(&self, pattern: impl Into<String>) -> Result<Vec<String>, DaggerError> {
let mut query = self.selection.select("glob");
query = query.arg("pattern", pattern.into());
query.execute(self.graphql_client.clone()).await
}
pub async fn id(&self) -> Result<DirectoryId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn sync(&self) -> Result<DirectoryId, DaggerError> {
let query = self.selection.select("sync");
query.execute(self.graphql_client.clone()).await
}
pub fn terminal(&self) -> Directory {
let query = self.selection.select("terminal");
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn terminal_opts<'a>(&self, opts: DirectoryTerminalOpts<'a>) -> Directory {
let mut query = self.selection.select("terminal");
if let Some(cmd) = opts.cmd {
query = query.arg("cmd", cmd);
}
if let Some(experimental_privileged_nesting) = opts.experimental_privileged_nesting {
query = query.arg(
"experimentalPrivilegedNesting",
experimental_privileged_nesting,
);
}
if let Some(insecure_root_capabilities) = opts.insecure_root_capabilities {
query = query.arg("insecureRootCapabilities", insecure_root_capabilities);
}
if let Some(container) = opts.container {
query = query.arg("container", container);
}
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_directory(
&self,
path: impl Into<String>,
directory: impl IntoID<DirectoryId>,
) -> Directory {
let mut query = self.selection.select("withDirectory");
query = query.arg("path", path.into());
query = query.arg_lazy(
"directory",
Box::new(move || {
let directory = directory.clone();
Box::pin(async move { directory.into_id().await.unwrap().quote() })
}),
);
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_directory_opts<'a>(
&self,
path: impl Into<String>,
directory: impl IntoID<DirectoryId>,
opts: DirectoryWithDirectoryOpts<'a>,
) -> Directory {
let mut query = self.selection.select("withDirectory");
query = query.arg("path", path.into());
query = query.arg_lazy(
"directory",
Box::new(move || {
let directory = directory.clone();
Box::pin(async move { directory.into_id().await.unwrap().quote() })
}),
);
if let Some(exclude) = opts.exclude {
query = query.arg("exclude", exclude);
}
if let Some(include) = opts.include {
query = query.arg("include", include);
}
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_file(&self, path: impl Into<String>, source: impl IntoID<FileId>) -> Directory {
let mut query = self.selection.select("withFile");
query = query.arg("path", path.into());
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_file_opts(
&self,
path: impl Into<String>,
source: impl IntoID<FileId>,
opts: DirectoryWithFileOpts,
) -> Directory {
let mut query = self.selection.select("withFile");
query = query.arg("path", path.into());
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
if let Some(permissions) = opts.permissions {
query = query.arg("permissions", permissions);
}
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_files(&self, path: impl Into<String>, sources: Vec<FileId>) -> Directory {
let mut query = self.selection.select("withFiles");
query = query.arg("path", path.into());
query = query.arg("sources", sources);
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_files_opts(
&self,
path: impl Into<String>,
sources: Vec<FileId>,
opts: DirectoryWithFilesOpts,
) -> Directory {
let mut query = self.selection.select("withFiles");
query = query.arg("path", path.into());
query = query.arg("sources", sources);
if let Some(permissions) = opts.permissions {
query = query.arg("permissions", permissions);
}
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_new_directory(&self, path: impl Into<String>) -> Directory {
let mut query = self.selection.select("withNewDirectory");
query = query.arg("path", path.into());
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_new_directory_opts(
&self,
path: impl Into<String>,
opts: DirectoryWithNewDirectoryOpts,
) -> Directory {
let mut query = self.selection.select("withNewDirectory");
query = query.arg("path", path.into());
if let Some(permissions) = opts.permissions {
query = query.arg("permissions", permissions);
}
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_new_file(&self, path: impl Into<String>, contents: impl Into<String>) -> Directory {
let mut query = self.selection.select("withNewFile");
query = query.arg("path", path.into());
query = query.arg("contents", contents.into());
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_new_file_opts(
&self,
path: impl Into<String>,
contents: impl Into<String>,
opts: DirectoryWithNewFileOpts,
) -> Directory {
let mut query = self.selection.select("withNewFile");
query = query.arg("path", path.into());
query = query.arg("contents", contents.into());
if let Some(permissions) = opts.permissions {
query = query.arg("permissions", permissions);
}
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_timestamps(&self, timestamp: isize) -> Directory {
let mut query = self.selection.select("withTimestamps");
query = query.arg("timestamp", timestamp);
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_directory(&self, path: impl Into<String>) -> Directory {
let mut query = self.selection.select("withoutDirectory");
query = query.arg("path", path.into());
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_file(&self, path: impl Into<String>) -> Directory {
let mut query = self.selection.select("withoutFile");
query = query.arg("path", path.into());
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_files(&self, paths: Vec<impl Into<String>>) -> Directory {
let mut query = self.selection.select("withoutFiles");
query = query.arg(
"paths",
paths.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
);
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Clone)]
pub struct Engine {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl Engine {
pub async fn id(&self) -> Result<EngineId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub fn local_cache(&self) -> EngineCache {
let query = self.selection.select("localCache");
EngineCache {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Clone)]
pub struct EngineCache {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
#[derive(Builder, Debug, PartialEq)]
pub struct EngineCacheEntrySetOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub key: Option<&'a str>,
}
impl EngineCache {
pub fn entry_set(&self) -> EngineCacheEntrySet {
let query = self.selection.select("entrySet");
EngineCacheEntrySet {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn entry_set_opts<'a>(&self, opts: EngineCacheEntrySetOpts<'a>) -> EngineCacheEntrySet {
let mut query = self.selection.select("entrySet");
if let Some(key) = opts.key {
query = query.arg("key", key);
}
EngineCacheEntrySet {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn id(&self) -> Result<EngineCacheId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn keep_bytes(&self) -> Result<isize, DaggerError> {
let query = self.selection.select("keepBytes");
query.execute(self.graphql_client.clone()).await
}
pub async fn max_used_space(&self) -> Result<isize, DaggerError> {
let query = self.selection.select("maxUsedSpace");
query.execute(self.graphql_client.clone()).await
}
pub async fn min_free_space(&self) -> Result<isize, DaggerError> {
let query = self.selection.select("minFreeSpace");
query.execute(self.graphql_client.clone()).await
}
pub async fn prune(&self) -> Result<Void, DaggerError> {
let query = self.selection.select("prune");
query.execute(self.graphql_client.clone()).await
}
pub async fn reserved_space(&self) -> Result<isize, DaggerError> {
let query = self.selection.select("reservedSpace");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct EngineCacheEntry {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl EngineCacheEntry {
pub async fn actively_used(&self) -> Result<bool, DaggerError> {
let query = self.selection.select("activelyUsed");
query.execute(self.graphql_client.clone()).await
}
pub async fn created_time_unix_nano(&self) -> Result<isize, DaggerError> {
let query = self.selection.select("createdTimeUnixNano");
query.execute(self.graphql_client.clone()).await
}
pub async fn description(&self) -> Result<String, DaggerError> {
let query = self.selection.select("description");
query.execute(self.graphql_client.clone()).await
}
pub async fn disk_space_bytes(&self) -> Result<isize, DaggerError> {
let query = self.selection.select("diskSpaceBytes");
query.execute(self.graphql_client.clone()).await
}
pub async fn id(&self) -> Result<EngineCacheEntryId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn most_recent_use_time_unix_nano(&self) -> Result<isize, DaggerError> {
let query = self.selection.select("mostRecentUseTimeUnixNano");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct EngineCacheEntrySet {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl EngineCacheEntrySet {
pub async fn disk_space_bytes(&self) -> Result<isize, DaggerError> {
let query = self.selection.select("diskSpaceBytes");
query.execute(self.graphql_client.clone()).await
}
pub fn entries(&self) -> Vec<EngineCacheEntry> {
let query = self.selection.select("entries");
vec![EngineCacheEntry {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub async fn entry_count(&self) -> Result<isize, DaggerError> {
let query = self.selection.select("entryCount");
query.execute(self.graphql_client.clone()).await
}
pub async fn id(&self) -> Result<EngineCacheEntrySetId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct EnumTypeDef {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl EnumTypeDef {
pub async fn description(&self) -> Result<String, DaggerError> {
let query = self.selection.select("description");
query.execute(self.graphql_client.clone()).await
}
pub async fn id(&self) -> Result<EnumTypeDefId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub fn source_map(&self) -> SourceMap {
let query = self.selection.select("sourceMap");
SourceMap {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn source_module_name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("sourceModuleName");
query.execute(self.graphql_client.clone()).await
}
pub fn values(&self) -> Vec<EnumValueTypeDef> {
let query = self.selection.select("values");
vec![EnumValueTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
}
#[derive(Clone)]
pub struct EnumValueTypeDef {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl EnumValueTypeDef {
pub async fn description(&self) -> Result<String, DaggerError> {
let query = self.selection.select("description");
query.execute(self.graphql_client.clone()).await
}
pub async fn id(&self) -> Result<EnumValueTypeDefId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub fn source_map(&self) -> SourceMap {
let query = self.selection.select("sourceMap");
SourceMap {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Clone)]
pub struct EnvVariable {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl EnvVariable {
pub async fn id(&self) -> Result<EnvVariableId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub async fn value(&self) -> Result<String, DaggerError> {
let query = self.selection.select("value");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct Error {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl Error {
pub async fn id(&self) -> Result<ErrorId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn message(&self) -> Result<String, DaggerError> {
let query = self.selection.select("message");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct FieldTypeDef {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl FieldTypeDef {
pub async fn description(&self) -> Result<String, DaggerError> {
let query = self.selection.select("description");
query.execute(self.graphql_client.clone()).await
}
pub async fn id(&self) -> Result<FieldTypeDefId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub fn source_map(&self) -> SourceMap {
let query = self.selection.select("sourceMap");
SourceMap {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn type_def(&self) -> TypeDef {
let query = self.selection.select("typeDef");
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Clone)]
pub struct File {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
#[derive(Builder, Debug, PartialEq)]
pub struct FileDigestOpts {
#[builder(setter(into, strip_option), default)]
pub exclude_metadata: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct FileExportOpts {
#[builder(setter(into, strip_option), default)]
pub allow_parent_dir_path: Option<bool>,
}
impl File {
pub async fn contents(&self) -> Result<String, DaggerError> {
let query = self.selection.select("contents");
query.execute(self.graphql_client.clone()).await
}
pub async fn digest(&self) -> Result<String, DaggerError> {
let query = self.selection.select("digest");
query.execute(self.graphql_client.clone()).await
}
pub async fn digest_opts(&self, opts: FileDigestOpts) -> Result<String, DaggerError> {
let mut query = self.selection.select("digest");
if let Some(exclude_metadata) = opts.exclude_metadata {
query = query.arg("excludeMetadata", exclude_metadata);
}
query.execute(self.graphql_client.clone()).await
}
pub async fn export(&self, path: impl Into<String>) -> Result<String, DaggerError> {
let mut query = self.selection.select("export");
query = query.arg("path", path.into());
query.execute(self.graphql_client.clone()).await
}
pub async fn export_opts(
&self,
path: impl Into<String>,
opts: FileExportOpts,
) -> Result<String, DaggerError> {
let mut query = self.selection.select("export");
query = query.arg("path", path.into());
if let Some(allow_parent_dir_path) = opts.allow_parent_dir_path {
query = query.arg("allowParentDirPath", allow_parent_dir_path);
}
query.execute(self.graphql_client.clone()).await
}
pub async fn id(&self) -> Result<FileId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub async fn size(&self) -> Result<isize, DaggerError> {
let query = self.selection.select("size");
query.execute(self.graphql_client.clone()).await
}
pub async fn sync(&self) -> Result<FileId, DaggerError> {
let query = self.selection.select("sync");
query.execute(self.graphql_client.clone()).await
}
pub fn with_name(&self, name: impl Into<String>) -> File {
let mut query = self.selection.select("withName");
query = query.arg("name", name.into());
File {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_timestamps(&self, timestamp: isize) -> File {
let mut query = self.selection.select("withTimestamps");
query = query.arg("timestamp", timestamp);
File {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Clone)]
pub struct Function {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
#[derive(Builder, Debug, PartialEq)]
pub struct FunctionWithArgOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub default_path: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub default_value: Option<Json>,
#[builder(setter(into, strip_option), default)]
pub description: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub ignore: Option<Vec<&'a str>>,
#[builder(setter(into, strip_option), default)]
pub source_map: Option<SourceMapId>,
}
impl Function {
pub fn args(&self) -> Vec<FunctionArg> {
let query = self.selection.select("args");
vec![FunctionArg {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub async fn description(&self) -> Result<String, DaggerError> {
let query = self.selection.select("description");
query.execute(self.graphql_client.clone()).await
}
pub async fn id(&self) -> Result<FunctionId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub fn return_type(&self) -> TypeDef {
let query = self.selection.select("returnType");
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn source_map(&self) -> SourceMap {
let query = self.selection.select("sourceMap");
SourceMap {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_arg(&self, name: impl Into<String>, type_def: impl IntoID<TypeDefId>) -> Function {
let mut query = self.selection.select("withArg");
query = query.arg("name", name.into());
query = query.arg_lazy(
"typeDef",
Box::new(move || {
let type_def = type_def.clone();
Box::pin(async move { type_def.into_id().await.unwrap().quote() })
}),
);
Function {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_arg_opts<'a>(
&self,
name: impl Into<String>,
type_def: impl IntoID<TypeDefId>,
opts: FunctionWithArgOpts<'a>,
) -> Function {
let mut query = self.selection.select("withArg");
query = query.arg("name", name.into());
query = query.arg_lazy(
"typeDef",
Box::new(move || {
let type_def = type_def.clone();
Box::pin(async move { type_def.into_id().await.unwrap().quote() })
}),
);
if let Some(description) = opts.description {
query = query.arg("description", description);
}
if let Some(default_value) = opts.default_value {
query = query.arg("defaultValue", default_value);
}
if let Some(default_path) = opts.default_path {
query = query.arg("defaultPath", default_path);
}
if let Some(ignore) = opts.ignore {
query = query.arg("ignore", ignore);
}
if let Some(source_map) = opts.source_map {
query = query.arg("sourceMap", source_map);
}
Function {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_description(&self, description: impl Into<String>) -> Function {
let mut query = self.selection.select("withDescription");
query = query.arg("description", description.into());
Function {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_source_map(&self, source_map: impl IntoID<SourceMapId>) -> Function {
let mut query = self.selection.select("withSourceMap");
query = query.arg_lazy(
"sourceMap",
Box::new(move || {
let source_map = source_map.clone();
Box::pin(async move { source_map.into_id().await.unwrap().quote() })
}),
);
Function {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Clone)]
pub struct FunctionArg {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl FunctionArg {
pub async fn default_path(&self) -> Result<String, DaggerError> {
let query = self.selection.select("defaultPath");
query.execute(self.graphql_client.clone()).await
}
pub async fn default_value(&self) -> Result<Json, DaggerError> {
let query = self.selection.select("defaultValue");
query.execute(self.graphql_client.clone()).await
}
pub async fn description(&self) -> Result<String, DaggerError> {
let query = self.selection.select("description");
query.execute(self.graphql_client.clone()).await
}
pub async fn id(&self) -> Result<FunctionArgId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn ignore(&self) -> Result<Vec<String>, DaggerError> {
let query = self.selection.select("ignore");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub fn source_map(&self) -> SourceMap {
let query = self.selection.select("sourceMap");
SourceMap {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn type_def(&self) -> TypeDef {
let query = self.selection.select("typeDef");
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Clone)]
pub struct FunctionCall {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl FunctionCall {
pub async fn id(&self) -> Result<FunctionCallId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub fn input_args(&self) -> Vec<FunctionCallArgValue> {
let query = self.selection.select("inputArgs");
vec![FunctionCallArgValue {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub async fn parent(&self) -> Result<Json, DaggerError> {
let query = self.selection.select("parent");
query.execute(self.graphql_client.clone()).await
}
pub async fn parent_name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("parentName");
query.execute(self.graphql_client.clone()).await
}
pub async fn return_error(&self, error: impl IntoID<ErrorId>) -> Result<Void, DaggerError> {
let mut query = self.selection.select("returnError");
query = query.arg_lazy(
"error",
Box::new(move || {
let error = error.clone();
Box::pin(async move { error.into_id().await.unwrap().quote() })
}),
);
query.execute(self.graphql_client.clone()).await
}
pub async fn return_value(&self, value: Json) -> Result<Void, DaggerError> {
let mut query = self.selection.select("returnValue");
query = query.arg("value", value);
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct FunctionCallArgValue {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl FunctionCallArgValue {
pub async fn id(&self) -> Result<FunctionCallArgValueId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub async fn value(&self) -> Result<Json, DaggerError> {
let query = self.selection.select("value");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct GeneratedCode {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl GeneratedCode {
pub fn code(&self) -> Directory {
let query = self.selection.select("code");
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn id(&self) -> Result<GeneratedCodeId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn vcs_generated_paths(&self) -> Result<Vec<String>, DaggerError> {
let query = self.selection.select("vcsGeneratedPaths");
query.execute(self.graphql_client.clone()).await
}
pub async fn vcs_ignored_paths(&self) -> Result<Vec<String>, DaggerError> {
let query = self.selection.select("vcsIgnoredPaths");
query.execute(self.graphql_client.clone()).await
}
pub fn with_vcs_generated_paths(&self, paths: Vec<impl Into<String>>) -> GeneratedCode {
let mut query = self.selection.select("withVCSGeneratedPaths");
query = query.arg(
"paths",
paths.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
);
GeneratedCode {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_vcs_ignored_paths(&self, paths: Vec<impl Into<String>>) -> GeneratedCode {
let mut query = self.selection.select("withVCSIgnoredPaths");
query = query.arg(
"paths",
paths.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
);
GeneratedCode {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Clone)]
pub struct GitModuleSource {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl GitModuleSource {
pub async fn clone_ref(&self) -> Result<String, DaggerError> {
let query = self.selection.select("cloneRef");
query.execute(self.graphql_client.clone()).await
}
pub async fn commit(&self) -> Result<String, DaggerError> {
let query = self.selection.select("commit");
query.execute(self.graphql_client.clone()).await
}
pub fn context_directory(&self) -> Directory {
let query = self.selection.select("contextDirectory");
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn html_repo_url(&self) -> Result<String, DaggerError> {
let query = self.selection.select("htmlRepoURL");
query.execute(self.graphql_client.clone()).await
}
pub async fn html_url(&self) -> Result<String, DaggerError> {
let query = self.selection.select("htmlURL");
query.execute(self.graphql_client.clone()).await
}
pub async fn id(&self) -> Result<GitModuleSourceId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn root(&self) -> Result<String, DaggerError> {
let query = self.selection.select("root");
query.execute(self.graphql_client.clone()).await
}
pub async fn root_subpath(&self) -> Result<String, DaggerError> {
let query = self.selection.select("rootSubpath");
query.execute(self.graphql_client.clone()).await
}
pub async fn version(&self) -> Result<String, DaggerError> {
let query = self.selection.select("version");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct GitRef {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
#[derive(Builder, Debug, PartialEq)]
pub struct GitRefTreeOpts {
#[builder(setter(into, strip_option), default)]
pub discard_git_dir: Option<bool>,
}
impl GitRef {
pub async fn commit(&self) -> Result<String, DaggerError> {
let query = self.selection.select("commit");
query.execute(self.graphql_client.clone()).await
}
pub async fn id(&self) -> Result<GitRefId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub fn tree(&self) -> Directory {
let query = self.selection.select("tree");
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn tree_opts(&self, opts: GitRefTreeOpts) -> Directory {
let mut query = self.selection.select("tree");
if let Some(discard_git_dir) = opts.discard_git_dir {
query = query.arg("discardGitDir", discard_git_dir);
}
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Clone)]
pub struct GitRepository {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
#[derive(Builder, Debug, PartialEq)]
pub struct GitRepositoryTagsOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub patterns: Option<Vec<&'a str>>,
}
impl GitRepository {
pub fn branch(&self, name: impl Into<String>) -> GitRef {
let mut query = self.selection.select("branch");
query = query.arg("name", name.into());
GitRef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn commit(&self, id: impl Into<String>) -> GitRef {
let mut query = self.selection.select("commit");
query = query.arg("id", id.into());
GitRef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn head(&self) -> GitRef {
let query = self.selection.select("head");
GitRef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn id(&self) -> Result<GitRepositoryId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub fn r#ref(&self, name: impl Into<String>) -> GitRef {
let mut query = self.selection.select("ref");
query = query.arg("name", name.into());
GitRef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn tag(&self, name: impl Into<String>) -> GitRef {
let mut query = self.selection.select("tag");
query = query.arg("name", name.into());
GitRef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn tags(&self) -> Result<Vec<String>, DaggerError> {
let query = self.selection.select("tags");
query.execute(self.graphql_client.clone()).await
}
pub async fn tags_opts<'a>(
&self,
opts: GitRepositoryTagsOpts<'a>,
) -> Result<Vec<String>, DaggerError> {
let mut query = self.selection.select("tags");
if let Some(patterns) = opts.patterns {
query = query.arg("patterns", patterns);
}
query.execute(self.graphql_client.clone()).await
}
pub fn with_auth_header(&self, header: impl IntoID<SecretId>) -> GitRepository {
let mut query = self.selection.select("withAuthHeader");
query = query.arg_lazy(
"header",
Box::new(move || {
let header = header.clone();
Box::pin(async move { header.into_id().await.unwrap().quote() })
}),
);
GitRepository {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_auth_token(&self, token: impl IntoID<SecretId>) -> GitRepository {
let mut query = self.selection.select("withAuthToken");
query = query.arg_lazy(
"token",
Box::new(move || {
let token = token.clone();
Box::pin(async move { token.into_id().await.unwrap().quote() })
}),
);
GitRepository {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Clone)]
pub struct Host {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
#[derive(Builder, Debug, PartialEq)]
pub struct HostDirectoryOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub exclude: Option<Vec<&'a str>>,
#[builder(setter(into, strip_option), default)]
pub include: Option<Vec<&'a str>>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct HostServiceOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub host: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct HostTunnelOpts {
#[builder(setter(into, strip_option), default)]
pub native: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub ports: Option<Vec<PortForward>>,
}
impl Host {
pub fn directory(&self, path: impl Into<String>) -> Directory {
let mut query = self.selection.select("directory");
query = query.arg("path", path.into());
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn directory_opts<'a>(
&self,
path: impl Into<String>,
opts: HostDirectoryOpts<'a>,
) -> Directory {
let mut query = self.selection.select("directory");
query = query.arg("path", path.into());
if let Some(exclude) = opts.exclude {
query = query.arg("exclude", exclude);
}
if let Some(include) = opts.include {
query = query.arg("include", include);
}
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn file(&self, path: impl Into<String>) -> File {
let mut query = self.selection.select("file");
query = query.arg("path", path.into());
File {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn id(&self) -> Result<HostId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub fn service(&self, ports: Vec<PortForward>) -> Service {
let mut query = self.selection.select("service");
query = query.arg("ports", ports);
Service {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn service_opts<'a>(&self, ports: Vec<PortForward>, opts: HostServiceOpts<'a>) -> Service {
let mut query = self.selection.select("service");
query = query.arg("ports", ports);
if let Some(host) = opts.host {
query = query.arg("host", host);
}
Service {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn set_secret_file(&self, name: impl Into<String>, path: impl Into<String>) -> Secret {
let mut query = self.selection.select("setSecretFile");
query = query.arg("name", name.into());
query = query.arg("path", path.into());
Secret {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn tunnel(&self, service: impl IntoID<ServiceId>) -> Service {
let mut query = self.selection.select("tunnel");
query = query.arg_lazy(
"service",
Box::new(move || {
let service = service.clone();
Box::pin(async move { service.into_id().await.unwrap().quote() })
}),
);
Service {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn tunnel_opts(&self, service: impl IntoID<ServiceId>, opts: HostTunnelOpts) -> Service {
let mut query = self.selection.select("tunnel");
query = query.arg_lazy(
"service",
Box::new(move || {
let service = service.clone();
Box::pin(async move { service.into_id().await.unwrap().quote() })
}),
);
if let Some(ports) = opts.ports {
query = query.arg("ports", ports);
}
if let Some(native) = opts.native {
query = query.arg("native", native);
}
Service {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn unix_socket(&self, path: impl Into<String>) -> Socket {
let mut query = self.selection.select("unixSocket");
query = query.arg("path", path.into());
Socket {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Clone)]
pub struct InputTypeDef {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl InputTypeDef {
pub fn fields(&self) -> Vec<FieldTypeDef> {
let query = self.selection.select("fields");
vec![FieldTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub async fn id(&self) -> Result<InputTypeDefId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct InterfaceTypeDef {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl InterfaceTypeDef {
pub async fn description(&self) -> Result<String, DaggerError> {
let query = self.selection.select("description");
query.execute(self.graphql_client.clone()).await
}
pub fn functions(&self) -> Vec<Function> {
let query = self.selection.select("functions");
vec![Function {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub async fn id(&self) -> Result<InterfaceTypeDefId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub fn source_map(&self) -> SourceMap {
let query = self.selection.select("sourceMap");
SourceMap {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn source_module_name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("sourceModuleName");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct Label {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl Label {
pub async fn id(&self) -> Result<LabelId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub async fn value(&self) -> Result<String, DaggerError> {
let query = self.selection.select("value");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct ListTypeDef {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl ListTypeDef {
pub fn element_type_def(&self) -> TypeDef {
let query = self.selection.select("elementTypeDef");
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn id(&self) -> Result<ListTypeDefId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct LocalModuleSource {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl LocalModuleSource {
pub fn context_directory(&self) -> Directory {
let query = self.selection.select("contextDirectory");
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn id(&self) -> Result<LocalModuleSourceId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn rel_host_path(&self) -> Result<String, DaggerError> {
let query = self.selection.select("relHostPath");
query.execute(self.graphql_client.clone()).await
}
pub async fn root_subpath(&self) -> Result<String, DaggerError> {
let query = self.selection.select("rootSubpath");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct Module {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ModuleWithSourceOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub engine_version: Option<&'a str>,
}
impl Module {
pub fn dependencies(&self) -> Vec<Module> {
let query = self.selection.select("dependencies");
vec![Module {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub fn dependency_config(&self) -> Vec<ModuleDependency> {
let query = self.selection.select("dependencyConfig");
vec![ModuleDependency {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub async fn description(&self) -> Result<String, DaggerError> {
let query = self.selection.select("description");
query.execute(self.graphql_client.clone()).await
}
pub fn enums(&self) -> Vec<TypeDef> {
let query = self.selection.select("enums");
vec![TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub fn generated_context_diff(&self) -> Directory {
let query = self.selection.select("generatedContextDiff");
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn generated_context_directory(&self) -> Directory {
let query = self.selection.select("generatedContextDirectory");
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn id(&self) -> Result<ModuleId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub fn initialize(&self) -> Module {
let query = self.selection.select("initialize");
Module {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn interfaces(&self) -> Vec<TypeDef> {
let query = self.selection.select("interfaces");
vec![TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub fn objects(&self) -> Vec<TypeDef> {
let query = self.selection.select("objects");
vec![TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub fn runtime(&self) -> Container {
let query = self.selection.select("runtime");
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn sdk(&self) -> Result<String, DaggerError> {
let query = self.selection.select("sdk");
query.execute(self.graphql_client.clone()).await
}
pub async fn serve(&self) -> Result<Void, DaggerError> {
let query = self.selection.select("serve");
query.execute(self.graphql_client.clone()).await
}
pub fn source(&self) -> ModuleSource {
let query = self.selection.select("source");
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_description(&self, description: impl Into<String>) -> Module {
let mut query = self.selection.select("withDescription");
query = query.arg("description", description.into());
Module {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_enum(&self, r#enum: impl IntoID<TypeDefId>) -> Module {
let mut query = self.selection.select("withEnum");
query = query.arg_lazy(
"enum",
Box::new(move || {
let r#enum = r#enum.clone();
Box::pin(async move { r#enum.into_id().await.unwrap().quote() })
}),
);
Module {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_interface(&self, iface: impl IntoID<TypeDefId>) -> Module {
let mut query = self.selection.select("withInterface");
query = query.arg_lazy(
"iface",
Box::new(move || {
let iface = iface.clone();
Box::pin(async move { iface.into_id().await.unwrap().quote() })
}),
);
Module {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_object(&self, object: impl IntoID<TypeDefId>) -> Module {
let mut query = self.selection.select("withObject");
query = query.arg_lazy(
"object",
Box::new(move || {
let object = object.clone();
Box::pin(async move { object.into_id().await.unwrap().quote() })
}),
);
Module {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_source(&self, source: impl IntoID<ModuleSourceId>) -> Module {
let mut query = self.selection.select("withSource");
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
Module {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_source_opts<'a>(
&self,
source: impl IntoID<ModuleSourceId>,
opts: ModuleWithSourceOpts<'a>,
) -> Module {
let mut query = self.selection.select("withSource");
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
if let Some(engine_version) = opts.engine_version {
query = query.arg("engineVersion", engine_version);
}
Module {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Clone)]
pub struct ModuleDependency {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl ModuleDependency {
pub async fn id(&self) -> Result<ModuleDependencyId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub fn source(&self) -> ModuleSource {
let query = self.selection.select("source");
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Clone)]
pub struct ModuleSource {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ModuleSourceAsModuleOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub engine_version: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ModuleSourceResolveDirectoryFromCallerOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub ignore: Option<Vec<&'a str>>,
#[builder(setter(into, strip_option), default)]
pub view_name: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ModuleSourceWithInitOpts {
#[builder(setter(into, strip_option), default)]
pub merge: Option<bool>,
}
impl ModuleSource {
pub fn as_git_source(&self) -> GitModuleSource {
let query = self.selection.select("asGitSource");
GitModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn as_local_source(&self) -> LocalModuleSource {
let query = self.selection.select("asLocalSource");
LocalModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn as_module(&self) -> Module {
let query = self.selection.select("asModule");
Module {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn as_module_opts<'a>(&self, opts: ModuleSourceAsModuleOpts<'a>) -> Module {
let mut query = self.selection.select("asModule");
if let Some(engine_version) = opts.engine_version {
query = query.arg("engineVersion", engine_version);
}
Module {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn as_string(&self) -> Result<String, DaggerError> {
let query = self.selection.select("asString");
query.execute(self.graphql_client.clone()).await
}
pub async fn config_exists(&self) -> Result<bool, DaggerError> {
let query = self.selection.select("configExists");
query.execute(self.graphql_client.clone()).await
}
pub fn context_directory(&self) -> Directory {
let query = self.selection.select("contextDirectory");
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn dependencies(&self) -> Vec<ModuleDependency> {
let query = self.selection.select("dependencies");
vec![ModuleDependency {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub async fn digest(&self) -> Result<String, DaggerError> {
let query = self.selection.select("digest");
query.execute(self.graphql_client.clone()).await
}
pub fn directory(&self, path: impl Into<String>) -> Directory {
let mut query = self.selection.select("directory");
query = query.arg("path", path.into());
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn id(&self) -> Result<ModuleSourceId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn kind(&self) -> Result<ModuleSourceKind, DaggerError> {
let query = self.selection.select("kind");
query.execute(self.graphql_client.clone()).await
}
pub async fn module_name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("moduleName");
query.execute(self.graphql_client.clone()).await
}
pub async fn module_original_name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("moduleOriginalName");
query.execute(self.graphql_client.clone()).await
}
pub async fn pin(&self) -> Result<String, DaggerError> {
let query = self.selection.select("pin");
query.execute(self.graphql_client.clone()).await
}
pub async fn resolve_context_path_from_caller(&self) -> Result<String, DaggerError> {
let query = self.selection.select("resolveContextPathFromCaller");
query.execute(self.graphql_client.clone()).await
}
pub fn resolve_dependency(&self, dep: impl IntoID<ModuleSourceId>) -> ModuleSource {
let mut query = self.selection.select("resolveDependency");
query = query.arg_lazy(
"dep",
Box::new(move || {
let dep = dep.clone();
Box::pin(async move { dep.into_id().await.unwrap().quote() })
}),
);
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn resolve_directory_from_caller(&self, path: impl Into<String>) -> Directory {
let mut query = self.selection.select("resolveDirectoryFromCaller");
query = query.arg("path", path.into());
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn resolve_directory_from_caller_opts<'a>(
&self,
path: impl Into<String>,
opts: ModuleSourceResolveDirectoryFromCallerOpts<'a>,
) -> Directory {
let mut query = self.selection.select("resolveDirectoryFromCaller");
query = query.arg("path", path.into());
if let Some(view_name) = opts.view_name {
query = query.arg("viewName", view_name);
}
if let Some(ignore) = opts.ignore {
query = query.arg("ignore", ignore);
}
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn resolve_from_caller(&self) -> ModuleSource {
let query = self.selection.select("resolveFromCaller");
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn source_root_subpath(&self) -> Result<String, DaggerError> {
let query = self.selection.select("sourceRootSubpath");
query.execute(self.graphql_client.clone()).await
}
pub async fn source_subpath(&self) -> Result<String, DaggerError> {
let query = self.selection.select("sourceSubpath");
query.execute(self.graphql_client.clone()).await
}
pub fn view(&self, name: impl Into<String>) -> ModuleSourceView {
let mut query = self.selection.select("view");
query = query.arg("name", name.into());
ModuleSourceView {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn views(&self) -> Vec<ModuleSourceView> {
let query = self.selection.select("views");
vec![ModuleSourceView {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub fn with_context_directory(&self, dir: impl IntoID<DirectoryId>) -> ModuleSource {
let mut query = self.selection.select("withContextDirectory");
query = query.arg_lazy(
"dir",
Box::new(move || {
let dir = dir.clone();
Box::pin(async move { dir.into_id().await.unwrap().quote() })
}),
);
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_dependencies(&self, dependencies: Vec<ModuleDependencyId>) -> ModuleSource {
let mut query = self.selection.select("withDependencies");
query = query.arg("dependencies", dependencies);
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_init(&self) -> ModuleSource {
let query = self.selection.select("withInit");
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_init_opts(&self, opts: ModuleSourceWithInitOpts) -> ModuleSource {
let mut query = self.selection.select("withInit");
if let Some(merge) = opts.merge {
query = query.arg("merge", merge);
}
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_name(&self, name: impl Into<String>) -> ModuleSource {
let mut query = self.selection.select("withName");
query = query.arg("name", name.into());
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_sdk(&self, sdk: impl Into<String>) -> ModuleSource {
let mut query = self.selection.select("withSDK");
query = query.arg("sdk", sdk.into());
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_source_subpath(&self, path: impl Into<String>) -> ModuleSource {
let mut query = self.selection.select("withSourceSubpath");
query = query.arg("path", path.into());
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_update_dependencies(&self, dependencies: Vec<impl Into<String>>) -> ModuleSource {
let mut query = self.selection.select("withUpdateDependencies");
query = query.arg(
"dependencies",
dependencies
.into_iter()
.map(|i| i.into())
.collect::<Vec<String>>(),
);
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_view(
&self,
name: impl Into<String>,
patterns: Vec<impl Into<String>>,
) -> ModuleSource {
let mut query = self.selection.select("withView");
query = query.arg("name", name.into());
query = query.arg(
"patterns",
patterns
.into_iter()
.map(|i| i.into())
.collect::<Vec<String>>(),
);
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn without_dependencies(&self, dependencies: Vec<impl Into<String>>) -> ModuleSource {
let mut query = self.selection.select("withoutDependencies");
query = query.arg(
"dependencies",
dependencies
.into_iter()
.map(|i| i.into())
.collect::<Vec<String>>(),
);
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Clone)]
pub struct ModuleSourceView {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl ModuleSourceView {
pub async fn id(&self) -> Result<ModuleSourceViewId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub async fn patterns(&self) -> Result<Vec<String>, DaggerError> {
let query = self.selection.select("patterns");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct ObjectTypeDef {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl ObjectTypeDef {
pub fn constructor(&self) -> Function {
let query = self.selection.select("constructor");
Function {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn description(&self) -> Result<String, DaggerError> {
let query = self.selection.select("description");
query.execute(self.graphql_client.clone()).await
}
pub fn fields(&self) -> Vec<FieldTypeDef> {
let query = self.selection.select("fields");
vec![FieldTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub fn functions(&self) -> Vec<Function> {
let query = self.selection.select("functions");
vec![Function {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub async fn id(&self) -> Result<ObjectTypeDefId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub fn source_map(&self) -> SourceMap {
let query = self.selection.select("sourceMap");
SourceMap {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn source_module_name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("sourceModuleName");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct Port {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl Port {
pub async fn description(&self) -> Result<String, DaggerError> {
let query = self.selection.select("description");
query.execute(self.graphql_client.clone()).await
}
pub async fn experimental_skip_healthcheck(&self) -> Result<bool, DaggerError> {
let query = self.selection.select("experimentalSkipHealthcheck");
query.execute(self.graphql_client.clone()).await
}
pub async fn id(&self) -> Result<PortId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn port(&self) -> Result<isize, DaggerError> {
let query = self.selection.select("port");
query.execute(self.graphql_client.clone()).await
}
pub async fn protocol(&self) -> Result<NetworkProtocol, DaggerError> {
let query = self.selection.select("protocol");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct Query {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
#[derive(Builder, Debug, PartialEq)]
pub struct QueryCacheVolumeOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub namespace: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct QueryContainerOpts {
#[builder(setter(into, strip_option), default)]
pub platform: Option<Platform>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct QueryGitOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub experimental_service_host: Option<ServiceId>,
#[builder(setter(into, strip_option), default)]
pub keep_git_dir: Option<bool>,
#[builder(setter(into, strip_option), default)]
pub ssh_auth_socket: Option<SocketId>,
#[builder(setter(into, strip_option), default)]
pub ssh_known_hosts: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct QueryHttpOpts {
#[builder(setter(into, strip_option), default)]
pub experimental_service_host: Option<ServiceId>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct QueryModuleDependencyOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub name: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct QueryModuleSourceOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub ref_pin: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub rel_host_path: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub stable: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct QuerySecretOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub accessor: Option<&'a str>,
}
impl Query {
pub fn builtin_container(&self, digest: impl Into<String>) -> Container {
let mut query = self.selection.select("builtinContainer");
query = query.arg("digest", digest.into());
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn cache_volume(&self, key: impl Into<String>) -> CacheVolume {
let mut query = self.selection.select("cacheVolume");
query = query.arg("key", key.into());
CacheVolume {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn cache_volume_opts<'a>(
&self,
key: impl Into<String>,
opts: QueryCacheVolumeOpts<'a>,
) -> CacheVolume {
let mut query = self.selection.select("cacheVolume");
query = query.arg("key", key.into());
if let Some(namespace) = opts.namespace {
query = query.arg("namespace", namespace);
}
CacheVolume {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn container(&self) -> Container {
let query = self.selection.select("container");
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn container_opts(&self, opts: QueryContainerOpts) -> Container {
let mut query = self.selection.select("container");
if let Some(platform) = opts.platform {
query = query.arg("platform", platform);
}
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn current_function_call(&self) -> FunctionCall {
let query = self.selection.select("currentFunctionCall");
FunctionCall {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn current_module(&self) -> CurrentModule {
let query = self.selection.select("currentModule");
CurrentModule {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn current_type_defs(&self) -> Vec<TypeDef> {
let query = self.selection.select("currentTypeDefs");
vec![TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub async fn default_platform(&self) -> Result<Platform, DaggerError> {
let query = self.selection.select("defaultPlatform");
query.execute(self.graphql_client.clone()).await
}
pub fn directory(&self) -> Directory {
let query = self.selection.select("directory");
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn engine(&self) -> Engine {
let query = self.selection.select("engine");
Engine {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn error(&self, message: impl Into<String>) -> Error {
let mut query = self.selection.select("error");
query = query.arg("message", message.into());
Error {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn function(
&self,
name: impl Into<String>,
return_type: impl IntoID<TypeDefId>,
) -> Function {
let mut query = self.selection.select("function");
query = query.arg("name", name.into());
query = query.arg_lazy(
"returnType",
Box::new(move || {
let return_type = return_type.clone();
Box::pin(async move { return_type.into_id().await.unwrap().quote() })
}),
);
Function {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn generated_code(&self, code: impl IntoID<DirectoryId>) -> GeneratedCode {
let mut query = self.selection.select("generatedCode");
query = query.arg_lazy(
"code",
Box::new(move || {
let code = code.clone();
Box::pin(async move { code.into_id().await.unwrap().quote() })
}),
);
GeneratedCode {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn git(&self, url: impl Into<String>) -> GitRepository {
let mut query = self.selection.select("git");
query = query.arg("url", url.into());
GitRepository {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn git_opts<'a>(&self, url: impl Into<String>, opts: QueryGitOpts<'a>) -> GitRepository {
let mut query = self.selection.select("git");
query = query.arg("url", url.into());
if let Some(keep_git_dir) = opts.keep_git_dir {
query = query.arg("keepGitDir", keep_git_dir);
}
if let Some(experimental_service_host) = opts.experimental_service_host {
query = query.arg("experimentalServiceHost", experimental_service_host);
}
if let Some(ssh_known_hosts) = opts.ssh_known_hosts {
query = query.arg("sshKnownHosts", ssh_known_hosts);
}
if let Some(ssh_auth_socket) = opts.ssh_auth_socket {
query = query.arg("sshAuthSocket", ssh_auth_socket);
}
GitRepository {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn host(&self) -> Host {
let query = self.selection.select("host");
Host {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn http(&self, url: impl Into<String>) -> File {
let mut query = self.selection.select("http");
query = query.arg("url", url.into());
File {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn http_opts(&self, url: impl Into<String>, opts: QueryHttpOpts) -> File {
let mut query = self.selection.select("http");
query = query.arg("url", url.into());
if let Some(experimental_service_host) = opts.experimental_service_host {
query = query.arg("experimentalServiceHost", experimental_service_host);
}
File {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_cache_volume_from_id(&self, id: impl IntoID<CacheVolumeId>) -> CacheVolume {
let mut query = self.selection.select("loadCacheVolumeFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
CacheVolume {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_container_from_id(&self, id: impl IntoID<ContainerId>) -> Container {
let mut query = self.selection.select("loadContainerFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
Container {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_current_module_from_id(&self, id: impl IntoID<CurrentModuleId>) -> CurrentModule {
let mut query = self.selection.select("loadCurrentModuleFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
CurrentModule {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_directory_from_id(&self, id: impl IntoID<DirectoryId>) -> Directory {
let mut query = self.selection.select("loadDirectoryFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
Directory {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_engine_cache_entry_from_id(
&self,
id: impl IntoID<EngineCacheEntryId>,
) -> EngineCacheEntry {
let mut query = self.selection.select("loadEngineCacheEntryFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
EngineCacheEntry {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_engine_cache_entry_set_from_id(
&self,
id: impl IntoID<EngineCacheEntrySetId>,
) -> EngineCacheEntrySet {
let mut query = self.selection.select("loadEngineCacheEntrySetFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
EngineCacheEntrySet {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_engine_cache_from_id(&self, id: impl IntoID<EngineCacheId>) -> EngineCache {
let mut query = self.selection.select("loadEngineCacheFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
EngineCache {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_engine_from_id(&self, id: impl IntoID<EngineId>) -> Engine {
let mut query = self.selection.select("loadEngineFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
Engine {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_enum_type_def_from_id(&self, id: impl IntoID<EnumTypeDefId>) -> EnumTypeDef {
let mut query = self.selection.select("loadEnumTypeDefFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
EnumTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_enum_value_type_def_from_id(
&self,
id: impl IntoID<EnumValueTypeDefId>,
) -> EnumValueTypeDef {
let mut query = self.selection.select("loadEnumValueTypeDefFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
EnumValueTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_env_variable_from_id(&self, id: impl IntoID<EnvVariableId>) -> EnvVariable {
let mut query = self.selection.select("loadEnvVariableFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
EnvVariable {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_error_from_id(&self, id: impl IntoID<ErrorId>) -> Error {
let mut query = self.selection.select("loadErrorFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
Error {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_field_type_def_from_id(&self, id: impl IntoID<FieldTypeDefId>) -> FieldTypeDef {
let mut query = self.selection.select("loadFieldTypeDefFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
FieldTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_file_from_id(&self, id: impl IntoID<FileId>) -> File {
let mut query = self.selection.select("loadFileFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
File {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_function_arg_from_id(&self, id: impl IntoID<FunctionArgId>) -> FunctionArg {
let mut query = self.selection.select("loadFunctionArgFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
FunctionArg {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_function_call_arg_value_from_id(
&self,
id: impl IntoID<FunctionCallArgValueId>,
) -> FunctionCallArgValue {
let mut query = self.selection.select("loadFunctionCallArgValueFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
FunctionCallArgValue {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_function_call_from_id(&self, id: impl IntoID<FunctionCallId>) -> FunctionCall {
let mut query = self.selection.select("loadFunctionCallFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
FunctionCall {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_function_from_id(&self, id: impl IntoID<FunctionId>) -> Function {
let mut query = self.selection.select("loadFunctionFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
Function {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_generated_code_from_id(&self, id: impl IntoID<GeneratedCodeId>) -> GeneratedCode {
let mut query = self.selection.select("loadGeneratedCodeFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
GeneratedCode {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_git_module_source_from_id(
&self,
id: impl IntoID<GitModuleSourceId>,
) -> GitModuleSource {
let mut query = self.selection.select("loadGitModuleSourceFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
GitModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_git_ref_from_id(&self, id: impl IntoID<GitRefId>) -> GitRef {
let mut query = self.selection.select("loadGitRefFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
GitRef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_git_repository_from_id(&self, id: impl IntoID<GitRepositoryId>) -> GitRepository {
let mut query = self.selection.select("loadGitRepositoryFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
GitRepository {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_host_from_id(&self, id: impl IntoID<HostId>) -> Host {
let mut query = self.selection.select("loadHostFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
Host {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_input_type_def_from_id(&self, id: impl IntoID<InputTypeDefId>) -> InputTypeDef {
let mut query = self.selection.select("loadInputTypeDefFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
InputTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_interface_type_def_from_id(
&self,
id: impl IntoID<InterfaceTypeDefId>,
) -> InterfaceTypeDef {
let mut query = self.selection.select("loadInterfaceTypeDefFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
InterfaceTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_label_from_id(&self, id: impl IntoID<LabelId>) -> Label {
let mut query = self.selection.select("loadLabelFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
Label {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_list_type_def_from_id(&self, id: impl IntoID<ListTypeDefId>) -> ListTypeDef {
let mut query = self.selection.select("loadListTypeDefFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
ListTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_local_module_source_from_id(
&self,
id: impl IntoID<LocalModuleSourceId>,
) -> LocalModuleSource {
let mut query = self.selection.select("loadLocalModuleSourceFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
LocalModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_module_dependency_from_id(
&self,
id: impl IntoID<ModuleDependencyId>,
) -> ModuleDependency {
let mut query = self.selection.select("loadModuleDependencyFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
ModuleDependency {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_module_from_id(&self, id: impl IntoID<ModuleId>) -> Module {
let mut query = self.selection.select("loadModuleFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
Module {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_module_source_from_id(&self, id: impl IntoID<ModuleSourceId>) -> ModuleSource {
let mut query = self.selection.select("loadModuleSourceFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_module_source_view_from_id(
&self,
id: impl IntoID<ModuleSourceViewId>,
) -> ModuleSourceView {
let mut query = self.selection.select("loadModuleSourceViewFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
ModuleSourceView {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_object_type_def_from_id(&self, id: impl IntoID<ObjectTypeDefId>) -> ObjectTypeDef {
let mut query = self.selection.select("loadObjectTypeDefFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
ObjectTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_port_from_id(&self, id: impl IntoID<PortId>) -> Port {
let mut query = self.selection.select("loadPortFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
Port {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_scalar_type_def_from_id(&self, id: impl IntoID<ScalarTypeDefId>) -> ScalarTypeDef {
let mut query = self.selection.select("loadScalarTypeDefFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
ScalarTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_secret_from_id(&self, id: impl IntoID<SecretId>) -> Secret {
let mut query = self.selection.select("loadSecretFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
Secret {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_service_from_id(&self, id: impl IntoID<ServiceId>) -> Service {
let mut query = self.selection.select("loadServiceFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
Service {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_socket_from_id(&self, id: impl IntoID<SocketId>) -> Socket {
let mut query = self.selection.select("loadSocketFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
Socket {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_source_map_from_id(&self, id: impl IntoID<SourceMapId>) -> SourceMap {
let mut query = self.selection.select("loadSourceMapFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
SourceMap {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_terminal_from_id(&self, id: impl IntoID<TerminalId>) -> Terminal {
let mut query = self.selection.select("loadTerminalFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
Terminal {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn load_type_def_from_id(&self, id: impl IntoID<TypeDefId>) -> TypeDef {
let mut query = self.selection.select("loadTypeDefFromID");
query = query.arg_lazy(
"id",
Box::new(move || {
let id = id.clone();
Box::pin(async move { id.into_id().await.unwrap().quote() })
}),
);
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn module(&self) -> Module {
let query = self.selection.select("module");
Module {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn module_dependency(&self, source: impl IntoID<ModuleSourceId>) -> ModuleDependency {
let mut query = self.selection.select("moduleDependency");
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
ModuleDependency {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn module_dependency_opts<'a>(
&self,
source: impl IntoID<ModuleSourceId>,
opts: QueryModuleDependencyOpts<'a>,
) -> ModuleDependency {
let mut query = self.selection.select("moduleDependency");
query = query.arg_lazy(
"source",
Box::new(move || {
let source = source.clone();
Box::pin(async move { source.into_id().await.unwrap().quote() })
}),
);
if let Some(name) = opts.name {
query = query.arg("name", name);
}
ModuleDependency {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn module_source(&self, ref_string: impl Into<String>) -> ModuleSource {
let mut query = self.selection.select("moduleSource");
query = query.arg("refString", ref_string.into());
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn module_source_opts<'a>(
&self,
ref_string: impl Into<String>,
opts: QueryModuleSourceOpts<'a>,
) -> ModuleSource {
let mut query = self.selection.select("moduleSource");
query = query.arg("refString", ref_string.into());
if let Some(ref_pin) = opts.ref_pin {
query = query.arg("refPin", ref_pin);
}
if let Some(stable) = opts.stable {
query = query.arg("stable", stable);
}
if let Some(rel_host_path) = opts.rel_host_path {
query = query.arg("relHostPath", rel_host_path);
}
ModuleSource {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn secret(&self, name: impl Into<String>) -> Secret {
let mut query = self.selection.select("secret");
query = query.arg("name", name.into());
Secret {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn secret_opts<'a>(&self, name: impl Into<String>, opts: QuerySecretOpts<'a>) -> Secret {
let mut query = self.selection.select("secret");
query = query.arg("name", name.into());
if let Some(accessor) = opts.accessor {
query = query.arg("accessor", accessor);
}
Secret {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn set_secret(&self, name: impl Into<String>, plaintext: impl Into<String>) -> Secret {
let mut query = self.selection.select("setSecret");
query = query.arg("name", name.into());
query = query.arg("plaintext", plaintext.into());
Secret {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn source_map(&self, filename: impl Into<String>, line: isize, column: isize) -> SourceMap {
let mut query = self.selection.select("sourceMap");
query = query.arg("filename", filename.into());
query = query.arg("line", line);
query = query.arg("column", column);
SourceMap {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn type_def(&self) -> TypeDef {
let query = self.selection.select("typeDef");
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn version(&self) -> Result<String, DaggerError> {
let query = self.selection.select("version");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct ScalarTypeDef {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl ScalarTypeDef {
pub async fn description(&self) -> Result<String, DaggerError> {
let query = self.selection.select("description");
query.execute(self.graphql_client.clone()).await
}
pub async fn id(&self) -> Result<ScalarTypeDefId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub async fn source_module_name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("sourceModuleName");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct Secret {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl Secret {
pub async fn id(&self) -> Result<SecretId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn name(&self) -> Result<String, DaggerError> {
let query = self.selection.select("name");
query.execute(self.graphql_client.clone()).await
}
pub async fn plaintext(&self) -> Result<String, DaggerError> {
let query = self.selection.select("plaintext");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct Service {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ServiceEndpointOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub port: Option<isize>,
#[builder(setter(into, strip_option), default)]
pub scheme: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ServiceStopOpts {
#[builder(setter(into, strip_option), default)]
pub kill: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ServiceUpOpts {
#[builder(setter(into, strip_option), default)]
pub ports: Option<Vec<PortForward>>,
#[builder(setter(into, strip_option), default)]
pub random: Option<bool>,
}
impl Service {
pub async fn endpoint(&self) -> Result<String, DaggerError> {
let query = self.selection.select("endpoint");
query.execute(self.graphql_client.clone()).await
}
pub async fn endpoint_opts<'a>(
&self,
opts: ServiceEndpointOpts<'a>,
) -> Result<String, DaggerError> {
let mut query = self.selection.select("endpoint");
if let Some(port) = opts.port {
query = query.arg("port", port);
}
if let Some(scheme) = opts.scheme {
query = query.arg("scheme", scheme);
}
query.execute(self.graphql_client.clone()).await
}
pub async fn hostname(&self) -> Result<String, DaggerError> {
let query = self.selection.select("hostname");
query.execute(self.graphql_client.clone()).await
}
pub async fn id(&self) -> Result<ServiceId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub fn ports(&self) -> Vec<Port> {
let query = self.selection.select("ports");
vec![Port {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}]
}
pub async fn start(&self) -> Result<ServiceId, DaggerError> {
let query = self.selection.select("start");
query.execute(self.graphql_client.clone()).await
}
pub async fn stop(&self) -> Result<ServiceId, DaggerError> {
let query = self.selection.select("stop");
query.execute(self.graphql_client.clone()).await
}
pub async fn stop_opts(&self, opts: ServiceStopOpts) -> Result<ServiceId, DaggerError> {
let mut query = self.selection.select("stop");
if let Some(kill) = opts.kill {
query = query.arg("kill", kill);
}
query.execute(self.graphql_client.clone()).await
}
pub async fn up(&self) -> Result<Void, DaggerError> {
let query = self.selection.select("up");
query.execute(self.graphql_client.clone()).await
}
pub async fn up_opts(&self, opts: ServiceUpOpts) -> Result<Void, DaggerError> {
let mut query = self.selection.select("up");
if let Some(ports) = opts.ports {
query = query.arg("ports", ports);
}
if let Some(random) = opts.random {
query = query.arg("random", random);
}
query.execute(self.graphql_client.clone()).await
}
pub fn with_hostname(&self, hostname: impl Into<String>) -> Service {
let mut query = self.selection.select("withHostname");
query = query.arg("hostname", hostname.into());
Service {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Clone)]
pub struct Socket {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl Socket {
pub async fn id(&self) -> Result<SocketId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct SourceMap {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl SourceMap {
pub async fn column(&self) -> Result<isize, DaggerError> {
let query = self.selection.select("column");
query.execute(self.graphql_client.clone()).await
}
pub async fn filename(&self) -> Result<String, DaggerError> {
let query = self.selection.select("filename");
query.execute(self.graphql_client.clone()).await
}
pub async fn id(&self) -> Result<SourceMapId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn line(&self) -> Result<isize, DaggerError> {
let query = self.selection.select("line");
query.execute(self.graphql_client.clone()).await
}
pub async fn module(&self) -> Result<String, DaggerError> {
let query = self.selection.select("module");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct Terminal {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
impl Terminal {
pub async fn id(&self) -> Result<TerminalId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn sync(&self) -> Result<TerminalId, DaggerError> {
let query = self.selection.select("sync");
query.execute(self.graphql_client.clone()).await
}
}
#[derive(Clone)]
pub struct TypeDef {
pub proc: Option<Arc<DaggerSessionProc>>,
pub selection: Selection,
pub graphql_client: DynGraphQLClient,
}
#[derive(Builder, Debug, PartialEq)]
pub struct TypeDefWithEnumOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub description: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub source_map: Option<SourceMapId>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct TypeDefWithEnumValueOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub description: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub source_map: Option<SourceMapId>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct TypeDefWithFieldOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub description: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub source_map: Option<SourceMapId>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct TypeDefWithInterfaceOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub description: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub source_map: Option<SourceMapId>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct TypeDefWithObjectOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub description: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub source_map: Option<SourceMapId>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct TypeDefWithScalarOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub description: Option<&'a str>,
}
impl TypeDef {
pub fn as_enum(&self) -> EnumTypeDef {
let query = self.selection.select("asEnum");
EnumTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn as_input(&self) -> InputTypeDef {
let query = self.selection.select("asInput");
InputTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn as_interface(&self) -> InterfaceTypeDef {
let query = self.selection.select("asInterface");
InterfaceTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn as_list(&self) -> ListTypeDef {
let query = self.selection.select("asList");
ListTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn as_object(&self) -> ObjectTypeDef {
let query = self.selection.select("asObject");
ObjectTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn as_scalar(&self) -> ScalarTypeDef {
let query = self.selection.select("asScalar");
ScalarTypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub async fn id(&self) -> Result<TypeDefId, DaggerError> {
let query = self.selection.select("id");
query.execute(self.graphql_client.clone()).await
}
pub async fn kind(&self) -> Result<TypeDefKind, DaggerError> {
let query = self.selection.select("kind");
query.execute(self.graphql_client.clone()).await
}
pub async fn optional(&self) -> Result<bool, DaggerError> {
let query = self.selection.select("optional");
query.execute(self.graphql_client.clone()).await
}
pub fn with_constructor(&self, function: impl IntoID<FunctionId>) -> TypeDef {
let mut query = self.selection.select("withConstructor");
query = query.arg_lazy(
"function",
Box::new(move || {
let function = function.clone();
Box::pin(async move { function.into_id().await.unwrap().quote() })
}),
);
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_enum(&self, name: impl Into<String>) -> TypeDef {
let mut query = self.selection.select("withEnum");
query = query.arg("name", name.into());
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_enum_opts<'a>(
&self,
name: impl Into<String>,
opts: TypeDefWithEnumOpts<'a>,
) -> TypeDef {
let mut query = self.selection.select("withEnum");
query = query.arg("name", name.into());
if let Some(description) = opts.description {
query = query.arg("description", description);
}
if let Some(source_map) = opts.source_map {
query = query.arg("sourceMap", source_map);
}
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_enum_value(&self, value: impl Into<String>) -> TypeDef {
let mut query = self.selection.select("withEnumValue");
query = query.arg("value", value.into());
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_enum_value_opts<'a>(
&self,
value: impl Into<String>,
opts: TypeDefWithEnumValueOpts<'a>,
) -> TypeDef {
let mut query = self.selection.select("withEnumValue");
query = query.arg("value", value.into());
if let Some(description) = opts.description {
query = query.arg("description", description);
}
if let Some(source_map) = opts.source_map {
query = query.arg("sourceMap", source_map);
}
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_field(&self, name: impl Into<String>, type_def: impl IntoID<TypeDefId>) -> TypeDef {
let mut query = self.selection.select("withField");
query = query.arg("name", name.into());
query = query.arg_lazy(
"typeDef",
Box::new(move || {
let type_def = type_def.clone();
Box::pin(async move { type_def.into_id().await.unwrap().quote() })
}),
);
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_field_opts<'a>(
&self,
name: impl Into<String>,
type_def: impl IntoID<TypeDefId>,
opts: TypeDefWithFieldOpts<'a>,
) -> TypeDef {
let mut query = self.selection.select("withField");
query = query.arg("name", name.into());
query = query.arg_lazy(
"typeDef",
Box::new(move || {
let type_def = type_def.clone();
Box::pin(async move { type_def.into_id().await.unwrap().quote() })
}),
);
if let Some(description) = opts.description {
query = query.arg("description", description);
}
if let Some(source_map) = opts.source_map {
query = query.arg("sourceMap", source_map);
}
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_function(&self, function: impl IntoID<FunctionId>) -> TypeDef {
let mut query = self.selection.select("withFunction");
query = query.arg_lazy(
"function",
Box::new(move || {
let function = function.clone();
Box::pin(async move { function.into_id().await.unwrap().quote() })
}),
);
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_interface(&self, name: impl Into<String>) -> TypeDef {
let mut query = self.selection.select("withInterface");
query = query.arg("name", name.into());
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_interface_opts<'a>(
&self,
name: impl Into<String>,
opts: TypeDefWithInterfaceOpts<'a>,
) -> TypeDef {
let mut query = self.selection.select("withInterface");
query = query.arg("name", name.into());
if let Some(description) = opts.description {
query = query.arg("description", description);
}
if let Some(source_map) = opts.source_map {
query = query.arg("sourceMap", source_map);
}
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_kind(&self, kind: TypeDefKind) -> TypeDef {
let mut query = self.selection.select("withKind");
query = query.arg("kind", kind);
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_list_of(&self, element_type: impl IntoID<TypeDefId>) -> TypeDef {
let mut query = self.selection.select("withListOf");
query = query.arg_lazy(
"elementType",
Box::new(move || {
let element_type = element_type.clone();
Box::pin(async move { element_type.into_id().await.unwrap().quote() })
}),
);
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_object(&self, name: impl Into<String>) -> TypeDef {
let mut query = self.selection.select("withObject");
query = query.arg("name", name.into());
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_object_opts<'a>(
&self,
name: impl Into<String>,
opts: TypeDefWithObjectOpts<'a>,
) -> TypeDef {
let mut query = self.selection.select("withObject");
query = query.arg("name", name.into());
if let Some(description) = opts.description {
query = query.arg("description", description);
}
if let Some(source_map) = opts.source_map {
query = query.arg("sourceMap", source_map);
}
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_optional(&self, optional: bool) -> TypeDef {
let mut query = self.selection.select("withOptional");
query = query.arg("optional", optional);
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_scalar(&self, name: impl Into<String>) -> TypeDef {
let mut query = self.selection.select("withScalar");
query = query.arg("name", name.into());
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
pub fn with_scalar_opts<'a>(
&self,
name: impl Into<String>,
opts: TypeDefWithScalarOpts<'a>,
) -> TypeDef {
let mut query = self.selection.select("withScalar");
query = query.arg("name", name.into());
if let Some(description) = opts.description {
query = query.arg("description", description);
}
TypeDef {
proc: self.proc.clone(),
selection: query,
graphql_client: self.graphql_client.clone(),
}
}
}
#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
pub enum CacheSharingMode {
#[serde(rename = "LOCKED")]
Locked,
#[serde(rename = "PRIVATE")]
Private,
#[serde(rename = "SHARED")]
Shared,
}
#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
pub enum ImageLayerCompression {
#[serde(rename = "EStarGZ")]
EStarGz,
#[serde(rename = "Gzip")]
Gzip,
#[serde(rename = "Uncompressed")]
Uncompressed,
#[serde(rename = "Zstd")]
Zstd,
}
#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
pub enum ImageMediaTypes {
#[serde(rename = "DockerMediaTypes")]
DockerMediaTypes,
#[serde(rename = "OCIMediaTypes")]
OciMediaTypes,
}
#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
pub enum ModuleSourceKind {
#[serde(rename = "GIT_SOURCE")]
GitSource,
#[serde(rename = "LOCAL_SOURCE")]
LocalSource,
}
#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
pub enum NetworkProtocol {
#[serde(rename = "TCP")]
Tcp,
#[serde(rename = "UDP")]
Udp,
}
#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
pub enum ReturnType {
#[serde(rename = "ANY")]
Any,
#[serde(rename = "FAILURE")]
Failure,
#[serde(rename = "SUCCESS")]
Success,
}
#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
pub enum TypeDefKind {
#[serde(rename = "BOOLEAN_KIND")]
BooleanKind,
#[serde(rename = "ENUM_KIND")]
EnumKind,
#[serde(rename = "FLOAT_KIND")]
FloatKind,
#[serde(rename = "INPUT_KIND")]
InputKind,
#[serde(rename = "INTEGER_KIND")]
IntegerKind,
#[serde(rename = "INTERFACE_KIND")]
InterfaceKind,
#[serde(rename = "LIST_KIND")]
ListKind,
#[serde(rename = "OBJECT_KIND")]
ObjectKind,
#[serde(rename = "SCALAR_KIND")]
ScalarKind,
#[serde(rename = "STRING_KIND")]
StringKind,
#[serde(rename = "VOID_KIND")]
VoidKind,
}