1#![allow(clippy::needless_lifetimes)]
2
3use crate::core::cli_session::DaggerSessionProc;
4use crate::core::graphql_client::DynGraphQLClient;
5use crate::errors::DaggerError;
6use crate::id::IntoID;
7use crate::loadable::Loadable;
8use crate::querybuilder::Selection;
9use derive_builder::Builder;
10use serde::{Deserialize, Serialize};
11use std::sync::Arc;
12
13#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
14pub struct Bytes(pub String);
15impl From<&str> for Bytes {
16 fn from(value: &str) -> Self {
17 Self(value.to_string())
18 }
19}
20impl From<String> for Bytes {
21 fn from(value: String) -> Self {
22 Self(value)
23 }
24}
25impl Bytes {
26 fn quote(&self) -> String {
27 format!("\"{}\"", self.0.clone())
28 }
29}
30#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
31pub struct Id(pub String);
32impl From<&str> for Id {
33 fn from(value: &str) -> Self {
34 Self(value.to_string())
35 }
36}
37impl From<String> for Id {
38 fn from(value: String) -> Self {
39 Self(value)
40 }
41}
42impl IntoID<Id> for Id {
43 fn into_id(
44 self,
45 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
46 Box::pin(async move { Ok::<Id, DaggerError>(self) })
47 }
48}
49impl Id {
50 fn quote(&self) -> String {
51 format!("\"{}\"", self.0.clone())
52 }
53}
54#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
55pub struct Json(pub String);
56impl From<&str> for Json {
57 fn from(value: &str) -> Self {
58 Self(value.to_string())
59 }
60}
61impl From<String> for Json {
62 fn from(value: String) -> Self {
63 Self(value)
64 }
65}
66impl Json {
67 fn quote(&self) -> String {
68 format!("\"{}\"", self.0.clone())
69 }
70}
71#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
72pub struct Platform(pub String);
73impl From<&str> for Platform {
74 fn from(value: &str) -> Self {
75 Self(value.to_string())
76 }
77}
78impl From<String> for Platform {
79 fn from(value: String) -> Self {
80 Self(value)
81 }
82}
83impl Platform {
84 fn quote(&self) -> String {
85 format!("\"{}\"", self.0.clone())
86 }
87}
88#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
89pub struct Void(pub String);
90impl From<&str> for Void {
91 fn from(value: &str) -> Self {
92 Self(value.to_string())
93 }
94}
95impl From<String> for Void {
96 fn from(value: String) -> Self {
97 Self(value)
98 }
99}
100impl Void {
101 fn quote(&self) -> String {
102 format!("\"{}\"", self.0.clone())
103 }
104}
105#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
106pub struct BuildArg {
107 pub name: String,
108 pub value: String,
109}
110#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
111pub struct LlmContentBlockInput {
112 pub arguments: Json,
113 pub call_id: String,
114 pub content: Vec<LlmContentBlockInput>,
115 pub data: Bytes,
116 pub errored: bool,
117 pub file: Id,
118 pub kind: LlmContentBlockKind,
119 pub mime_type: String,
120 pub signature: String,
121 pub text: String,
122 pub tool_name: String,
123}
124#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
125pub struct LlmMessageOriginInput {
126 pub agent_name: String,
127 pub kind: LlmMessageOriginKind,
128 pub r#ref: String,
129 pub reply_to: String,
130}
131#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
132pub struct PipelineLabel {
133 pub name: String,
134 pub value: String,
135}
136#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
137pub struct PortForward {
138 pub backend: isize,
139 pub frontend: isize,
140 pub protocol: NetworkProtocol,
141}
142pub trait Exportable {
145 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send;
146 fn export(
147 &self,
148 path: impl Into<String>,
149 ) -> impl core::future::Future<Output = Result<String, DaggerError>> + Send;
150}
151#[derive(Clone)]
152pub struct ExportableClient {
153 pub proc: Option<Arc<DaggerSessionProc>>,
154 pub selection: Selection,
155 pub graphql_client: DynGraphQLClient,
156}
157impl IntoID<Id> for ExportableClient {
158 fn into_id(
159 self,
160 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
161 Box::pin(async move { self.id().await })
162 }
163}
164impl ExportableClient {
165 pub async fn id(&self) -> Result<Id, DaggerError> {
166 let query = self.selection.select("id");
167 query.execute(self.graphql_client.clone()).await
168 }
169 pub async fn export(&self, path: impl Into<String>) -> Result<String, DaggerError> {
170 let mut query = self.selection.select("export");
171 query = query.arg("path", path.into());
172 query.execute(self.graphql_client.clone()).await
173 }
174}
175impl Loadable for ExportableClient {
176 fn graphql_type() -> &'static str {
177 "Exportable"
178 }
179 fn from_query(
180 proc: Option<Arc<DaggerSessionProc>>,
181 selection: Selection,
182 graphql_client: DynGraphQLClient,
183 ) -> Self {
184 Self {
185 proc,
186 selection,
187 graphql_client,
188 }
189 }
190}
191impl Exportable for ExportableClient {
192 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
193 let query = self.selection.select("id");
194 let graphql_client = self.graphql_client.clone();
195 async move { query.execute(graphql_client).await }
196 }
197 fn export(
198 &self,
199 path: impl Into<String>,
200 ) -> impl core::future::Future<Output = Result<String, DaggerError>> + Send {
201 let mut query = self.selection.select("export");
202 query = query.arg("path", path.into());
203 let graphql_client = self.graphql_client.clone();
204 async move { query.execute(graphql_client).await }
205 }
206}
207pub trait Node {
209 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send;
210}
211#[derive(Clone)]
212pub struct NodeClient {
213 pub proc: Option<Arc<DaggerSessionProc>>,
214 pub selection: Selection,
215 pub graphql_client: DynGraphQLClient,
216}
217impl IntoID<Id> for NodeClient {
218 fn into_id(
219 self,
220 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
221 Box::pin(async move { self.id().await })
222 }
223}
224impl NodeClient {
225 pub async fn id(&self) -> Result<Id, DaggerError> {
226 let query = self.selection.select("id");
227 query.execute(self.graphql_client.clone()).await
228 }
229}
230impl Loadable for NodeClient {
231 fn graphql_type() -> &'static str {
232 "Node"
233 }
234 fn from_query(
235 proc: Option<Arc<DaggerSessionProc>>,
236 selection: Selection,
237 graphql_client: DynGraphQLClient,
238 ) -> Self {
239 Self {
240 proc,
241 selection,
242 graphql_client,
243 }
244 }
245}
246impl Node for NodeClient {
247 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
248 let query = self.selection.select("id");
249 let graphql_client = self.graphql_client.clone();
250 async move { query.execute(graphql_client).await }
251 }
252}
253pub trait Syncer {
256 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send;
257 fn sync(&self) -> impl core::future::Future<Output = Result<Self, DaggerError>> + Send
258 where
259 Self: Sized;
260}
261#[derive(Clone)]
262pub struct SyncerClient {
263 pub proc: Option<Arc<DaggerSessionProc>>,
264 pub selection: Selection,
265 pub graphql_client: DynGraphQLClient,
266}
267impl IntoID<Id> for SyncerClient {
268 fn into_id(
269 self,
270 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
271 Box::pin(async move { self.id().await })
272 }
273}
274impl SyncerClient {
275 pub async fn id(&self) -> Result<Id, DaggerError> {
276 let query = self.selection.select("id");
277 query.execute(self.graphql_client.clone()).await
278 }
279 pub async fn sync(&self) -> Result<SyncerClient, DaggerError> {
280 let query = self.selection.select("sync");
281 let id: Id = query.execute(self.graphql_client.clone()).await?;
282 Ok(SyncerClient {
283 proc: self.proc.clone(),
284 selection: query
285 .root()
286 .select("node")
287 .arg("id", &id.0)
288 .inline_fragment("Syncer"),
289 graphql_client: self.graphql_client.clone(),
290 })
291 }
292}
293impl Loadable for SyncerClient {
294 fn graphql_type() -> &'static str {
295 "Syncer"
296 }
297 fn from_query(
298 proc: Option<Arc<DaggerSessionProc>>,
299 selection: Selection,
300 graphql_client: DynGraphQLClient,
301 ) -> Self {
302 Self {
303 proc,
304 selection,
305 graphql_client,
306 }
307 }
308}
309impl Syncer for SyncerClient {
310 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
311 let query = self.selection.select("id");
312 let graphql_client = self.graphql_client.clone();
313 async move { query.execute(graphql_client).await }
314 }
315 fn sync(&self) -> impl core::future::Future<Output = Result<Self, DaggerError>> + Send {
316 let query = self.selection.select("sync");
317 let proc = self.proc.clone();
318 let graphql_client = self.graphql_client.clone();
319 async move {
320 let id: Id = query.execute(graphql_client.clone()).await?;
321 Ok(Self {
322 proc,
323 selection: query
324 .root()
325 .select("node")
326 .arg("id", &id.0)
327 .inline_fragment("Syncer"),
328 graphql_client,
329 })
330 }
331 }
332}
333#[derive(Clone)]
334pub struct Address {
335 pub proc: Option<Arc<DaggerSessionProc>>,
336 pub selection: Selection,
337 pub graphql_client: DynGraphQLClient,
338}
339#[derive(Builder, Debug, PartialEq)]
340pub struct AddressContainerOpts {
341 #[builder(setter(into, strip_option), default)]
344 pub no_lock: Option<bool>,
345}
346#[derive(Builder, Debug, PartialEq)]
347pub struct AddressDirectoryOpts<'a> {
348 #[builder(setter(into, strip_option), default)]
349 pub exclude: Option<Vec<&'a str>>,
350 #[builder(setter(into, strip_option), default)]
351 pub gitignore: Option<bool>,
352 #[builder(setter(into, strip_option), default)]
353 pub include: Option<Vec<&'a str>>,
354 #[builder(setter(into, strip_option), default)]
355 pub no_cache: Option<bool>,
356 #[builder(setter(into, strip_option), default)]
359 pub no_lock: Option<bool>,
360}
361#[derive(Builder, Debug, PartialEq)]
362pub struct AddressFileOpts<'a> {
363 #[builder(setter(into, strip_option), default)]
364 pub exclude: Option<Vec<&'a str>>,
365 #[builder(setter(into, strip_option), default)]
366 pub gitignore: Option<bool>,
367 #[builder(setter(into, strip_option), default)]
368 pub include: Option<Vec<&'a str>>,
369 #[builder(setter(into, strip_option), default)]
370 pub no_cache: Option<bool>,
371 #[builder(setter(into, strip_option), default)]
374 pub no_lock: Option<bool>,
375}
376#[derive(Builder, Debug, PartialEq)]
377pub struct AddressGitRefOpts {
378 #[builder(setter(into, strip_option), default)]
381 pub no_lock: Option<bool>,
382}
383impl IntoID<Id> for Address {
384 fn into_id(
385 self,
386 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
387 Box::pin(async move { self.id().await })
388 }
389}
390impl Loadable for Address {
391 fn graphql_type() -> &'static str {
392 "Address"
393 }
394 fn from_query(
395 proc: Option<Arc<DaggerSessionProc>>,
396 selection: Selection,
397 graphql_client: DynGraphQLClient,
398 ) -> Self {
399 Self {
400 proc,
401 selection,
402 graphql_client,
403 }
404 }
405}
406impl Address {
407 pub async fn id(&self) -> Result<Id, DaggerError> {
409 let query = self.selection.select("id");
410 query.execute(self.graphql_client.clone()).await
411 }
412 pub async fn value(&self) -> Result<String, DaggerError> {
414 let query = self.selection.select("value");
415 query.execute(self.graphql_client.clone()).await
416 }
417 pub fn container(&self) -> Container {
423 let query = self.selection.select("container");
424 Container {
425 proc: self.proc.clone(),
426 selection: query,
427 graphql_client: self.graphql_client.clone(),
428 }
429 }
430 pub fn container_opts(&self, opts: AddressContainerOpts) -> Container {
436 let mut query = self.selection.select("container");
437 if let Some(no_lock) = opts.no_lock {
438 query = query.arg("noLock", no_lock);
439 }
440 Container {
441 proc: self.proc.clone(),
442 selection: query,
443 graphql_client: self.graphql_client.clone(),
444 }
445 }
446 pub fn directory(&self) -> Directory {
452 let query = self.selection.select("directory");
453 Directory {
454 proc: self.proc.clone(),
455 selection: query,
456 graphql_client: self.graphql_client.clone(),
457 }
458 }
459 pub fn directory_opts<'a>(&self, opts: AddressDirectoryOpts<'a>) -> Directory {
465 let mut query = self.selection.select("directory");
466 if let Some(exclude) = opts.exclude {
467 query = query.arg("exclude", exclude);
468 }
469 if let Some(include) = opts.include {
470 query = query.arg("include", include);
471 }
472 if let Some(gitignore) = opts.gitignore {
473 query = query.arg("gitignore", gitignore);
474 }
475 if let Some(no_cache) = opts.no_cache {
476 query = query.arg("noCache", no_cache);
477 }
478 if let Some(no_lock) = opts.no_lock {
479 query = query.arg("noLock", no_lock);
480 }
481 Directory {
482 proc: self.proc.clone(),
483 selection: query,
484 graphql_client: self.graphql_client.clone(),
485 }
486 }
487 pub fn file(&self) -> File {
493 let query = self.selection.select("file");
494 File {
495 proc: self.proc.clone(),
496 selection: query,
497 graphql_client: self.graphql_client.clone(),
498 }
499 }
500 pub fn file_opts<'a>(&self, opts: AddressFileOpts<'a>) -> File {
506 let mut query = self.selection.select("file");
507 if let Some(exclude) = opts.exclude {
508 query = query.arg("exclude", exclude);
509 }
510 if let Some(include) = opts.include {
511 query = query.arg("include", include);
512 }
513 if let Some(gitignore) = opts.gitignore {
514 query = query.arg("gitignore", gitignore);
515 }
516 if let Some(no_cache) = opts.no_cache {
517 query = query.arg("noCache", no_cache);
518 }
519 if let Some(no_lock) = opts.no_lock {
520 query = query.arg("noLock", no_lock);
521 }
522 File {
523 proc: self.proc.clone(),
524 selection: query,
525 graphql_client: self.graphql_client.clone(),
526 }
527 }
528 pub fn git_ref(&self) -> GitRef {
534 let query = self.selection.select("gitRef");
535 GitRef {
536 proc: self.proc.clone(),
537 selection: query,
538 graphql_client: self.graphql_client.clone(),
539 }
540 }
541 pub fn git_ref_opts(&self, opts: AddressGitRefOpts) -> GitRef {
547 let mut query = self.selection.select("gitRef");
548 if let Some(no_lock) = opts.no_lock {
549 query = query.arg("noLock", no_lock);
550 }
551 GitRef {
552 proc: self.proc.clone(),
553 selection: query,
554 graphql_client: self.graphql_client.clone(),
555 }
556 }
557 pub fn git_repository(&self) -> GitRepository {
559 let query = self.selection.select("gitRepository");
560 GitRepository {
561 proc: self.proc.clone(),
562 selection: query,
563 graphql_client: self.graphql_client.clone(),
564 }
565 }
566 pub fn secret(&self) -> Secret {
568 let query = self.selection.select("secret");
569 Secret {
570 proc: self.proc.clone(),
571 selection: query,
572 graphql_client: self.graphql_client.clone(),
573 }
574 }
575 pub fn service(&self) -> Service {
577 let query = self.selection.select("service");
578 Service {
579 proc: self.proc.clone(),
580 selection: query,
581 graphql_client: self.graphql_client.clone(),
582 }
583 }
584 pub fn socket(&self) -> Socket {
586 let query = self.selection.select("socket");
587 Socket {
588 proc: self.proc.clone(),
589 selection: query,
590 graphql_client: self.graphql_client.clone(),
591 }
592 }
593 pub fn volume(&self) -> Volume {
595 let query = self.selection.select("volume");
596 Volume {
597 proc: self.proc.clone(),
598 selection: query,
599 graphql_client: self.graphql_client.clone(),
600 }
601 }
602 pub fn workspace(&self) -> Workspace {
604 let query = self.selection.select("workspace");
605 Workspace {
606 proc: self.proc.clone(),
607 selection: query,
608 graphql_client: self.graphql_client.clone(),
609 }
610 }
611}
612impl Node for Address {
613 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
614 let query = self.selection.select("id");
615 let graphql_client = self.graphql_client.clone();
616 async move { query.execute(graphql_client).await }
617 }
618}
619#[derive(Clone)]
620pub struct Agent {
621 pub proc: Option<Arc<DaggerSessionProc>>,
622 pub selection: Selection,
623 pub graphql_client: DynGraphQLClient,
624}
625#[derive(Builder, Debug, PartialEq)]
626pub struct AgentSendOpts<'a> {
627 #[builder(setter(into, strip_option), default)]
629 pub content: Option<Vec<LlmContentBlockInput>>,
630 #[builder(setter(into, strip_option), default)]
632 pub reply_to: Option<&'a str>,
633}
634#[derive(Builder, Debug, PartialEq)]
635pub struct AgentPauseOpts {
636 #[builder(setter(into, strip_option), default)]
638 pub interrupt: Option<bool>,
639}
640#[derive(Builder, Debug, PartialEq)]
641pub struct AgentNotifyOpts {
642 #[builder(setter(into, strip_option), default)]
644 pub on: Option<Vec<AgentState>>,
645}
646#[derive(Builder, Debug, PartialEq)]
647pub struct AgentStopOpts {
648 #[builder(setter(into, strip_option), default)]
650 pub kill: Option<bool>,
651}
652impl IntoID<Id> for Agent {
653 fn into_id(
654 self,
655 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
656 Box::pin(async move { self.id().await })
657 }
658}
659impl Loadable for Agent {
660 fn graphql_type() -> &'static str {
661 "Agent"
662 }
663 fn from_query(
664 proc: Option<Arc<DaggerSessionProc>>,
665 selection: Selection,
666 graphql_client: DynGraphQLClient,
667 ) -> Self {
668 Self {
669 proc,
670 selection,
671 graphql_client,
672 }
673 }
674}
675impl Agent {
676 pub async fn id(&self) -> Result<Id, DaggerError> {
678 let query = self.selection.select("id");
679 query.execute(self.graphql_client.clone()).await
680 }
681 pub async fn name(&self) -> Result<String, DaggerError> {
683 let query = self.selection.select("name");
684 query.execute(self.graphql_client.clone()).await
685 }
686 pub async fn handle(&self) -> Result<String, DaggerError> {
689 let query = self.selection.select("handle");
690 query.execute(self.graphql_client.clone()).await
691 }
692 pub async fn state(&self) -> Result<AgentState, DaggerError> {
695 let query = self.selection.select("state");
696 query.execute(self.graphql_client.clone()).await
697 }
698 pub async fn error(&self) -> Result<String, DaggerError> {
701 let query = self.selection.select("error");
702 query.execute(self.graphql_client.clone()).await
703 }
704 pub fn seed(&self) -> Llm {
708 let query = self.selection.select("seed");
709 Llm {
710 proc: self.proc.clone(),
711 selection: query,
712 graphql_client: self.graphql_client.clone(),
713 }
714 }
715 pub fn snapshot(&self) -> Llm {
719 let query = self.selection.select("snapshot");
720 Llm {
721 proc: self.proc.clone(),
722 selection: query,
723 graphql_client: self.graphql_client.clone(),
724 }
725 }
726 pub async fn send(&self, message: impl Into<String>) -> Result<AgentMessage, DaggerError> {
736 let mut query = self.selection.select("send");
737 query = query.arg("message", message.into());
738 let id: Id = query.execute(self.graphql_client.clone()).await?;
739 Ok(AgentMessage {
740 proc: self.proc.clone(),
741 selection: query
742 .root()
743 .select("node")
744 .arg("id", &id.0)
745 .inline_fragment("AgentMessage"),
746 graphql_client: self.graphql_client.clone(),
747 })
748 }
749 pub async fn send_opts<'a>(
759 &self,
760 message: impl Into<String>,
761 opts: AgentSendOpts<'a>,
762 ) -> Result<AgentMessage, DaggerError> {
763 let mut query = self.selection.select("send");
764 query = query.arg("message", message.into());
765 if let Some(reply_to) = opts.reply_to {
766 query = query.arg("replyTo", reply_to);
767 }
768 if let Some(content) = opts.content {
769 query = query.arg("content", content);
770 }
771 let id: Id = query.execute(self.graphql_client.clone()).await?;
772 Ok(AgentMessage {
773 proc: self.proc.clone(),
774 selection: query
775 .root()
776 .select("node")
777 .arg("id", &id.0)
778 .inline_fragment("AgentMessage"),
779 graphql_client: self.graphql_client.clone(),
780 })
781 }
782 pub fn message(&self, r#ref: impl Into<String>) -> AgentMessage {
790 let mut query = self.selection.select("message");
791 query = query.arg("ref", r#ref.into());
792 AgentMessage {
793 proc: self.proc.clone(),
794 selection: query,
795 graphql_client: self.graphql_client.clone(),
796 }
797 }
798 pub async fn pause(&self) -> Result<Agent, DaggerError> {
806 let query = self.selection.select("pause");
807 let id: Id = query.execute(self.graphql_client.clone()).await?;
808 Ok(Agent {
809 proc: self.proc.clone(),
810 selection: query
811 .root()
812 .select("node")
813 .arg("id", &id.0)
814 .inline_fragment("Agent"),
815 graphql_client: self.graphql_client.clone(),
816 })
817 }
818 pub async fn pause_opts(&self, opts: AgentPauseOpts) -> Result<Agent, DaggerError> {
826 let mut query = self.selection.select("pause");
827 if let Some(interrupt) = opts.interrupt {
828 query = query.arg("interrupt", interrupt);
829 }
830 let id: Id = query.execute(self.graphql_client.clone()).await?;
831 Ok(Agent {
832 proc: self.proc.clone(),
833 selection: query
834 .root()
835 .select("node")
836 .arg("id", &id.0)
837 .inline_fragment("Agent"),
838 graphql_client: self.graphql_client.clone(),
839 })
840 }
841 pub async fn resume(&self) -> Result<Agent, DaggerError> {
845 let query = self.selection.select("resume");
846 let id: Id = query.execute(self.graphql_client.clone()).await?;
847 Ok(Agent {
848 proc: self.proc.clone(),
849 selection: query
850 .root()
851 .select("node")
852 .arg("id", &id.0)
853 .inline_fragment("Agent"),
854 graphql_client: self.graphql_client.clone(),
855 })
856 }
857 pub async fn wait(&self) -> Result<Agent, DaggerError> {
860 let query = self.selection.select("wait");
861 let id: Id = query.execute(self.graphql_client.clone()).await?;
862 Ok(Agent {
863 proc: self.proc.clone(),
864 selection: query
865 .root()
866 .select("node")
867 .arg("id", &id.0)
868 .inline_fragment("Agent"),
869 graphql_client: self.graphql_client.clone(),
870 })
871 }
872 pub async fn notify(&self, subscriber: impl IntoID<Id>) -> Result<Agent, DaggerError> {
883 let mut query = self.selection.select("notify");
884 query = query.arg_lazy(
885 "subscriber",
886 Box::new(move || {
887 let subscriber = subscriber.clone();
888 Box::pin(async move { subscriber.into_id().await.unwrap().quote() })
889 }),
890 );
891 let id: Id = query.execute(self.graphql_client.clone()).await?;
892 Ok(Agent {
893 proc: self.proc.clone(),
894 selection: query
895 .root()
896 .select("node")
897 .arg("id", &id.0)
898 .inline_fragment("Agent"),
899 graphql_client: self.graphql_client.clone(),
900 })
901 }
902 pub async fn notify_opts(
913 &self,
914 subscriber: impl IntoID<Id>,
915 opts: AgentNotifyOpts,
916 ) -> Result<Agent, DaggerError> {
917 let mut query = self.selection.select("notify");
918 query = query.arg_lazy(
919 "subscriber",
920 Box::new(move || {
921 let subscriber = subscriber.clone();
922 Box::pin(async move { subscriber.into_id().await.unwrap().quote() })
923 }),
924 );
925 if let Some(on) = opts.on {
926 query = query.arg("on", on);
927 }
928 let id: Id = query.execute(self.graphql_client.clone()).await?;
929 Ok(Agent {
930 proc: self.proc.clone(),
931 selection: query
932 .root()
933 .select("node")
934 .arg("id", &id.0)
935 .inline_fragment("Agent"),
936 graphql_client: self.graphql_client.clone(),
937 })
938 }
939 pub async fn stop(&self) -> Result<Agent, DaggerError> {
945 let query = self.selection.select("stop");
946 let id: Id = query.execute(self.graphql_client.clone()).await?;
947 Ok(Agent {
948 proc: self.proc.clone(),
949 selection: query
950 .root()
951 .select("node")
952 .arg("id", &id.0)
953 .inline_fragment("Agent"),
954 graphql_client: self.graphql_client.clone(),
955 })
956 }
957 pub async fn stop_opts(&self, opts: AgentStopOpts) -> Result<Agent, DaggerError> {
963 let mut query = self.selection.select("stop");
964 if let Some(kill) = opts.kill {
965 query = query.arg("kill", kill);
966 }
967 let id: Id = query.execute(self.graphql_client.clone()).await?;
968 Ok(Agent {
969 proc: self.proc.clone(),
970 selection: query
971 .root()
972 .select("node")
973 .arg("id", &id.0)
974 .inline_fragment("Agent"),
975 graphql_client: self.graphql_client.clone(),
976 })
977 }
978 pub async fn reseed(&self, conversation: impl IntoID<Id>) -> Result<Agent, DaggerError> {
987 let mut query = self.selection.select("reseed");
988 query = query.arg_lazy(
989 "conversation",
990 Box::new(move || {
991 let conversation = conversation.clone();
992 Box::pin(async move { conversation.into_id().await.unwrap().quote() })
993 }),
994 );
995 let id: Id = query.execute(self.graphql_client.clone()).await?;
996 Ok(Agent {
997 proc: self.proc.clone(),
998 selection: query
999 .root()
1000 .select("node")
1001 .arg("id", &id.0)
1002 .inline_fragment("Agent"),
1003 graphql_client: self.graphql_client.clone(),
1004 })
1005 }
1006}
1007impl Node for Agent {
1008 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
1009 let query = self.selection.select("id");
1010 let graphql_client = self.graphql_client.clone();
1011 async move { query.execute(graphql_client).await }
1012 }
1013}
1014#[derive(Clone)]
1015pub struct AgentMessage {
1016 pub proc: Option<Arc<DaggerSessionProc>>,
1017 pub selection: Selection,
1018 pub graphql_client: DynGraphQLClient,
1019}
1020impl IntoID<Id> for AgentMessage {
1021 fn into_id(
1022 self,
1023 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
1024 Box::pin(async move { self.id().await })
1025 }
1026}
1027impl Loadable for AgentMessage {
1028 fn graphql_type() -> &'static str {
1029 "AgentMessage"
1030 }
1031 fn from_query(
1032 proc: Option<Arc<DaggerSessionProc>>,
1033 selection: Selection,
1034 graphql_client: DynGraphQLClient,
1035 ) -> Self {
1036 Self {
1037 proc,
1038 selection,
1039 graphql_client,
1040 }
1041 }
1042}
1043impl AgentMessage {
1044 pub async fn id(&self) -> Result<Id, DaggerError> {
1046 let query = self.selection.select("id");
1047 query.execute(self.graphql_client.clone()).await
1048 }
1049 pub async fn delivery(&self) -> Result<AgentMessageDelivery, DaggerError> {
1052 let query = self.selection.select("delivery");
1053 query.execute(self.graphql_client.clone()).await
1054 }
1055 pub async fn r#ref(&self) -> Result<String, DaggerError> {
1058 let query = self.selection.select("ref");
1059 query.execute(self.graphql_client.clone()).await
1060 }
1061 pub async fn response(&self) -> Result<String, DaggerError> {
1066 let query = self.selection.select("response");
1067 query.execute(self.graphql_client.clone()).await
1068 }
1069}
1070impl Node for AgentMessage {
1071 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
1072 let query = self.selection.select("id");
1073 let graphql_client = self.graphql_client.clone();
1074 async move { query.execute(graphql_client).await }
1075 }
1076}
1077#[derive(Clone)]
1078pub struct Artifact {
1079 pub proc: Option<Arc<DaggerSessionProc>>,
1080 pub selection: Selection,
1081 pub graphql_client: DynGraphQLClient,
1082}
1083#[derive(Builder, Debug, PartialEq)]
1084pub struct ArtifactUriOpts {
1085 #[builder(setter(into, strip_option), default)]
1087 pub absolute: Option<bool>,
1088 #[builder(setter(into, strip_option), default)]
1090 pub dimension_keys: Option<bool>,
1091 #[builder(setter(into, strip_option), default)]
1093 pub type_assertion: Option<bool>,
1094}
1095impl IntoID<Id> for Artifact {
1096 fn into_id(
1097 self,
1098 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
1099 Box::pin(async move { self.id().await })
1100 }
1101}
1102impl Loadable for Artifact {
1103 fn graphql_type() -> &'static str {
1104 "Artifact"
1105 }
1106 fn from_query(
1107 proc: Option<Arc<DaggerSessionProc>>,
1108 selection: Selection,
1109 graphql_client: DynGraphQLClient,
1110 ) -> Self {
1111 Self {
1112 proc,
1113 selection,
1114 graphql_client,
1115 }
1116 }
1117}
1118impl Artifact {
1119 pub async fn id(&self) -> Result<Id, DaggerError> {
1121 let query = self.selection.select("id");
1122 query.execute(self.graphql_client.clone()).await
1123 }
1124 pub async fn load_error(&self) -> Result<String, DaggerError> {
1126 let query = self.selection.select("loadError");
1127 query.execute(self.graphql_client.clone()).await
1128 }
1129 pub async fn arguments(&self) -> Result<Vec<FunctionArg>, DaggerError> {
1131 let query = self.selection.select("arguments");
1132 let query = query.select("id");
1133 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
1134 Ok(ids
1135 .into_iter()
1136 .map(|id| FunctionArg {
1137 proc: self.proc.clone(),
1138 selection: crate::querybuilder::query()
1139 .select("node")
1140 .arg("id", &id.0)
1141 .inline_fragment("FunctionArg"),
1142 graphql_client: self.graphql_client.clone(),
1143 })
1144 .collect())
1145 }
1146 pub async fn description(&self) -> Result<String, DaggerError> {
1148 let query = self.selection.select("description");
1149 query.execute(self.graphql_client.clone()).await
1150 }
1151 pub async fn uri(&self) -> Result<String, DaggerError> {
1157 let query = self.selection.select("uri");
1158 query.execute(self.graphql_client.clone()).await
1159 }
1160 pub async fn uri_opts(&self, opts: ArtifactUriOpts) -> Result<String, DaggerError> {
1166 let mut query = self.selection.select("uri");
1167 if let Some(absolute) = opts.absolute {
1168 query = query.arg("absolute", absolute);
1169 }
1170 if let Some(dimension_keys) = opts.dimension_keys {
1171 query = query.arg("dimensionKeys", dimension_keys);
1172 }
1173 if let Some(type_assertion) = opts.type_assertion {
1174 query = query.arg("typeAssertion", type_assertion);
1175 }
1176 query.execute(self.graphql_client.clone()).await
1177 }
1178 pub async fn module_name(&self) -> Result<String, DaggerError> {
1180 let query = self.selection.select("moduleName");
1181 query.execute(self.graphql_client.clone()).await
1182 }
1183 pub async fn path(&self) -> Result<Vec<String>, DaggerError> {
1185 let query = self.selection.select("path");
1186 query.execute(self.graphql_client.clone()).await
1187 }
1188 pub async fn dimension_keys(&self) -> Result<Vec<ArtifactDimensionKey>, DaggerError> {
1190 let query = self.selection.select("dimensionKeys");
1191 let query = query.select("id");
1192 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
1193 Ok(ids
1194 .into_iter()
1195 .map(|id| ArtifactDimensionKey {
1196 proc: self.proc.clone(),
1197 selection: crate::querybuilder::query()
1198 .select("node")
1199 .arg("id", &id.0)
1200 .inline_fragment("ArtifactDimensionKey"),
1201 graphql_client: self.graphql_client.clone(),
1202 })
1203 .collect())
1204 }
1205 pub async fn directives(&self) -> Result<Vec<String>, DaggerError> {
1207 let query = self.selection.select("directives");
1208 query.execute(self.graphql_client.clone()).await
1209 }
1210 pub fn value(&self, arguments: Json) -> NodeClient {
1216 let mut query = self.selection.select("value");
1217 query = query.arg("arguments", arguments);
1218 NodeClient {
1219 proc: self.proc.clone(),
1220 selection: query,
1221 graphql_client: self.graphql_client.clone(),
1222 }
1223 }
1224}
1225impl Node for Artifact {
1226 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
1227 let query = self.selection.select("id");
1228 let graphql_client = self.graphql_client.clone();
1229 async move { query.execute(graphql_client).await }
1230 }
1231}
1232#[derive(Clone)]
1233pub struct ArtifactDimension {
1234 pub proc: Option<Arc<DaggerSessionProc>>,
1235 pub selection: Selection,
1236 pub graphql_client: DynGraphQLClient,
1237}
1238impl IntoID<Id> for ArtifactDimension {
1239 fn into_id(
1240 self,
1241 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
1242 Box::pin(async move { self.id().await })
1243 }
1244}
1245impl Loadable for ArtifactDimension {
1246 fn graphql_type() -> &'static str {
1247 "ArtifactDimension"
1248 }
1249 fn from_query(
1250 proc: Option<Arc<DaggerSessionProc>>,
1251 selection: Selection,
1252 graphql_client: DynGraphQLClient,
1253 ) -> Self {
1254 Self {
1255 proc,
1256 selection,
1257 graphql_client,
1258 }
1259 }
1260}
1261impl ArtifactDimension {
1262 pub async fn id(&self) -> Result<Id, DaggerError> {
1264 let query = self.selection.select("id");
1265 query.execute(self.graphql_client.clone()).await
1266 }
1267 pub async fn kind(&self) -> Result<ArtifactDimensionKind, DaggerError> {
1269 let query = self.selection.select("kind");
1270 query.execute(self.graphql_client.clone()).await
1271 }
1272 pub async fn collection_type(&self) -> Result<String, DaggerError> {
1274 let query = self.selection.select("collectionType");
1275 query.execute(self.graphql_client.clone()).await
1276 }
1277 pub async fn identifier(&self) -> Result<String, DaggerError> {
1279 let query = self.selection.select("identifier");
1280 query.execute(self.graphql_client.clone()).await
1281 }
1282 pub async fn name(&self) -> Result<String, DaggerError> {
1284 let query = self.selection.select("name");
1285 query.execute(self.graphql_client.clone()).await
1286 }
1287 pub async fn qualified_name(&self) -> Result<String, DaggerError> {
1289 let query = self.selection.select("qualifiedName");
1290 query.execute(self.graphql_client.clone()).await
1291 }
1292 pub async fn item_type(&self) -> Result<String, DaggerError> {
1294 let query = self.selection.select("itemType");
1295 query.execute(self.graphql_client.clone()).await
1296 }
1297 pub async fn key_name(&self) -> Result<String, DaggerError> {
1299 let query = self.selection.select("keyName");
1300 query.execute(self.graphql_client.clone()).await
1301 }
1302 pub async fn key_description(&self) -> Result<String, DaggerError> {
1304 let query = self.selection.select("keyDescription");
1305 query.execute(self.graphql_client.clone()).await
1306 }
1307}
1308impl Node for ArtifactDimension {
1309 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
1310 let query = self.selection.select("id");
1311 let graphql_client = self.graphql_client.clone();
1312 async move { query.execute(graphql_client).await }
1313 }
1314}
1315#[derive(Clone)]
1316pub struct ArtifactDimensionKey {
1317 pub proc: Option<Arc<DaggerSessionProc>>,
1318 pub selection: Selection,
1319 pub graphql_client: DynGraphQLClient,
1320}
1321impl IntoID<Id> for ArtifactDimensionKey {
1322 fn into_id(
1323 self,
1324 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
1325 Box::pin(async move { self.id().await })
1326 }
1327}
1328impl Loadable for ArtifactDimensionKey {
1329 fn graphql_type() -> &'static str {
1330 "ArtifactDimensionKey"
1331 }
1332 fn from_query(
1333 proc: Option<Arc<DaggerSessionProc>>,
1334 selection: Selection,
1335 graphql_client: DynGraphQLClient,
1336 ) -> Self {
1337 Self {
1338 proc,
1339 selection,
1340 graphql_client,
1341 }
1342 }
1343}
1344impl ArtifactDimensionKey {
1345 pub async fn id(&self) -> Result<Id, DaggerError> {
1347 let query = self.selection.select("id");
1348 query.execute(self.graphql_client.clone()).await
1349 }
1350 pub async fn dimension(&self) -> Result<String, DaggerError> {
1352 let query = self.selection.select("dimension");
1353 query.execute(self.graphql_client.clone()).await
1354 }
1355 pub async fn key(&self) -> Result<String, DaggerError> {
1357 let query = self.selection.select("key");
1358 query.execute(self.graphql_client.clone()).await
1359 }
1360}
1361impl Node for ArtifactDimensionKey {
1362 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
1363 let query = self.selection.select("id");
1364 let graphql_client = self.graphql_client.clone();
1365 async move { query.execute(graphql_client).await }
1366 }
1367}
1368#[derive(Clone)]
1369pub struct ArtifactPath {
1370 pub proc: Option<Arc<DaggerSessionProc>>,
1371 pub selection: Selection,
1372 pub graphql_client: DynGraphQLClient,
1373}
1374impl IntoID<Id> for ArtifactPath {
1375 fn into_id(
1376 self,
1377 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
1378 Box::pin(async move { self.id().await })
1379 }
1380}
1381impl Loadable for ArtifactPath {
1382 fn graphql_type() -> &'static str {
1383 "ArtifactPath"
1384 }
1385 fn from_query(
1386 proc: Option<Arc<DaggerSessionProc>>,
1387 selection: Selection,
1388 graphql_client: DynGraphQLClient,
1389 ) -> Self {
1390 Self {
1391 proc,
1392 selection,
1393 graphql_client,
1394 }
1395 }
1396}
1397impl ArtifactPath {
1398 pub async fn id(&self) -> Result<Id, DaggerError> {
1400 let query = self.selection.select("id");
1401 query.execute(self.graphql_client.clone()).await
1402 }
1403 pub async fn module_name(&self) -> Result<String, DaggerError> {
1405 let query = self.selection.select("moduleName");
1406 query.execute(self.graphql_client.clone()).await
1407 }
1408 pub async fn uri(&self) -> Result<String, DaggerError> {
1410 let query = self.selection.select("uri");
1411 query.execute(self.graphql_client.clone()).await
1412 }
1413 pub async fn description(&self) -> Result<String, DaggerError> {
1415 let query = self.selection.select("description");
1416 query.execute(self.graphql_client.clone()).await
1417 }
1418 pub async fn load_error(&self) -> Result<String, DaggerError> {
1420 let query = self.selection.select("loadError");
1421 query.execute(self.graphql_client.clone()).await
1422 }
1423 pub async fn dimensions(&self) -> Result<Vec<String>, DaggerError> {
1425 let query = self.selection.select("dimensions");
1426 query.execute(self.graphql_client.clone()).await
1427 }
1428}
1429impl Node for ArtifactPath {
1430 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
1431 let query = self.selection.select("id");
1432 let graphql_client = self.graphql_client.clone();
1433 async move { query.execute(graphql_client).await }
1434 }
1435}
1436#[derive(Clone)]
1437pub struct ArtifactResult {
1438 pub proc: Option<Arc<DaggerSessionProc>>,
1439 pub selection: Selection,
1440 pub graphql_client: DynGraphQLClient,
1441}
1442impl IntoID<Id> for ArtifactResult {
1443 fn into_id(
1444 self,
1445 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
1446 Box::pin(async move { self.id().await })
1447 }
1448}
1449impl Loadable for ArtifactResult {
1450 fn graphql_type() -> &'static str {
1451 "ArtifactResult"
1452 }
1453 fn from_query(
1454 proc: Option<Arc<DaggerSessionProc>>,
1455 selection: Selection,
1456 graphql_client: DynGraphQLClient,
1457 ) -> Self {
1458 Self {
1459 proc,
1460 selection,
1461 graphql_client,
1462 }
1463 }
1464}
1465impl ArtifactResult {
1466 pub async fn id(&self) -> Result<Id, DaggerError> {
1468 let query = self.selection.select("id");
1469 query.execute(self.graphql_client.clone()).await
1470 }
1471 pub fn artifact(&self) -> Artifact {
1473 let query = self.selection.select("artifact");
1474 Artifact {
1475 proc: self.proc.clone(),
1476 selection: query,
1477 graphql_client: self.graphql_client.clone(),
1478 }
1479 }
1480 pub async fn error(&self) -> Result<Option<Error>, DaggerError> {
1482 let query = self.selection.select("error");
1483 let query = query.select("id");
1484 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
1485 Ok(id.map(|id| Error {
1486 proc: self.proc.clone(),
1487 selection: query
1488 .root()
1489 .select("node")
1490 .arg("id", &id.0)
1491 .inline_fragment("Error"),
1492 graphql_client: self.graphql_client.clone(),
1493 }))
1494 }
1495 pub async fn value(&self) -> Result<Option<NodeClient>, DaggerError> {
1497 let query = self.selection.select("value");
1498 let query = query.select("id");
1499 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
1500 Ok(id.map(|id| NodeClient {
1501 proc: self.proc.clone(),
1502 selection: query
1503 .root()
1504 .select("node")
1505 .arg("id", &id.0)
1506 .inline_fragment("Node"),
1507 graphql_client: self.graphql_client.clone(),
1508 }))
1509 }
1510}
1511impl Node for ArtifactResult {
1512 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
1513 let query = self.selection.select("id");
1514 let graphql_client = self.graphql_client.clone();
1515 async move { query.execute(graphql_client).await }
1516 }
1517}
1518#[derive(Clone)]
1519pub struct Artifacts {
1520 pub proc: Option<Arc<DaggerSessionProc>>,
1521 pub selection: Selection,
1522 pub graphql_client: DynGraphQLClient,
1523}
1524#[derive(Builder, Debug, PartialEq)]
1525pub struct ArtifactsPathDefinitionsOpts<'a> {
1526 #[builder(setter(into, strip_option), default)]
1528 pub absolute: Option<bool>,
1529 #[builder(setter(into, strip_option), default)]
1531 pub dimension: Option<&'a str>,
1532 #[builder(setter(into, strip_option), default)]
1534 pub type_assertion: Option<bool>,
1535}
1536#[derive(Builder, Debug, PartialEq)]
1537pub struct ArtifactsValuesOpts {
1538 #[builder(setter(into, strip_option), default)]
1540 pub arguments: Option<Json>,
1541 #[builder(setter(into, strip_option), default)]
1543 pub fail_fast: Option<bool>,
1544 #[builder(setter(into, strip_option), default)]
1546 pub max_concurrency: Option<isize>,
1547}
1548#[derive(Builder, Debug, PartialEq)]
1549pub struct ArtifactsFilterDirectivesOpts {
1550 #[builder(setter(into, strip_option), default)]
1552 pub exclude: Option<bool>,
1553}
1554#[derive(Builder, Debug, PartialEq)]
1555pub struct ArtifactsFilterParentTypesOpts {
1556 #[builder(setter(into, strip_option), default)]
1558 pub exclude: Option<bool>,
1559}
1560#[derive(Builder, Debug, PartialEq)]
1561pub struct ArtifactsFilterParentDirectivesOpts {
1562 #[builder(setter(into, strip_option), default)]
1564 pub exclude: Option<bool>,
1565}
1566#[derive(Builder, Debug, PartialEq)]
1567pub struct ArtifactsFilterTypesOpts {
1568 #[builder(setter(into, strip_option), default)]
1570 pub exclude: Option<bool>,
1571}
1572impl IntoID<Id> for Artifacts {
1573 fn into_id(
1574 self,
1575 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
1576 Box::pin(async move { self.id().await })
1577 }
1578}
1579impl Loadable for Artifacts {
1580 fn graphql_type() -> &'static str {
1581 "Artifacts"
1582 }
1583 fn from_query(
1584 proc: Option<Arc<DaggerSessionProc>>,
1585 selection: Selection,
1586 graphql_client: DynGraphQLClient,
1587 ) -> Self {
1588 Self {
1589 proc,
1590 selection,
1591 graphql_client,
1592 }
1593 }
1594}
1595impl Artifacts {
1596 pub async fn id(&self) -> Result<Id, DaggerError> {
1598 let query = self.selection.select("id");
1599 query.execute(self.graphql_client.clone()).await
1600 }
1601 pub async fn as_expertise(&self) -> Result<Vec<Expertise>, DaggerError> {
1603 let query = self.selection.select("asExpertise");
1604 let query = query.select("id");
1605 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
1606 Ok(ids
1607 .into_iter()
1608 .map(|id| Expertise {
1609 proc: self.proc.clone(),
1610 selection: crate::querybuilder::query()
1611 .select("node")
1612 .arg("id", &id.0)
1613 .inline_fragment("Expertise"),
1614 graphql_client: self.graphql_client.clone(),
1615 })
1616 .collect())
1617 }
1618 pub async fn as_generators(&self) -> Result<Vec<Generator>, DaggerError> {
1620 let query = self.selection.select("asGenerators");
1621 let query = query.select("id");
1622 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
1623 Ok(ids
1624 .into_iter()
1625 .map(|id| Generator {
1626 proc: self.proc.clone(),
1627 selection: crate::querybuilder::query()
1628 .select("node")
1629 .arg("id", &id.0)
1630 .inline_fragment("Generator"),
1631 graphql_client: self.graphql_client.clone(),
1632 })
1633 .collect())
1634 }
1635 pub async fn as_checks(&self) -> Result<Vec<Check>, DaggerError> {
1637 let query = self.selection.select("asChecks");
1638 let query = query.select("id");
1639 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
1640 Ok(ids
1641 .into_iter()
1642 .map(|id| Check {
1643 proc: self.proc.clone(),
1644 selection: crate::querybuilder::query()
1645 .select("node")
1646 .arg("id", &id.0)
1647 .inline_fragment("Check"),
1648 graphql_client: self.graphql_client.clone(),
1649 })
1650 .collect())
1651 }
1652 pub async fn as_changesets(&self) -> Result<Vec<Changeset>, DaggerError> {
1654 let query = self.selection.select("asChangesets");
1655 let query = query.select("id");
1656 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
1657 Ok(ids
1658 .into_iter()
1659 .map(|id| Changeset {
1660 proc: self.proc.clone(),
1661 selection: crate::querybuilder::query()
1662 .select("node")
1663 .arg("id", &id.0)
1664 .inline_fragment("Changeset"),
1665 graphql_client: self.graphql_client.clone(),
1666 })
1667 .collect())
1668 }
1669 pub async fn as_services(&self) -> Result<Vec<Service>, DaggerError> {
1671 let query = self.selection.select("asServices");
1672 let query = query.select("id");
1673 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
1674 Ok(ids
1675 .into_iter()
1676 .map(|id| Service {
1677 proc: self.proc.clone(),
1678 selection: crate::querybuilder::query()
1679 .select("node")
1680 .arg("id", &id.0)
1681 .inline_fragment("Service"),
1682 graphql_client: self.graphql_client.clone(),
1683 })
1684 .collect())
1685 }
1686 pub async fn path_definitions(&self) -> Result<Vec<ArtifactPath>, DaggerError> {
1692 let query = self.selection.select("pathDefinitions");
1693 let query = query.select("id");
1694 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
1695 Ok(ids
1696 .into_iter()
1697 .map(|id| ArtifactPath {
1698 proc: self.proc.clone(),
1699 selection: crate::querybuilder::query()
1700 .select("node")
1701 .arg("id", &id.0)
1702 .inline_fragment("ArtifactPath"),
1703 graphql_client: self.graphql_client.clone(),
1704 })
1705 .collect())
1706 }
1707 pub async fn path_definitions_opts<'a>(
1713 &self,
1714 opts: ArtifactsPathDefinitionsOpts<'a>,
1715 ) -> Result<Vec<ArtifactPath>, DaggerError> {
1716 let mut query = self.selection.select("pathDefinitions");
1717 if let Some(absolute) = opts.absolute {
1718 query = query.arg("absolute", absolute);
1719 }
1720 if let Some(type_assertion) = opts.type_assertion {
1721 query = query.arg("typeAssertion", type_assertion);
1722 }
1723 if let Some(dimension) = opts.dimension {
1724 query = query.arg("dimension", dimension);
1725 }
1726 let query = query.select("id");
1727 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
1728 Ok(ids
1729 .into_iter()
1730 .map(|id| ArtifactPath {
1731 proc: self.proc.clone(),
1732 selection: crate::querybuilder::query()
1733 .select("node")
1734 .arg("id", &id.0)
1735 .inline_fragment("ArtifactPath"),
1736 graphql_client: self.graphql_client.clone(),
1737 })
1738 .collect())
1739 }
1740 pub async fn dimension_definitions(&self) -> Result<Vec<ArtifactDimension>, DaggerError> {
1742 let query = self.selection.select("dimensionDefinitions");
1743 let query = query.select("id");
1744 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
1745 Ok(ids
1746 .into_iter()
1747 .map(|id| ArtifactDimension {
1748 proc: self.proc.clone(),
1749 selection: crate::querybuilder::query()
1750 .select("node")
1751 .arg("id", &id.0)
1752 .inline_fragment("ArtifactDimension"),
1753 graphql_client: self.graphql_client.clone(),
1754 })
1755 .collect())
1756 }
1757 pub async fn values(&self) -> Result<Vec<ArtifactResult>, DaggerError> {
1763 let query = self.selection.select("values");
1764 let query = query.select("id");
1765 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
1766 Ok(ids
1767 .into_iter()
1768 .map(|id| ArtifactResult {
1769 proc: self.proc.clone(),
1770 selection: crate::querybuilder::query()
1771 .select("node")
1772 .arg("id", &id.0)
1773 .inline_fragment("ArtifactResult"),
1774 graphql_client: self.graphql_client.clone(),
1775 })
1776 .collect())
1777 }
1778 pub async fn values_opts(
1784 &self,
1785 opts: ArtifactsValuesOpts,
1786 ) -> Result<Vec<ArtifactResult>, DaggerError> {
1787 let mut query = self.selection.select("values");
1788 if let Some(fail_fast) = opts.fail_fast {
1789 query = query.arg("failFast", fail_fast);
1790 }
1791 if let Some(arguments) = opts.arguments {
1792 query = query.arg("arguments", arguments);
1793 }
1794 if let Some(max_concurrency) = opts.max_concurrency {
1795 query = query.arg("maxConcurrency", max_concurrency);
1796 }
1797 let query = query.select("id");
1798 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
1799 Ok(ids
1800 .into_iter()
1801 .map(|id| ArtifactResult {
1802 proc: self.proc.clone(),
1803 selection: crate::querybuilder::query()
1804 .select("node")
1805 .arg("id", &id.0)
1806 .inline_fragment("ArtifactResult"),
1807 graphql_client: self.graphql_client.clone(),
1808 })
1809 .collect())
1810 }
1811 pub async fn modules(&self) -> Result<Vec<Module>, DaggerError> {
1813 let query = self.selection.select("modules");
1814 let query = query.select("id");
1815 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
1816 Ok(ids
1817 .into_iter()
1818 .map(|id| Module {
1819 proc: self.proc.clone(),
1820 selection: crate::querybuilder::query()
1821 .select("node")
1822 .arg("id", &id.0)
1823 .inline_fragment("Module"),
1824 graphql_client: self.graphql_client.clone(),
1825 })
1826 .collect())
1827 }
1828 pub async fn types(&self) -> Result<Vec<TypeDef>, DaggerError> {
1830 let query = self.selection.select("types");
1831 let query = query.select("id");
1832 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
1833 Ok(ids
1834 .into_iter()
1835 .map(|id| TypeDef {
1836 proc: self.proc.clone(),
1837 selection: crate::querybuilder::query()
1838 .select("node")
1839 .arg("id", &id.0)
1840 .inline_fragment("TypeDef"),
1841 graphql_client: self.graphql_client.clone(),
1842 })
1843 .collect())
1844 }
1845 pub fn filter_directives(&self, directives: Vec<impl Into<String>>) -> Artifacts {
1851 let mut query = self.selection.select("filterDirectives");
1852 query = query.arg(
1853 "directives",
1854 directives
1855 .into_iter()
1856 .map(|i| i.into())
1857 .collect::<Vec<String>>(),
1858 );
1859 Artifacts {
1860 proc: self.proc.clone(),
1861 selection: query,
1862 graphql_client: self.graphql_client.clone(),
1863 }
1864 }
1865 pub fn filter_directives_opts(
1871 &self,
1872 directives: Vec<impl Into<String>>,
1873 opts: ArtifactsFilterDirectivesOpts,
1874 ) -> Artifacts {
1875 let mut query = self.selection.select("filterDirectives");
1876 query = query.arg(
1877 "directives",
1878 directives
1879 .into_iter()
1880 .map(|i| i.into())
1881 .collect::<Vec<String>>(),
1882 );
1883 if let Some(exclude) = opts.exclude {
1884 query = query.arg("exclude", exclude);
1885 }
1886 Artifacts {
1887 proc: self.proc.clone(),
1888 selection: query,
1889 graphql_client: self.graphql_client.clone(),
1890 }
1891 }
1892 pub fn filter_parent_types(&self, types: Vec<impl Into<String>>) -> Artifacts {
1898 let mut query = self.selection.select("filterParentTypes");
1899 query = query.arg(
1900 "types",
1901 types.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
1902 );
1903 Artifacts {
1904 proc: self.proc.clone(),
1905 selection: query,
1906 graphql_client: self.graphql_client.clone(),
1907 }
1908 }
1909 pub fn filter_parent_types_opts(
1915 &self,
1916 types: Vec<impl Into<String>>,
1917 opts: ArtifactsFilterParentTypesOpts,
1918 ) -> Artifacts {
1919 let mut query = self.selection.select("filterParentTypes");
1920 query = query.arg(
1921 "types",
1922 types.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
1923 );
1924 if let Some(exclude) = opts.exclude {
1925 query = query.arg("exclude", exclude);
1926 }
1927 Artifacts {
1928 proc: self.proc.clone(),
1929 selection: query,
1930 graphql_client: self.graphql_client.clone(),
1931 }
1932 }
1933 pub fn filter_parent_directives(&self, directives: Vec<impl Into<String>>) -> Artifacts {
1939 let mut query = self.selection.select("filterParentDirectives");
1940 query = query.arg(
1941 "directives",
1942 directives
1943 .into_iter()
1944 .map(|i| i.into())
1945 .collect::<Vec<String>>(),
1946 );
1947 Artifacts {
1948 proc: self.proc.clone(),
1949 selection: query,
1950 graphql_client: self.graphql_client.clone(),
1951 }
1952 }
1953 pub fn filter_parent_directives_opts(
1959 &self,
1960 directives: Vec<impl Into<String>>,
1961 opts: ArtifactsFilterParentDirectivesOpts,
1962 ) -> Artifacts {
1963 let mut query = self.selection.select("filterParentDirectives");
1964 query = query.arg(
1965 "directives",
1966 directives
1967 .into_iter()
1968 .map(|i| i.into())
1969 .collect::<Vec<String>>(),
1970 );
1971 if let Some(exclude) = opts.exclude {
1972 query = query.arg("exclude", exclude);
1973 }
1974 Artifacts {
1975 proc: self.proc.clone(),
1976 selection: query,
1977 graphql_client: self.graphql_client.clone(),
1978 }
1979 }
1980 pub fn with_artifacts(&self, artifacts: impl IntoID<Id>) -> Artifacts {
1982 let mut query = self.selection.select("withArtifacts");
1983 query = query.arg_lazy(
1984 "artifacts",
1985 Box::new(move || {
1986 let artifacts = artifacts.clone();
1987 Box::pin(async move { artifacts.into_id().await.unwrap().quote() })
1988 }),
1989 );
1990 Artifacts {
1991 proc: self.proc.clone(),
1992 selection: query,
1993 graphql_client: self.graphql_client.clone(),
1994 }
1995 }
1996 pub fn without_uri(&self, uri: impl Into<String>) -> Artifacts {
1998 let mut query = self.selection.select("withoutUri");
1999 query = query.arg("uri", uri.into());
2000 Artifacts {
2001 proc: self.proc.clone(),
2002 selection: query,
2003 graphql_client: self.graphql_client.clone(),
2004 }
2005 }
2006 pub fn filter_types(&self, types: Vec<impl Into<String>>) -> Artifacts {
2012 let mut query = self.selection.select("filterTypes");
2013 query = query.arg(
2014 "types",
2015 types.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
2016 );
2017 Artifacts {
2018 proc: self.proc.clone(),
2019 selection: query,
2020 graphql_client: self.graphql_client.clone(),
2021 }
2022 }
2023 pub fn filter_types_opts(
2029 &self,
2030 types: Vec<impl Into<String>>,
2031 opts: ArtifactsFilterTypesOpts,
2032 ) -> Artifacts {
2033 let mut query = self.selection.select("filterTypes");
2034 query = query.arg(
2035 "types",
2036 types.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
2037 );
2038 if let Some(exclude) = opts.exclude {
2039 query = query.arg("exclude", exclude);
2040 }
2041 Artifacts {
2042 proc: self.proc.clone(),
2043 selection: query,
2044 graphql_client: self.graphql_client.clone(),
2045 }
2046 }
2047 pub fn filter_path(&self, path: Vec<impl Into<String>>) -> Artifacts {
2049 let mut query = self.selection.select("filterPath");
2050 query = query.arg(
2051 "path",
2052 path.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
2053 );
2054 Artifacts {
2055 proc: self.proc.clone(),
2056 selection: query,
2057 graphql_client: self.graphql_client.clone(),
2058 }
2059 }
2060 pub fn filter_path_pattern(&self, pattern: impl Into<String>) -> Artifacts {
2062 let mut query = self.selection.select("filterPathPattern");
2063 query = query.arg("pattern", pattern.into());
2064 Artifacts {
2065 proc: self.proc.clone(),
2066 selection: query,
2067 graphql_client: self.graphql_client.clone(),
2068 }
2069 }
2070 pub fn filter_dimensions(&self, dimensions: Vec<impl Into<String>>) -> Artifacts {
2072 let mut query = self.selection.select("filterDimensions");
2073 query = query.arg(
2074 "dimensions",
2075 dimensions
2076 .into_iter()
2077 .map(|i| i.into())
2078 .collect::<Vec<String>>(),
2079 );
2080 Artifacts {
2081 proc: self.proc.clone(),
2082 selection: query,
2083 graphql_client: self.graphql_client.clone(),
2084 }
2085 }
2086 pub fn filter_dimension_keys(
2088 &self,
2089 dimension: impl Into<String>,
2090 keys: Vec<impl Into<String>>,
2091 ) -> Artifacts {
2092 let mut query = self.selection.select("filterDimensionKeys");
2093 query = query.arg("dimension", dimension.into());
2094 query = query.arg(
2095 "keys",
2096 keys.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
2097 );
2098 Artifacts {
2099 proc: self.proc.clone(),
2100 selection: query,
2101 graphql_client: self.graphql_client.clone(),
2102 }
2103 }
2104 pub fn filter_uri(&self, uri: impl Into<String>) -> Artifacts {
2111 let mut query = self.selection.select("filterUri");
2112 query = query.arg("uri", uri.into());
2113 Artifacts {
2114 proc: self.proc.clone(),
2115 selection: query,
2116 graphql_client: self.graphql_client.clone(),
2117 }
2118 }
2119 pub async fn dimensions(&self) -> Result<Vec<String>, DaggerError> {
2121 let query = self.selection.select("dimensions");
2122 query.execute(self.graphql_client.clone()).await
2123 }
2124 pub async fn dimension_keys(
2126 &self,
2127 dimension: impl Into<String>,
2128 ) -> Result<Vec<String>, DaggerError> {
2129 let mut query = self.selection.select("dimensionKeys");
2130 query = query.arg("dimension", dimension.into());
2131 query.execute(self.graphql_client.clone()).await
2132 }
2133 pub async fn dimension_items(
2135 &self,
2136 dimension: impl Into<String>,
2137 ) -> Result<Vec<Artifact>, DaggerError> {
2138 let mut query = self.selection.select("dimensionItems");
2139 query = query.arg("dimension", dimension.into());
2140 let query = query.select("id");
2141 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
2142 Ok(ids
2143 .into_iter()
2144 .map(|id| Artifact {
2145 proc: self.proc.clone(),
2146 selection: crate::querybuilder::query()
2147 .select("node")
2148 .arg("id", &id.0)
2149 .inline_fragment("Artifact"),
2150 graphql_client: self.graphql_client.clone(),
2151 })
2152 .collect())
2153 }
2154 pub async fn items(&self) -> Result<Vec<Artifact>, DaggerError> {
2156 let query = self.selection.select("items");
2157 let query = query.select("id");
2158 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
2159 Ok(ids
2160 .into_iter()
2161 .map(|id| Artifact {
2162 proc: self.proc.clone(),
2163 selection: crate::querybuilder::query()
2164 .select("node")
2165 .arg("id", &id.0)
2166 .inline_fragment("Artifact"),
2167 graphql_client: self.graphql_client.clone(),
2168 })
2169 .collect())
2170 }
2171 pub fn one(&self) -> Artifact {
2173 let query = self.selection.select("one");
2174 Artifact {
2175 proc: self.proc.clone(),
2176 selection: query,
2177 graphql_client: self.graphql_client.clone(),
2178 }
2179 }
2180 pub async fn uri(&self) -> Result<String, DaggerError> {
2182 let query = self.selection.select("uri");
2183 query.execute(self.graphql_client.clone()).await
2184 }
2185}
2186impl Node for Artifacts {
2187 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
2188 let query = self.selection.select("id");
2189 let graphql_client = self.graphql_client.clone();
2190 async move { query.execute(graphql_client).await }
2191 }
2192}
2193#[derive(Clone)]
2194pub struct CacheVolume {
2195 pub proc: Option<Arc<DaggerSessionProc>>,
2196 pub selection: Selection,
2197 pub graphql_client: DynGraphQLClient,
2198}
2199impl IntoID<Id> for CacheVolume {
2200 fn into_id(
2201 self,
2202 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
2203 Box::pin(async move { self.id().await })
2204 }
2205}
2206impl Loadable for CacheVolume {
2207 fn graphql_type() -> &'static str {
2208 "CacheVolume"
2209 }
2210 fn from_query(
2211 proc: Option<Arc<DaggerSessionProc>>,
2212 selection: Selection,
2213 graphql_client: DynGraphQLClient,
2214 ) -> Self {
2215 Self {
2216 proc,
2217 selection,
2218 graphql_client,
2219 }
2220 }
2221}
2222impl CacheVolume {
2223 pub async fn id(&self) -> Result<Id, DaggerError> {
2225 let query = self.selection.select("id");
2226 query.execute(self.graphql_client.clone()).await
2227 }
2228}
2229impl Node for CacheVolume {
2230 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
2231 let query = self.selection.select("id");
2232 let graphql_client = self.graphql_client.clone();
2233 async move { query.execute(graphql_client).await }
2234 }
2235}
2236#[derive(Clone)]
2237pub struct Changeset {
2238 pub proc: Option<Arc<DaggerSessionProc>>,
2239 pub selection: Selection,
2240 pub graphql_client: DynGraphQLClient,
2241}
2242#[derive(Builder, Debug, PartialEq)]
2243pub struct ChangesetFilterOpts<'a> {
2244 #[builder(setter(into, strip_option), default)]
2246 pub exclude: Option<Vec<&'a str>>,
2247 #[builder(setter(into, strip_option), default)]
2249 pub include: Option<Vec<&'a str>>,
2250}
2251#[derive(Builder, Debug, PartialEq)]
2252pub struct ChangesetWithChangesetOpts {
2253 #[builder(setter(into, strip_option), default)]
2255 pub on_conflict: Option<ChangesetMergeConflict>,
2256}
2257#[derive(Builder, Debug, PartialEq)]
2258pub struct ChangesetWithChangesetsOpts {
2259 #[builder(setter(into, strip_option), default)]
2261 pub on_conflict: Option<ChangesetsMergeConflict>,
2262}
2263impl IntoID<Id> for Changeset {
2264 fn into_id(
2265 self,
2266 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
2267 Box::pin(async move { self.id().await })
2268 }
2269}
2270impl Loadable for Changeset {
2271 fn graphql_type() -> &'static str {
2272 "Changeset"
2273 }
2274 fn from_query(
2275 proc: Option<Arc<DaggerSessionProc>>,
2276 selection: Selection,
2277 graphql_client: DynGraphQLClient,
2278 ) -> Self {
2279 Self {
2280 proc,
2281 selection,
2282 graphql_client,
2283 }
2284 }
2285}
2286impl Changeset {
2287 pub async fn id(&self) -> Result<Id, DaggerError> {
2289 let query = self.selection.select("id");
2290 query.execute(self.graphql_client.clone()).await
2291 }
2292 pub async fn sync(&self) -> Result<Changeset, DaggerError> {
2294 let query = self.selection.select("sync");
2295 let id: Id = query.execute(self.graphql_client.clone()).await?;
2296 Ok(Changeset {
2297 proc: self.proc.clone(),
2298 selection: query
2299 .root()
2300 .select("node")
2301 .arg("id", &id.0)
2302 .inline_fragment("Changeset"),
2303 graphql_client: self.graphql_client.clone(),
2304 })
2305 }
2306 pub fn filter(&self) -> Changeset {
2313 let query = self.selection.select("filter");
2314 Changeset {
2315 proc: self.proc.clone(),
2316 selection: query,
2317 graphql_client: self.graphql_client.clone(),
2318 }
2319 }
2320 pub fn filter_opts<'a>(&self, opts: ChangesetFilterOpts<'a>) -> Changeset {
2327 let mut query = self.selection.select("filter");
2328 if let Some(include) = opts.include {
2329 query = query.arg("include", include);
2330 }
2331 if let Some(exclude) = opts.exclude {
2332 query = query.arg("exclude", exclude);
2333 }
2334 Changeset {
2335 proc: self.proc.clone(),
2336 selection: query,
2337 graphql_client: self.graphql_client.clone(),
2338 }
2339 }
2340 pub fn layer(&self) -> Directory {
2342 let query = self.selection.select("layer");
2343 Directory {
2344 proc: self.proc.clone(),
2345 selection: query,
2346 graphql_client: self.graphql_client.clone(),
2347 }
2348 }
2349 pub fn as_patch(&self) -> File {
2351 let query = self.selection.select("asPatch");
2352 File {
2353 proc: self.proc.clone(),
2354 selection: query,
2355 graphql_client: self.graphql_client.clone(),
2356 }
2357 }
2358 pub async fn export(&self, path: impl Into<String>) -> Result<String, DaggerError> {
2364 let mut query = self.selection.select("export");
2365 query = query.arg("path", path.into());
2366 query.execute(self.graphql_client.clone()).await
2367 }
2368 pub async fn is_empty(&self) -> Result<bool, DaggerError> {
2370 let query = self.selection.select("isEmpty");
2371 query.execute(self.graphql_client.clone()).await
2372 }
2373 pub async fn added_paths(&self) -> Result<Vec<String>, DaggerError> {
2375 let query = self.selection.select("addedPaths");
2376 query.execute(self.graphql_client.clone()).await
2377 }
2378 pub async fn modified_paths(&self) -> Result<Vec<String>, DaggerError> {
2380 let query = self.selection.select("modifiedPaths");
2381 query.execute(self.graphql_client.clone()).await
2382 }
2383 pub async fn removed_paths(&self) -> Result<Vec<String>, DaggerError> {
2385 let query = self.selection.select("removedPaths");
2386 query.execute(self.graphql_client.clone()).await
2387 }
2388 pub async fn diff_stats(&self) -> Result<Vec<DiffStat>, DaggerError> {
2390 let query = self.selection.select("diffStats");
2391 let query = query.select("id");
2392 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
2393 Ok(ids
2394 .into_iter()
2395 .map(|id| DiffStat {
2396 proc: self.proc.clone(),
2397 selection: crate::querybuilder::query()
2398 .select("node")
2399 .arg("id", &id.0)
2400 .inline_fragment("DiffStat"),
2401 graphql_client: self.graphql_client.clone(),
2402 })
2403 .collect())
2404 }
2405 pub fn with_changeset(&self, changes: impl IntoID<Id>) -> Changeset {
2413 let mut query = self.selection.select("withChangeset");
2414 query = query.arg_lazy(
2415 "changes",
2416 Box::new(move || {
2417 let changes = changes.clone();
2418 Box::pin(async move { changes.into_id().await.unwrap().quote() })
2419 }),
2420 );
2421 Changeset {
2422 proc: self.proc.clone(),
2423 selection: query,
2424 graphql_client: self.graphql_client.clone(),
2425 }
2426 }
2427 pub fn with_changeset_opts(
2435 &self,
2436 changes: impl IntoID<Id>,
2437 opts: ChangesetWithChangesetOpts,
2438 ) -> Changeset {
2439 let mut query = self.selection.select("withChangeset");
2440 query = query.arg_lazy(
2441 "changes",
2442 Box::new(move || {
2443 let changes = changes.clone();
2444 Box::pin(async move { changes.into_id().await.unwrap().quote() })
2445 }),
2446 );
2447 if let Some(on_conflict) = opts.on_conflict {
2448 query = query.arg("onConflict", on_conflict);
2449 }
2450 Changeset {
2451 proc: self.proc.clone(),
2452 selection: query,
2453 graphql_client: self.graphql_client.clone(),
2454 }
2455 }
2456 pub fn with_changesets(&self, changes: Vec<Id>) -> Changeset {
2465 let mut query = self.selection.select("withChangesets");
2466 query = query.arg("changes", changes);
2467 Changeset {
2468 proc: self.proc.clone(),
2469 selection: query,
2470 graphql_client: self.graphql_client.clone(),
2471 }
2472 }
2473 pub fn with_changesets_opts(
2482 &self,
2483 changes: Vec<Id>,
2484 opts: ChangesetWithChangesetsOpts,
2485 ) -> Changeset {
2486 let mut query = self.selection.select("withChangesets");
2487 query = query.arg("changes", changes);
2488 if let Some(on_conflict) = opts.on_conflict {
2489 query = query.arg("onConflict", on_conflict);
2490 }
2491 Changeset {
2492 proc: self.proc.clone(),
2493 selection: query,
2494 graphql_client: self.graphql_client.clone(),
2495 }
2496 }
2497 pub fn before(&self) -> Directory {
2499 let query = self.selection.select("before");
2500 Directory {
2501 proc: self.proc.clone(),
2502 selection: query,
2503 graphql_client: self.graphql_client.clone(),
2504 }
2505 }
2506 pub fn after(&self) -> Directory {
2508 let query = self.selection.select("after");
2509 Directory {
2510 proc: self.proc.clone(),
2511 selection: query,
2512 graphql_client: self.graphql_client.clone(),
2513 }
2514 }
2515}
2516impl Exportable for Changeset {
2517 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
2518 let query = self.selection.select("id");
2519 let graphql_client = self.graphql_client.clone();
2520 async move { query.execute(graphql_client).await }
2521 }
2522 fn export(
2523 &self,
2524 path: impl Into<String>,
2525 ) -> impl core::future::Future<Output = Result<String, DaggerError>> + Send {
2526 let mut query = self.selection.select("export");
2527 query = query.arg("path", path.into());
2528 let graphql_client = self.graphql_client.clone();
2529 async move { query.execute(graphql_client).await }
2530 }
2531}
2532impl Node for Changeset {
2533 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
2534 let query = self.selection.select("id");
2535 let graphql_client = self.graphql_client.clone();
2536 async move { query.execute(graphql_client).await }
2537 }
2538}
2539impl Syncer for Changeset {
2540 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
2541 let query = self.selection.select("id");
2542 let graphql_client = self.graphql_client.clone();
2543 async move { query.execute(graphql_client).await }
2544 }
2545 fn sync(&self) -> impl core::future::Future<Output = Result<Self, DaggerError>> + Send {
2546 let query = self.selection.select("sync");
2547 let proc = self.proc.clone();
2548 let graphql_client = self.graphql_client.clone();
2549 async move {
2550 let id: Id = query.execute(graphql_client.clone()).await?;
2551 Ok(Self {
2552 proc,
2553 selection: query
2554 .root()
2555 .select("node")
2556 .arg("id", &id.0)
2557 .inline_fragment("Changeset"),
2558 graphql_client,
2559 })
2560 }
2561 }
2562}
2563#[derive(Clone)]
2564pub struct Check {
2565 pub proc: Option<Arc<DaggerSessionProc>>,
2566 pub selection: Selection,
2567 pub graphql_client: DynGraphQLClient,
2568}
2569impl IntoID<Id> for Check {
2570 fn into_id(
2571 self,
2572 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
2573 Box::pin(async move { self.id().await })
2574 }
2575}
2576impl Loadable for Check {
2577 fn graphql_type() -> &'static str {
2578 "Check"
2579 }
2580 fn from_query(
2581 proc: Option<Arc<DaggerSessionProc>>,
2582 selection: Selection,
2583 graphql_client: DynGraphQLClient,
2584 ) -> Self {
2585 Self {
2586 proc,
2587 selection,
2588 graphql_client,
2589 }
2590 }
2591}
2592impl Check {
2593 pub async fn id(&self) -> Result<Id, DaggerError> {
2595 let query = self.selection.select("id");
2596 query.execute(self.graphql_client.clone()).await
2597 }
2598 pub fn sync(&self) -> Check {
2600 let query = self.selection.select("sync");
2601 Check {
2602 proc: self.proc.clone(),
2603 selection: query,
2604 graphql_client: self.graphql_client.clone(),
2605 }
2606 }
2607 pub async fn pass(&self) -> Result<bool, DaggerError> {
2609 let query = self.selection.select("pass");
2610 query.execute(self.graphql_client.clone()).await
2611 }
2612 pub async fn error(&self) -> Result<Option<Error>, DaggerError> {
2614 let query = self.selection.select("error");
2615 let query = query.select("id");
2616 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
2617 Ok(id.map(|id| Error {
2618 proc: self.proc.clone(),
2619 selection: query
2620 .root()
2621 .select("node")
2622 .arg("id", &id.0)
2623 .inline_fragment("Error"),
2624 graphql_client: self.graphql_client.clone(),
2625 }))
2626 }
2627 pub async fn assertion(&self) -> Result<String, DaggerError> {
2629 let query = self.selection.select("assertion");
2630 query.execute(self.graphql_client.clone()).await
2631 }
2632 pub async fn report(&self) -> Result<Option<Directory>, DaggerError> {
2634 let query = self.selection.select("report");
2635 let query = query.select("id");
2636 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
2637 Ok(id.map(|id| Directory {
2638 proc: self.proc.clone(),
2639 selection: query
2640 .root()
2641 .select("node")
2642 .arg("id", &id.0)
2643 .inline_fragment("Directory"),
2644 graphql_client: self.graphql_client.clone(),
2645 }))
2646 }
2647}
2648impl Node for Check {
2649 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
2650 let query = self.selection.select("id");
2651 let graphql_client = self.graphql_client.clone();
2652 async move { query.execute(graphql_client).await }
2653 }
2654}
2655#[derive(Clone)]
2656pub struct ClientFilesyncMirror {
2657 pub proc: Option<Arc<DaggerSessionProc>>,
2658 pub selection: Selection,
2659 pub graphql_client: DynGraphQLClient,
2660}
2661impl IntoID<Id> for ClientFilesyncMirror {
2662 fn into_id(
2663 self,
2664 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
2665 Box::pin(async move { self.id().await })
2666 }
2667}
2668impl Loadable for ClientFilesyncMirror {
2669 fn graphql_type() -> &'static str {
2670 "ClientFilesyncMirror"
2671 }
2672 fn from_query(
2673 proc: Option<Arc<DaggerSessionProc>>,
2674 selection: Selection,
2675 graphql_client: DynGraphQLClient,
2676 ) -> Self {
2677 Self {
2678 proc,
2679 selection,
2680 graphql_client,
2681 }
2682 }
2683}
2684impl ClientFilesyncMirror {
2685 pub async fn id(&self) -> Result<Id, DaggerError> {
2687 let query = self.selection.select("id");
2688 query.execute(self.graphql_client.clone()).await
2689 }
2690}
2691impl Node for ClientFilesyncMirror {
2692 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
2693 let query = self.selection.select("id");
2694 let graphql_client = self.graphql_client.clone();
2695 async move { query.execute(graphql_client).await }
2696 }
2697}
2698#[derive(Clone)]
2699pub struct Cloud {
2700 pub proc: Option<Arc<DaggerSessionProc>>,
2701 pub selection: Selection,
2702 pub graphql_client: DynGraphQLClient,
2703}
2704impl IntoID<Id> for Cloud {
2705 fn into_id(
2706 self,
2707 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
2708 Box::pin(async move { self.id().await })
2709 }
2710}
2711impl Loadable for Cloud {
2712 fn graphql_type() -> &'static str {
2713 "Cloud"
2714 }
2715 fn from_query(
2716 proc: Option<Arc<DaggerSessionProc>>,
2717 selection: Selection,
2718 graphql_client: DynGraphQLClient,
2719 ) -> Self {
2720 Self {
2721 proc,
2722 selection,
2723 graphql_client,
2724 }
2725 }
2726}
2727impl Cloud {
2728 pub async fn id(&self) -> Result<Id, DaggerError> {
2730 let query = self.selection.select("id");
2731 query.execute(self.graphql_client.clone()).await
2732 }
2733 pub async fn trace_url(&self) -> Result<String, DaggerError> {
2735 let query = self.selection.select("traceURL");
2736 query.execute(self.graphql_client.clone()).await
2737 }
2738}
2739impl Node for Cloud {
2740 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
2741 let query = self.selection.select("id");
2742 let graphql_client = self.graphql_client.clone();
2743 async move { query.execute(graphql_client).await }
2744 }
2745}
2746#[derive(Clone)]
2747pub struct CollectionDelta {
2748 pub proc: Option<Arc<DaggerSessionProc>>,
2749 pub selection: Selection,
2750 pub graphql_client: DynGraphQLClient,
2751}
2752impl IntoID<Id> for CollectionDelta {
2753 fn into_id(
2754 self,
2755 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
2756 Box::pin(async move { self.id().await })
2757 }
2758}
2759impl Loadable for CollectionDelta {
2760 fn graphql_type() -> &'static str {
2761 "CollectionDelta"
2762 }
2763 fn from_query(
2764 proc: Option<Arc<DaggerSessionProc>>,
2765 selection: Selection,
2766 graphql_client: DynGraphQLClient,
2767 ) -> Self {
2768 Self {
2769 proc,
2770 selection,
2771 graphql_client,
2772 }
2773 }
2774}
2775impl CollectionDelta {
2776 pub async fn id(&self) -> Result<Id, DaggerError> {
2778 let query = self.selection.select("id");
2779 query.execute(self.graphql_client.clone()).await
2780 }
2781 pub async fn added_keys(&self) -> Result<Vec<String>, DaggerError> {
2783 let query = self.selection.select("addedKeys");
2784 query.execute(self.graphql_client.clone()).await
2785 }
2786 pub async fn removed_keys(&self) -> Result<Vec<String>, DaggerError> {
2788 let query = self.selection.select("removedKeys");
2789 query.execute(self.graphql_client.clone()).await
2790 }
2791}
2792impl Node for CollectionDelta {
2793 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
2794 let query = self.selection.select("id");
2795 let graphql_client = self.graphql_client.clone();
2796 async move { query.execute(graphql_client).await }
2797 }
2798}
2799#[derive(Clone)]
2800pub struct CollectionTypeDef {
2801 pub proc: Option<Arc<DaggerSessionProc>>,
2802 pub selection: Selection,
2803 pub graphql_client: DynGraphQLClient,
2804}
2805impl IntoID<Id> for CollectionTypeDef {
2806 fn into_id(
2807 self,
2808 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
2809 Box::pin(async move { self.id().await })
2810 }
2811}
2812impl Loadable for CollectionTypeDef {
2813 fn graphql_type() -> &'static str {
2814 "CollectionTypeDef"
2815 }
2816 fn from_query(
2817 proc: Option<Arc<DaggerSessionProc>>,
2818 selection: Selection,
2819 graphql_client: DynGraphQLClient,
2820 ) -> Self {
2821 Self {
2822 proc,
2823 selection,
2824 graphql_client,
2825 }
2826 }
2827}
2828impl CollectionTypeDef {
2829 pub async fn id(&self) -> Result<Id, DaggerError> {
2831 let query = self.selection.select("id");
2832 query.execute(self.graphql_client.clone()).await
2833 }
2834 pub fn key_type(&self) -> TypeDef {
2836 let query = self.selection.select("keyType");
2837 TypeDef {
2838 proc: self.proc.clone(),
2839 selection: query,
2840 graphql_client: self.graphql_client.clone(),
2841 }
2842 }
2843 pub fn value_type(&self) -> TypeDef {
2845 let query = self.selection.select("valueType");
2846 TypeDef {
2847 proc: self.proc.clone(),
2848 selection: query,
2849 graphql_client: self.graphql_client.clone(),
2850 }
2851 }
2852 pub async fn batch_type(&self) -> Result<Option<TypeDef>, DaggerError> {
2854 let query = self.selection.select("batchType");
2855 let query = query.select("id");
2856 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
2857 Ok(id.map(|id| TypeDef {
2858 proc: self.proc.clone(),
2859 selection: query
2860 .root()
2861 .select("node")
2862 .arg("id", &id.0)
2863 .inline_fragment("TypeDef"),
2864 graphql_client: self.graphql_client.clone(),
2865 }))
2866 }
2867}
2868impl Node for CollectionTypeDef {
2869 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
2870 let query = self.selection.select("id");
2871 let graphql_client = self.graphql_client.clone();
2872 async move { query.execute(graphql_client).await }
2873 }
2874}
2875#[derive(Clone)]
2876pub struct Command {
2877 pub proc: Option<Arc<DaggerSessionProc>>,
2878 pub selection: Selection,
2879 pub graphql_client: DynGraphQLClient,
2880}
2881impl IntoID<Id> for Command {
2882 fn into_id(
2883 self,
2884 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
2885 Box::pin(async move { self.id().await })
2886 }
2887}
2888impl Loadable for Command {
2889 fn graphql_type() -> &'static str {
2890 "Command"
2891 }
2892 fn from_query(
2893 proc: Option<Arc<DaggerSessionProc>>,
2894 selection: Selection,
2895 graphql_client: DynGraphQLClient,
2896 ) -> Self {
2897 Self {
2898 proc,
2899 selection,
2900 graphql_client,
2901 }
2902 }
2903}
2904impl Command {
2905 pub async fn id(&self) -> Result<Id, DaggerError> {
2907 let query = self.selection.select("id");
2908 query.execute(self.graphql_client.clone()).await
2909 }
2910 pub async fn args(&self) -> Result<Vec<String>, DaggerError> {
2912 let query = self.selection.select("args");
2913 query.execute(self.graphql_client.clone()).await
2914 }
2915 pub async fn env(&self) -> Result<Vec<EnvVariable>, DaggerError> {
2917 let query = self.selection.select("env");
2918 let query = query.select("id");
2919 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
2920 Ok(ids
2921 .into_iter()
2922 .map(|id| EnvVariable {
2923 proc: self.proc.clone(),
2924 selection: crate::querybuilder::query()
2925 .select("node")
2926 .arg("id", &id.0)
2927 .inline_fragment("EnvVariable"),
2928 graphql_client: self.graphql_client.clone(),
2929 })
2930 .collect())
2931 }
2932 pub async fn workdir(&self) -> Result<String, DaggerError> {
2934 let query = self.selection.select("workdir");
2935 query.execute(self.graphql_client.clone()).await
2936 }
2937 pub async fn privileged_nesting(&self) -> Result<bool, DaggerError> {
2939 let query = self.selection.select("privilegedNesting");
2940 query.execute(self.graphql_client.clone()).await
2941 }
2942 pub async fn insecure_root_capabilities(&self) -> Result<bool, DaggerError> {
2944 let query = self.selection.select("insecureRootCapabilities");
2945 query.execute(self.graphql_client.clone()).await
2946 }
2947}
2948impl Node for Command {
2949 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
2950 let query = self.selection.select("id");
2951 let graphql_client = self.graphql_client.clone();
2952 async move { query.execute(graphql_client).await }
2953 }
2954}
2955#[derive(Clone)]
2956pub struct Container {
2957 pub proc: Option<Arc<DaggerSessionProc>>,
2958 pub selection: Selection,
2959 pub graphql_client: DynGraphQLClient,
2960}
2961#[derive(Builder, Debug, PartialEq)]
2962pub struct ContainerFromOpts<'a> {
2963 #[builder(setter(into, strip_option), default)]
2965 pub insecure_skip_tls_verify: Option<bool>,
2966 #[builder(setter(into, strip_option), default)]
2968 pub no_lock: Option<bool>,
2969 #[builder(setter(into, strip_option), default)]
2972 pub protocol: Option<RegistryProtocol>,
2973 #[builder(setter(into, strip_option), default)]
2976 pub registry_service: Option<Id>,
2977 #[builder(setter(into, strip_option), default)]
2979 pub version: Option<&'a str>,
2980}
2981#[derive(Builder, Debug, PartialEq)]
2982pub struct ContainerDirectoryOpts {
2983 #[builder(setter(into, strip_option), default)]
2985 pub expand: Option<bool>,
2986}
2987#[derive(Builder, Debug, PartialEq)]
2988pub struct ContainerFileOpts {
2989 #[builder(setter(into, strip_option), default)]
2991 pub expand: Option<bool>,
2992}
2993#[derive(Builder, Debug, PartialEq)]
2994pub struct ContainerWithWorkdirOpts {
2995 #[builder(setter(into, strip_option), default)]
2997 pub expand: Option<bool>,
2998}
2999#[derive(Builder, Debug, PartialEq)]
3000pub struct ContainerWithEnvVariableOpts {
3001 #[builder(setter(into, strip_option), default)]
3003 pub expand: Option<bool>,
3004}
3005#[derive(Builder, Debug, PartialEq)]
3006pub struct ContainerWithDockerHealthcheckOpts<'a> {
3007 #[builder(setter(into, strip_option), default)]
3009 pub interval: Option<&'a str>,
3010 #[builder(setter(into, strip_option), default)]
3012 pub retries: Option<isize>,
3013 #[builder(setter(into, strip_option), default)]
3015 pub shell: Option<bool>,
3016 #[builder(setter(into, strip_option), default)]
3018 pub start_interval: Option<&'a str>,
3019 #[builder(setter(into, strip_option), default)]
3021 pub start_period: Option<&'a str>,
3022 #[builder(setter(into, strip_option), default)]
3024 pub timeout: Option<&'a str>,
3025}
3026#[derive(Builder, Debug, PartialEq)]
3027pub struct ContainerWithEntrypointOpts {
3028 #[builder(setter(into, strip_option), default)]
3030 pub keep_default_args: Option<bool>,
3031}
3032#[derive(Builder, Debug, PartialEq)]
3033pub struct ContainerWithoutEntrypointOpts {
3034 #[builder(setter(into, strip_option), default)]
3036 pub keep_default_args: Option<bool>,
3037}
3038#[derive(Builder, Debug, PartialEq)]
3039pub struct ContainerWithMountedDirectoryOpts<'a> {
3040 #[builder(setter(into, strip_option), default)]
3042 pub expand: Option<bool>,
3043 #[builder(setter(into, strip_option), default)]
3045 pub inherit_owner: Option<bool>,
3046 #[builder(setter(into, strip_option), default)]
3050 pub owner: Option<&'a str>,
3051 #[builder(setter(into, strip_option), default)]
3053 pub read_only: Option<bool>,
3054}
3055#[derive(Builder, Debug, PartialEq)]
3056pub struct ContainerWithMountedFileOpts<'a> {
3057 #[builder(setter(into, strip_option), default)]
3059 pub expand: Option<bool>,
3060 #[builder(setter(into, strip_option), default)]
3062 pub inherit_owner: Option<bool>,
3063 #[builder(setter(into, strip_option), default)]
3067 pub owner: Option<&'a str>,
3068 #[builder(setter(into, strip_option), default)]
3070 pub read_only: Option<bool>,
3071}
3072#[derive(Builder, Debug, PartialEq)]
3073pub struct ContainerWithMountedTempOpts {
3074 #[builder(setter(into, strip_option), default)]
3076 pub expand: Option<bool>,
3077 #[builder(setter(into, strip_option), default)]
3079 pub size: Option<isize>,
3080}
3081#[derive(Builder, Debug, PartialEq)]
3082pub struct ContainerWithMountedCacheOpts<'a> {
3083 #[builder(setter(into, strip_option), default)]
3085 pub expand: Option<bool>,
3086 #[builder(setter(into, strip_option), default)]
3088 pub inherit_owner: Option<bool>,
3089 #[builder(setter(into, strip_option), default)]
3094 pub owner: Option<&'a str>,
3095 #[builder(setter(into, strip_option), default)]
3097 pub sharing: Option<CacheSharingMode>,
3098 #[builder(setter(into, strip_option), default)]
3100 pub source: Option<Id>,
3101}
3102#[derive(Builder, Debug, PartialEq)]
3103pub struct ContainerWithMountedVolumeOpts {
3104 #[builder(setter(into, strip_option), default)]
3106 pub expand: Option<bool>,
3107 #[builder(setter(into, strip_option), default)]
3109 pub read_only: Option<bool>,
3110}
3111#[derive(Builder, Debug, PartialEq)]
3112pub struct ContainerWithMountedSecretOpts<'a> {
3113 #[builder(setter(into, strip_option), default)]
3115 pub expand: Option<bool>,
3116 #[builder(setter(into, strip_option), default)]
3118 pub inherit_owner: Option<bool>,
3119 #[builder(setter(into, strip_option), default)]
3122 pub mode: Option<isize>,
3123 #[builder(setter(into, strip_option), default)]
3127 pub owner: Option<&'a str>,
3128}
3129#[derive(Builder, Debug, PartialEq)]
3130pub struct ContainerWithUnixSocketOpts<'a> {
3131 #[builder(setter(into, strip_option), default)]
3133 pub expand: Option<bool>,
3134 #[builder(setter(into, strip_option), default)]
3136 pub inherit_owner: Option<bool>,
3137 #[builder(setter(into, strip_option), default)]
3141 pub owner: Option<&'a str>,
3142}
3143#[derive(Builder, Debug, PartialEq)]
3144pub struct ContainerWithoutUnixSocketOpts {
3145 #[builder(setter(into, strip_option), default)]
3147 pub expand: Option<bool>,
3148}
3149#[derive(Builder, Debug, PartialEq)]
3150pub struct ContainerWithoutMountOpts {
3151 #[builder(setter(into, strip_option), default)]
3153 pub expand: Option<bool>,
3154}
3155#[derive(Builder, Debug, PartialEq)]
3156pub struct ContainerWithFileOpts<'a> {
3157 #[builder(setter(into, strip_option), default)]
3159 pub expand: Option<bool>,
3160 #[builder(setter(into, strip_option), default)]
3162 pub inherit_owner: Option<bool>,
3163 #[builder(setter(into, strip_option), default)]
3167 pub owner: Option<&'a str>,
3168 #[builder(setter(into, strip_option), default)]
3170 pub permissions: Option<isize>,
3171}
3172#[derive(Builder, Debug, PartialEq)]
3173pub struct ContainerWithoutFileOpts {
3174 #[builder(setter(into, strip_option), default)]
3176 pub expand: Option<bool>,
3177}
3178#[derive(Builder, Debug, PartialEq)]
3179pub struct ContainerWithoutFilesOpts {
3180 #[builder(setter(into, strip_option), default)]
3182 pub expand: Option<bool>,
3183}
3184#[derive(Builder, Debug, PartialEq)]
3185pub struct ContainerWithFilesOpts<'a> {
3186 #[builder(setter(into, strip_option), default)]
3188 pub expand: Option<bool>,
3189 #[builder(setter(into, strip_option), default)]
3191 pub inherit_owner: Option<bool>,
3192 #[builder(setter(into, strip_option), default)]
3196 pub owner: Option<&'a str>,
3197 #[builder(setter(into, strip_option), default)]
3199 pub permissions: Option<isize>,
3200}
3201#[derive(Builder, Debug, PartialEq)]
3202pub struct ContainerWithNewFileOpts<'a> {
3203 #[builder(setter(into, strip_option), default)]
3205 pub expand: Option<bool>,
3206 #[builder(setter(into, strip_option), default)]
3208 pub inherit_owner: Option<bool>,
3209 #[builder(setter(into, strip_option), default)]
3213 pub owner: Option<&'a str>,
3214 #[builder(setter(into, strip_option), default)]
3216 pub permissions: Option<isize>,
3217}
3218#[derive(Builder, Debug, PartialEq)]
3219pub struct ContainerWithDirectoryOpts<'a> {
3220 #[builder(setter(into, strip_option), default)]
3222 pub exclude: Option<Vec<&'a str>>,
3223 #[builder(setter(into, strip_option), default)]
3225 pub expand: Option<bool>,
3226 #[builder(setter(into, strip_option), default)]
3228 pub gitignore: Option<bool>,
3229 #[builder(setter(into, strip_option), default)]
3231 pub include: Option<Vec<&'a str>>,
3232 #[builder(setter(into, strip_option), default)]
3234 pub inherit_owner: Option<bool>,
3235 #[builder(setter(into, strip_option), default)]
3239 pub owner: Option<&'a str>,
3240 #[builder(setter(into, strip_option), default)]
3241 pub permissions: Option<isize>,
3242}
3243#[derive(Builder, Debug, PartialEq)]
3244pub struct ContainerWithoutDirectoryOpts {
3245 #[builder(setter(into, strip_option), default)]
3247 pub expand: Option<bool>,
3248}
3249#[derive(Builder, Debug, PartialEq)]
3250pub struct ContainerExistsOpts {
3251 #[builder(setter(into, strip_option), default)]
3253 pub do_not_follow_symlinks: Option<bool>,
3254 #[builder(setter(into, strip_option), default)]
3256 pub expand: Option<bool>,
3257 #[builder(setter(into, strip_option), default)]
3259 pub expected_type: Option<ExistsType>,
3260}
3261#[derive(Builder, Debug, PartialEq)]
3262pub struct ContainerStatOpts {
3263 #[builder(setter(into, strip_option), default)]
3265 pub do_not_follow_symlinks: Option<bool>,
3266}
3267#[derive(Builder, Debug, PartialEq)]
3268pub struct ContainerWithExecOpts<'a> {
3269 #[builder(setter(into, strip_option), default)]
3273 pub dagger_in_dagger_new_session: Option<bool>,
3274 #[builder(setter(into, strip_option), default)]
3276 pub disable_dagger_in_dagger: Option<bool>,
3277 #[builder(setter(into, strip_option), default)]
3279 pub expand: Option<bool>,
3280 #[builder(setter(into, strip_option), default)]
3282 pub expect: Option<ReturnType>,
3283 #[builder(setter(into, strip_option), default)]
3284 pub experimental_privileged_nesting: Option<bool>,
3285 #[builder(setter(into, strip_option), default)]
3288 pub insecure_root_capabilities: Option<bool>,
3289 #[builder(setter(into, strip_option), default)]
3292 pub no_init: Option<bool>,
3293 #[builder(setter(into, strip_option), default)]
3295 pub redirect_stderr: Option<&'a str>,
3296 #[builder(setter(into, strip_option), default)]
3298 pub redirect_stdin: Option<&'a str>,
3299 #[builder(setter(into, strip_option), default)]
3301 pub redirect_stdout: Option<&'a str>,
3302 #[builder(setter(into, strip_option), default)]
3304 pub stdin: Option<&'a str>,
3305 #[builder(setter(into, strip_option), default)]
3307 pub use_entrypoint: Option<bool>,
3308}
3309#[derive(Builder, Debug, PartialEq)]
3310pub struct ContainerWithSymlinkOpts {
3311 #[builder(setter(into, strip_option), default)]
3313 pub expand: Option<bool>,
3314}
3315#[derive(Builder, Debug, PartialEq)]
3316pub struct ContainerPublishOpts {
3317 #[builder(setter(into, strip_option), default)]
3320 pub forced_compression: Option<ImageLayerCompression>,
3321 #[builder(setter(into, strip_option), default)]
3323 pub insecure_skip_tls_verify: Option<bool>,
3324 #[builder(setter(into, strip_option), default)]
3327 pub media_types: Option<ImageMediaTypes>,
3328 #[builder(setter(into, strip_option), default)]
3331 pub platform_variants: Option<Vec<Id>>,
3332 #[builder(setter(into, strip_option), default)]
3335 pub protocol: Option<RegistryProtocol>,
3336 #[builder(setter(into, strip_option), default)]
3339 pub registry_service: Option<Id>,
3340}
3341#[derive(Builder, Debug, PartialEq)]
3342pub struct ContainerExportOpts {
3343 #[builder(setter(into, strip_option), default)]
3345 pub expand: Option<bool>,
3346 #[builder(setter(into, strip_option), default)]
3349 pub forced_compression: Option<ImageLayerCompression>,
3350 #[builder(setter(into, strip_option), default)]
3353 pub media_types: Option<ImageMediaTypes>,
3354 #[builder(setter(into, strip_option), default)]
3357 pub platform_variants: Option<Vec<Id>>,
3358}
3359#[derive(Builder, Debug, PartialEq)]
3360pub struct ContainerExportImageOpts {
3361 #[builder(setter(into, strip_option), default)]
3364 pub forced_compression: Option<ImageLayerCompression>,
3365 #[builder(setter(into, strip_option), default)]
3368 pub media_types: Option<ImageMediaTypes>,
3369 #[builder(setter(into, strip_option), default)]
3372 pub platform_variants: Option<Vec<Id>>,
3373}
3374#[derive(Builder, Debug, PartialEq)]
3375pub struct ContainerAsTarballOpts {
3376 #[builder(setter(into, strip_option), default)]
3379 pub forced_compression: Option<ImageLayerCompression>,
3380 #[builder(setter(into, strip_option), default)]
3383 pub media_types: Option<ImageMediaTypes>,
3384 #[builder(setter(into, strip_option), default)]
3387 pub platform_variants: Option<Vec<Id>>,
3388}
3389#[derive(Builder, Debug, PartialEq)]
3390pub struct ContainerImportOpts<'a> {
3391 #[builder(setter(into, strip_option), default)]
3393 pub tag: Option<&'a str>,
3394}
3395#[derive(Builder, Debug, PartialEq)]
3396pub struct ContainerManifestOpts {
3397 #[builder(setter(into, strip_option), default)]
3400 pub forced_compression: Option<ImageLayerCompression>,
3401 #[builder(setter(into, strip_option), default)]
3403 pub media_types: Option<ImageMediaTypes>,
3404}
3405#[derive(Builder, Debug, PartialEq)]
3406pub struct ContainerLayerOpts {
3407 #[builder(setter(into, strip_option), default)]
3410 pub forced_compression: Option<ImageLayerCompression>,
3411 #[builder(setter(into, strip_option), default)]
3413 pub media_types: Option<ImageMediaTypes>,
3414}
3415#[derive(Builder, Debug, PartialEq)]
3416pub struct ContainerWithExposedPortOpts<'a> {
3417 #[builder(setter(into, strip_option), default)]
3419 pub description: Option<&'a str>,
3420 #[builder(setter(into, strip_option), default)]
3422 pub experimental_skip_healthcheck: Option<bool>,
3423 #[builder(setter(into, strip_option), default)]
3425 pub protocol: Option<NetworkProtocol>,
3426}
3427#[derive(Builder, Debug, PartialEq)]
3428pub struct ContainerWithoutExposedPortOpts {
3429 #[builder(setter(into, strip_option), default)]
3431 pub protocol: Option<NetworkProtocol>,
3432}
3433#[derive(Builder, Debug, PartialEq)]
3434pub struct ContainerWithDefaultTerminalCmdOpts {
3435 #[builder(setter(into, strip_option), default)]
3437 pub disable_dagger_in_dagger: Option<bool>,
3438 #[builder(setter(into, strip_option), default)]
3439 pub experimental_privileged_nesting: Option<bool>,
3440 #[builder(setter(into, strip_option), default)]
3442 pub insecure_root_capabilities: Option<bool>,
3443}
3444#[derive(Builder, Debug, PartialEq)]
3445pub struct ContainerWithShellOpts<'a> {
3446 #[builder(setter(into, strip_option), default)]
3448 pub batch: Option<Vec<&'a str>>,
3449 #[builder(setter(into, strip_option), default)]
3451 pub disable_dagger_in_dagger: Option<bool>,
3452 #[builder(setter(into, strip_option), default)]
3453 pub experimental_privileged_nesting: Option<bool>,
3454 #[builder(setter(into, strip_option), default)]
3456 pub insecure_root_capabilities: Option<bool>,
3457}
3458#[derive(Builder, Debug, PartialEq)]
3459pub struct ContainerShellOpts {
3460 #[builder(setter(into, strip_option), default)]
3462 pub batch: Option<bool>,
3463}
3464#[derive(Builder, Debug, PartialEq)]
3465pub struct ContainerWithRunOpts<'a> {
3466 #[builder(setter(into, strip_option), default)]
3468 pub disable_dagger_in_dagger: Option<bool>,
3469 #[builder(setter(into, strip_option), default)]
3470 pub experimental_privileged_nesting: Option<bool>,
3471 #[builder(setter(into, strip_option), default)]
3473 pub insecure_root_capabilities: Option<bool>,
3474 #[builder(setter(into, strip_option), default)]
3476 pub shell: Option<Vec<&'a str>>,
3477}
3478#[derive(Builder, Debug, PartialEq)]
3479pub struct ContainerTerminalOpts<'a> {
3480 #[builder(setter(into, strip_option), default)]
3482 pub cmd: Option<Vec<&'a str>>,
3483 #[builder(setter(into, strip_option), default)]
3485 pub disable_dagger_in_dagger: Option<bool>,
3486 #[builder(setter(into, strip_option), default)]
3487 pub experimental_privileged_nesting: Option<bool>,
3488 #[builder(setter(into, strip_option), default)]
3490 pub insecure_root_capabilities: Option<bool>,
3491}
3492#[derive(Builder, Debug, PartialEq)]
3493pub struct ContainerAsServiceOpts<'a> {
3494 #[builder(setter(into, strip_option), default)]
3497 pub args: Option<Vec<&'a str>>,
3498 #[builder(setter(into, strip_option), default)]
3502 pub dagger_in_dagger_new_session: Option<bool>,
3503 #[builder(setter(into, strip_option), default)]
3505 pub disable_dagger_in_dagger: Option<bool>,
3506 #[builder(setter(into, strip_option), default)]
3508 pub expand: Option<bool>,
3509 #[builder(setter(into, strip_option), default)]
3510 pub experimental_privileged_nesting: Option<bool>,
3511 #[builder(setter(into, strip_option), default)]
3513 pub insecure_root_capabilities: Option<bool>,
3514 #[builder(setter(into, strip_option), default)]
3517 pub no_init: Option<bool>,
3518 #[builder(setter(into, strip_option), default)]
3520 pub use_entrypoint: Option<bool>,
3521}
3522#[derive(Builder, Debug, PartialEq)]
3523pub struct ContainerUpOpts<'a> {
3524 #[builder(setter(into, strip_option), default)]
3527 pub args: Option<Vec<&'a str>>,
3528 #[builder(setter(into, strip_option), default)]
3532 pub dagger_in_dagger_new_session: Option<bool>,
3533 #[builder(setter(into, strip_option), default)]
3535 pub disable_dagger_in_dagger: Option<bool>,
3536 #[builder(setter(into, strip_option), default)]
3538 pub expand: Option<bool>,
3539 #[builder(setter(into, strip_option), default)]
3540 pub experimental_privileged_nesting: Option<bool>,
3541 #[builder(setter(into, strip_option), default)]
3543 pub insecure_root_capabilities: Option<bool>,
3544 #[builder(setter(into, strip_option), default)]
3547 pub no_init: Option<bool>,
3548 #[builder(setter(into, strip_option), default)]
3551 pub ports: Option<Vec<PortForward>>,
3552 #[builder(setter(into, strip_option), default)]
3554 pub random: Option<bool>,
3555 #[builder(setter(into, strip_option), default)]
3557 pub use_entrypoint: Option<bool>,
3558}
3559impl IntoID<Id> for Container {
3560 fn into_id(
3561 self,
3562 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
3563 Box::pin(async move { self.id().await })
3564 }
3565}
3566impl Loadable for Container {
3567 fn graphql_type() -> &'static str {
3568 "Container"
3569 }
3570 fn from_query(
3571 proc: Option<Arc<DaggerSessionProc>>,
3572 selection: Selection,
3573 graphql_client: DynGraphQLClient,
3574 ) -> Self {
3575 Self {
3576 proc,
3577 selection,
3578 graphql_client,
3579 }
3580 }
3581}
3582impl Container {
3583 pub async fn id(&self) -> Result<Id, DaggerError> {
3585 let query = self.selection.select("id");
3586 query.execute(self.graphql_client.clone()).await
3587 }
3588 pub async fn sync(&self) -> Result<Container, DaggerError> {
3591 let query = self.selection.select("sync");
3592 let id: Id = query.execute(self.graphql_client.clone()).await?;
3593 Ok(Container {
3594 proc: self.proc.clone(),
3595 selection: query
3596 .root()
3597 .select("node")
3598 .arg("id", &id.0)
3599 .inline_fragment("Container"),
3600 graphql_client: self.graphql_client.clone(),
3601 })
3602 }
3603 pub fn from(&self, address: impl Into<String>) -> Container {
3612 let mut query = self.selection.select("from");
3613 query = query.arg("address", address.into());
3614 Container {
3615 proc: self.proc.clone(),
3616 selection: query,
3617 graphql_client: self.graphql_client.clone(),
3618 }
3619 }
3620 pub fn from_opts<'a>(
3629 &self,
3630 address: impl Into<String>,
3631 opts: ContainerFromOpts<'a>,
3632 ) -> Container {
3633 let mut query = self.selection.select("from");
3634 query = query.arg("address", address.into());
3635 if let Some(version) = opts.version {
3636 query = query.arg("version", version);
3637 }
3638 if let Some(registry_service) = opts.registry_service {
3639 query = query.arg("registryService", registry_service);
3640 }
3641 if let Some(protocol) = opts.protocol {
3642 query = query.arg("protocol", protocol);
3643 }
3644 if let Some(insecure_skip_tls_verify) = opts.insecure_skip_tls_verify {
3645 query = query.arg("insecureSkipTLSVerify", insecure_skip_tls_verify);
3646 }
3647 if let Some(no_lock) = opts.no_lock {
3648 query = query.arg("noLock", no_lock);
3649 }
3650 Container {
3651 proc: self.proc.clone(),
3652 selection: query,
3653 graphql_client: self.graphql_client.clone(),
3654 }
3655 }
3656 pub fn rootfs(&self) -> Directory {
3658 let query = self.selection.select("rootfs");
3659 Directory {
3660 proc: self.proc.clone(),
3661 selection: query,
3662 graphql_client: self.graphql_client.clone(),
3663 }
3664 }
3665 pub fn with_rootfs(&self, directory: impl IntoID<Id>) -> Container {
3671 let mut query = self.selection.select("withRootfs");
3672 query = query.arg_lazy(
3673 "directory",
3674 Box::new(move || {
3675 let directory = directory.clone();
3676 Box::pin(async move { directory.into_id().await.unwrap().quote() })
3677 }),
3678 );
3679 Container {
3680 proc: self.proc.clone(),
3681 selection: query,
3682 graphql_client: self.graphql_client.clone(),
3683 }
3684 }
3685 pub fn directory(&self, path: impl Into<String>) -> Directory {
3693 let mut query = self.selection.select("directory");
3694 query = query.arg("path", path.into());
3695 Directory {
3696 proc: self.proc.clone(),
3697 selection: query,
3698 graphql_client: self.graphql_client.clone(),
3699 }
3700 }
3701 pub fn directory_opts(
3709 &self,
3710 path: impl Into<String>,
3711 opts: ContainerDirectoryOpts,
3712 ) -> Directory {
3713 let mut query = self.selection.select("directory");
3714 query = query.arg("path", path.into());
3715 if let Some(expand) = opts.expand {
3716 query = query.arg("expand", expand);
3717 }
3718 Directory {
3719 proc: self.proc.clone(),
3720 selection: query,
3721 graphql_client: self.graphql_client.clone(),
3722 }
3723 }
3724 pub fn file(&self, path: impl Into<String>) -> File {
3732 let mut query = self.selection.select("file");
3733 query = query.arg("path", path.into());
3734 File {
3735 proc: self.proc.clone(),
3736 selection: query,
3737 graphql_client: self.graphql_client.clone(),
3738 }
3739 }
3740 pub fn file_opts(&self, path: impl Into<String>, opts: ContainerFileOpts) -> File {
3748 let mut query = self.selection.select("file");
3749 query = query.arg("path", path.into());
3750 if let Some(expand) = opts.expand {
3751 query = query.arg("expand", expand);
3752 }
3753 File {
3754 proc: self.proc.clone(),
3755 selection: query,
3756 graphql_client: self.graphql_client.clone(),
3757 }
3758 }
3759 pub async fn user(&self) -> Result<String, DaggerError> {
3761 let query = self.selection.select("user");
3762 query.execute(self.graphql_client.clone()).await
3763 }
3764 pub fn with_user(&self, name: impl Into<String>) -> Container {
3770 let mut query = self.selection.select("withUser");
3771 query = query.arg("name", name.into());
3772 Container {
3773 proc: self.proc.clone(),
3774 selection: query,
3775 graphql_client: self.graphql_client.clone(),
3776 }
3777 }
3778 pub fn without_user(&self) -> Container {
3781 let query = self.selection.select("withoutUser");
3782 Container {
3783 proc: self.proc.clone(),
3784 selection: query,
3785 graphql_client: self.graphql_client.clone(),
3786 }
3787 }
3788 pub async fn workdir(&self) -> Result<String, DaggerError> {
3790 let query = self.selection.select("workdir");
3791 query.execute(self.graphql_client.clone()).await
3792 }
3793 pub fn with_workdir(&self, path: impl Into<String>) -> Container {
3800 let mut query = self.selection.select("withWorkdir");
3801 query = query.arg("path", path.into());
3802 Container {
3803 proc: self.proc.clone(),
3804 selection: query,
3805 graphql_client: self.graphql_client.clone(),
3806 }
3807 }
3808 pub fn with_workdir_opts(
3815 &self,
3816 path: impl Into<String>,
3817 opts: ContainerWithWorkdirOpts,
3818 ) -> Container {
3819 let mut query = self.selection.select("withWorkdir");
3820 query = query.arg("path", path.into());
3821 if let Some(expand) = opts.expand {
3822 query = query.arg("expand", expand);
3823 }
3824 Container {
3825 proc: self.proc.clone(),
3826 selection: query,
3827 graphql_client: self.graphql_client.clone(),
3828 }
3829 }
3830 pub fn without_workdir(&self) -> Container {
3833 let query = self.selection.select("withoutWorkdir");
3834 Container {
3835 proc: self.proc.clone(),
3836 selection: query,
3837 graphql_client: self.graphql_client.clone(),
3838 }
3839 }
3840 pub async fn env_variables(&self) -> Result<Vec<EnvVariable>, DaggerError> {
3842 let query = self.selection.select("envVariables");
3843 let query = query.select("id");
3844 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
3845 Ok(ids
3846 .into_iter()
3847 .map(|id| EnvVariable {
3848 proc: self.proc.clone(),
3849 selection: crate::querybuilder::query()
3850 .select("node")
3851 .arg("id", &id.0)
3852 .inline_fragment("EnvVariable"),
3853 graphql_client: self.graphql_client.clone(),
3854 })
3855 .collect())
3856 }
3857 pub async fn env_variable(&self, name: impl Into<String>) -> Result<String, DaggerError> {
3863 let mut query = self.selection.select("envVariable");
3864 query = query.arg("name", name.into());
3865 query.execute(self.graphql_client.clone()).await
3866 }
3867 pub fn with_env_variable(
3875 &self,
3876 name: impl Into<String>,
3877 value: impl Into<String>,
3878 ) -> Container {
3879 let mut query = self.selection.select("withEnvVariable");
3880 query = query.arg("name", name.into());
3881 query = query.arg("value", value.into());
3882 Container {
3883 proc: self.proc.clone(),
3884 selection: query,
3885 graphql_client: self.graphql_client.clone(),
3886 }
3887 }
3888 pub fn with_env_variable_opts(
3896 &self,
3897 name: impl Into<String>,
3898 value: impl Into<String>,
3899 opts: ContainerWithEnvVariableOpts,
3900 ) -> Container {
3901 let mut query = self.selection.select("withEnvVariable");
3902 query = query.arg("name", name.into());
3903 query = query.arg("value", value.into());
3904 if let Some(expand) = opts.expand {
3905 query = query.arg("expand", expand);
3906 }
3907 Container {
3908 proc: self.proc.clone(),
3909 selection: query,
3910 graphql_client: self.graphql_client.clone(),
3911 }
3912 }
3913 pub fn with_env_file_variables(&self, source: impl IntoID<Id>) -> Container {
3919 let mut query = self.selection.select("withEnvFileVariables");
3920 query = query.arg_lazy(
3921 "source",
3922 Box::new(move || {
3923 let source = source.clone();
3924 Box::pin(async move { source.into_id().await.unwrap().quote() })
3925 }),
3926 );
3927 Container {
3928 proc: self.proc.clone(),
3929 selection: query,
3930 graphql_client: self.graphql_client.clone(),
3931 }
3932 }
3933 pub fn with_secret_variable(
3940 &self,
3941 name: impl Into<String>,
3942 secret: impl IntoID<Id>,
3943 ) -> Container {
3944 let mut query = self.selection.select("withSecretVariable");
3945 query = query.arg("name", name.into());
3946 query = query.arg_lazy(
3947 "secret",
3948 Box::new(move || {
3949 let secret = secret.clone();
3950 Box::pin(async move { secret.into_id().await.unwrap().quote() })
3951 }),
3952 );
3953 Container {
3954 proc: self.proc.clone(),
3955 selection: query,
3956 graphql_client: self.graphql_client.clone(),
3957 }
3958 }
3959 pub fn with_volatile_variable(
3967 &self,
3968 name: impl Into<String>,
3969 value: impl Into<String>,
3970 ) -> Container {
3971 let mut query = self.selection.select("withVolatileVariable");
3972 query = query.arg("name", name.into());
3973 query = query.arg("value", value.into());
3974 Container {
3975 proc: self.proc.clone(),
3976 selection: query,
3977 graphql_client: self.graphql_client.clone(),
3978 }
3979 }
3980 pub fn without_env_variable(&self, name: impl Into<String>) -> Container {
3986 let mut query = self.selection.select("withoutEnvVariable");
3987 query = query.arg("name", name.into());
3988 Container {
3989 proc: self.proc.clone(),
3990 selection: query,
3991 graphql_client: self.graphql_client.clone(),
3992 }
3993 }
3994 pub fn without_secret_variable(&self, name: impl Into<String>) -> Container {
4000 let mut query = self.selection.select("withoutSecretVariable");
4001 query = query.arg("name", name.into());
4002 Container {
4003 proc: self.proc.clone(),
4004 selection: query,
4005 graphql_client: self.graphql_client.clone(),
4006 }
4007 }
4008 pub fn without_volatile_variable(&self, name: impl Into<String>) -> Container {
4014 let mut query = self.selection.select("withoutVolatileVariable");
4015 query = query.arg("name", name.into());
4016 Container {
4017 proc: self.proc.clone(),
4018 selection: query,
4019 graphql_client: self.graphql_client.clone(),
4020 }
4021 }
4022 pub fn with_label(&self, name: impl Into<String>, value: impl Into<String>) -> Container {
4029 let mut query = self.selection.select("withLabel");
4030 query = query.arg("name", name.into());
4031 query = query.arg("value", value.into());
4032 Container {
4033 proc: self.proc.clone(),
4034 selection: query,
4035 graphql_client: self.graphql_client.clone(),
4036 }
4037 }
4038 pub async fn label(&self, name: impl Into<String>) -> Result<String, DaggerError> {
4044 let mut query = self.selection.select("label");
4045 query = query.arg("name", name.into());
4046 query.execute(self.graphql_client.clone()).await
4047 }
4048 pub async fn labels(&self) -> Result<Vec<Label>, DaggerError> {
4050 let query = self.selection.select("labels");
4051 let query = query.select("id");
4052 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
4053 Ok(ids
4054 .into_iter()
4055 .map(|id| Label {
4056 proc: self.proc.clone(),
4057 selection: crate::querybuilder::query()
4058 .select("node")
4059 .arg("id", &id.0)
4060 .inline_fragment("Label"),
4061 graphql_client: self.graphql_client.clone(),
4062 })
4063 .collect())
4064 }
4065 pub fn without_label(&self, name: impl Into<String>) -> Container {
4071 let mut query = self.selection.select("withoutLabel");
4072 query = query.arg("name", name.into());
4073 Container {
4074 proc: self.proc.clone(),
4075 selection: query,
4076 graphql_client: self.graphql_client.clone(),
4077 }
4078 }
4079 pub fn with_docker_healthcheck(&self, args: Vec<impl Into<String>>) -> Container {
4086 let mut query = self.selection.select("withDockerHealthcheck");
4087 query = query.arg(
4088 "args",
4089 args.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
4090 );
4091 Container {
4092 proc: self.proc.clone(),
4093 selection: query,
4094 graphql_client: self.graphql_client.clone(),
4095 }
4096 }
4097 pub fn with_docker_healthcheck_opts<'a>(
4104 &self,
4105 args: Vec<impl Into<String>>,
4106 opts: ContainerWithDockerHealthcheckOpts<'a>,
4107 ) -> Container {
4108 let mut query = self.selection.select("withDockerHealthcheck");
4109 query = query.arg(
4110 "args",
4111 args.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
4112 );
4113 if let Some(shell) = opts.shell {
4114 query = query.arg("shell", shell);
4115 }
4116 if let Some(interval) = opts.interval {
4117 query = query.arg("interval", interval);
4118 }
4119 if let Some(timeout) = opts.timeout {
4120 query = query.arg("timeout", timeout);
4121 }
4122 if let Some(start_period) = opts.start_period {
4123 query = query.arg("startPeriod", start_period);
4124 }
4125 if let Some(start_interval) = opts.start_interval {
4126 query = query.arg("startInterval", start_interval);
4127 }
4128 if let Some(retries) = opts.retries {
4129 query = query.arg("retries", retries);
4130 }
4131 Container {
4132 proc: self.proc.clone(),
4133 selection: query,
4134 graphql_client: self.graphql_client.clone(),
4135 }
4136 }
4137 pub fn without_docker_healthcheck(&self) -> Container {
4139 let query = self.selection.select("withoutDockerHealthcheck");
4140 Container {
4141 proc: self.proc.clone(),
4142 selection: query,
4143 graphql_client: self.graphql_client.clone(),
4144 }
4145 }
4146 pub async fn docker_healthcheck(&self) -> Result<Option<HealthcheckConfig>, DaggerError> {
4148 let query = self.selection.select("dockerHealthcheck");
4149 let query = query.select("id");
4150 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
4151 Ok(id.map(|id| HealthcheckConfig {
4152 proc: self.proc.clone(),
4153 selection: query
4154 .root()
4155 .select("node")
4156 .arg("id", &id.0)
4157 .inline_fragment("HealthcheckConfig"),
4158 graphql_client: self.graphql_client.clone(),
4159 }))
4160 }
4161 pub async fn entrypoint(&self) -> Result<Vec<String>, DaggerError> {
4163 let query = self.selection.select("entrypoint");
4164 query.execute(self.graphql_client.clone()).await
4165 }
4166 pub fn with_entrypoint(&self, args: Vec<impl Into<String>>) -> Container {
4173 let mut query = self.selection.select("withEntrypoint");
4174 query = query.arg(
4175 "args",
4176 args.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
4177 );
4178 Container {
4179 proc: self.proc.clone(),
4180 selection: query,
4181 graphql_client: self.graphql_client.clone(),
4182 }
4183 }
4184 pub fn with_entrypoint_opts(
4191 &self,
4192 args: Vec<impl Into<String>>,
4193 opts: ContainerWithEntrypointOpts,
4194 ) -> Container {
4195 let mut query = self.selection.select("withEntrypoint");
4196 query = query.arg(
4197 "args",
4198 args.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
4199 );
4200 if let Some(keep_default_args) = opts.keep_default_args {
4201 query = query.arg("keepDefaultArgs", keep_default_args);
4202 }
4203 Container {
4204 proc: self.proc.clone(),
4205 selection: query,
4206 graphql_client: self.graphql_client.clone(),
4207 }
4208 }
4209 pub fn without_entrypoint(&self) -> Container {
4215 let query = self.selection.select("withoutEntrypoint");
4216 Container {
4217 proc: self.proc.clone(),
4218 selection: query,
4219 graphql_client: self.graphql_client.clone(),
4220 }
4221 }
4222 pub fn without_entrypoint_opts(&self, opts: ContainerWithoutEntrypointOpts) -> Container {
4228 let mut query = self.selection.select("withoutEntrypoint");
4229 if let Some(keep_default_args) = opts.keep_default_args {
4230 query = query.arg("keepDefaultArgs", keep_default_args);
4231 }
4232 Container {
4233 proc: self.proc.clone(),
4234 selection: query,
4235 graphql_client: self.graphql_client.clone(),
4236 }
4237 }
4238 pub async fn default_args(&self) -> Result<Vec<String>, DaggerError> {
4240 let query = self.selection.select("defaultArgs");
4241 query.execute(self.graphql_client.clone()).await
4242 }
4243 pub fn with_default_args(&self, args: Vec<impl Into<String>>) -> Container {
4249 let mut query = self.selection.select("withDefaultArgs");
4250 query = query.arg(
4251 "args",
4252 args.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
4253 );
4254 Container {
4255 proc: self.proc.clone(),
4256 selection: query,
4257 graphql_client: self.graphql_client.clone(),
4258 }
4259 }
4260 pub fn without_default_args(&self) -> Container {
4262 let query = self.selection.select("withoutDefaultArgs");
4263 Container {
4264 proc: self.proc.clone(),
4265 selection: query,
4266 graphql_client: self.graphql_client.clone(),
4267 }
4268 }
4269 pub async fn mounts(&self) -> Result<Vec<String>, DaggerError> {
4271 let query = self.selection.select("mounts");
4272 query.execute(self.graphql_client.clone()).await
4273 }
4274 pub fn with_mounted_directory(
4282 &self,
4283 path: impl Into<String>,
4284 source: impl IntoID<Id>,
4285 ) -> Container {
4286 let mut query = self.selection.select("withMountedDirectory");
4287 query = query.arg("path", path.into());
4288 query = query.arg_lazy(
4289 "source",
4290 Box::new(move || {
4291 let source = source.clone();
4292 Box::pin(async move { source.into_id().await.unwrap().quote() })
4293 }),
4294 );
4295 Container {
4296 proc: self.proc.clone(),
4297 selection: query,
4298 graphql_client: self.graphql_client.clone(),
4299 }
4300 }
4301 pub fn with_mounted_directory_opts<'a>(
4309 &self,
4310 path: impl Into<String>,
4311 source: impl IntoID<Id>,
4312 opts: ContainerWithMountedDirectoryOpts<'a>,
4313 ) -> Container {
4314 let mut query = self.selection.select("withMountedDirectory");
4315 query = query.arg("path", path.into());
4316 query = query.arg_lazy(
4317 "source",
4318 Box::new(move || {
4319 let source = source.clone();
4320 Box::pin(async move { source.into_id().await.unwrap().quote() })
4321 }),
4322 );
4323 if let Some(owner) = opts.owner {
4324 query = query.arg("owner", owner);
4325 }
4326 if let Some(inherit_owner) = opts.inherit_owner {
4327 query = query.arg("inheritOwner", inherit_owner);
4328 }
4329 if let Some(read_only) = opts.read_only {
4330 query = query.arg("readOnly", read_only);
4331 }
4332 if let Some(expand) = opts.expand {
4333 query = query.arg("expand", expand);
4334 }
4335 Container {
4336 proc: self.proc.clone(),
4337 selection: query,
4338 graphql_client: self.graphql_client.clone(),
4339 }
4340 }
4341 pub fn with_mounted_file(&self, path: impl Into<String>, source: impl IntoID<Id>) -> Container {
4349 let mut query = self.selection.select("withMountedFile");
4350 query = query.arg("path", path.into());
4351 query = query.arg_lazy(
4352 "source",
4353 Box::new(move || {
4354 let source = source.clone();
4355 Box::pin(async move { source.into_id().await.unwrap().quote() })
4356 }),
4357 );
4358 Container {
4359 proc: self.proc.clone(),
4360 selection: query,
4361 graphql_client: self.graphql_client.clone(),
4362 }
4363 }
4364 pub fn with_mounted_file_opts<'a>(
4372 &self,
4373 path: impl Into<String>,
4374 source: impl IntoID<Id>,
4375 opts: ContainerWithMountedFileOpts<'a>,
4376 ) -> Container {
4377 let mut query = self.selection.select("withMountedFile");
4378 query = query.arg("path", path.into());
4379 query = query.arg_lazy(
4380 "source",
4381 Box::new(move || {
4382 let source = source.clone();
4383 Box::pin(async move { source.into_id().await.unwrap().quote() })
4384 }),
4385 );
4386 if let Some(owner) = opts.owner {
4387 query = query.arg("owner", owner);
4388 }
4389 if let Some(inherit_owner) = opts.inherit_owner {
4390 query = query.arg("inheritOwner", inherit_owner);
4391 }
4392 if let Some(expand) = opts.expand {
4393 query = query.arg("expand", expand);
4394 }
4395 if let Some(read_only) = opts.read_only {
4396 query = query.arg("readOnly", read_only);
4397 }
4398 Container {
4399 proc: self.proc.clone(),
4400 selection: query,
4401 graphql_client: self.graphql_client.clone(),
4402 }
4403 }
4404 pub fn with_mounted_temp(&self, path: impl Into<String>) -> Container {
4411 let mut query = self.selection.select("withMountedTemp");
4412 query = query.arg("path", path.into());
4413 Container {
4414 proc: self.proc.clone(),
4415 selection: query,
4416 graphql_client: self.graphql_client.clone(),
4417 }
4418 }
4419 pub fn with_mounted_temp_opts(
4426 &self,
4427 path: impl Into<String>,
4428 opts: ContainerWithMountedTempOpts,
4429 ) -> Container {
4430 let mut query = self.selection.select("withMountedTemp");
4431 query = query.arg("path", path.into());
4432 if let Some(size) = opts.size {
4433 query = query.arg("size", size);
4434 }
4435 if let Some(expand) = opts.expand {
4436 query = query.arg("expand", expand);
4437 }
4438 Container {
4439 proc: self.proc.clone(),
4440 selection: query,
4441 graphql_client: self.graphql_client.clone(),
4442 }
4443 }
4444 pub fn with_mounted_cache(&self, path: impl Into<String>, cache: impl IntoID<Id>) -> Container {
4452 let mut query = self.selection.select("withMountedCache");
4453 query = query.arg("path", path.into());
4454 query = query.arg_lazy(
4455 "cache",
4456 Box::new(move || {
4457 let cache = cache.clone();
4458 Box::pin(async move { cache.into_id().await.unwrap().quote() })
4459 }),
4460 );
4461 Container {
4462 proc: self.proc.clone(),
4463 selection: query,
4464 graphql_client: self.graphql_client.clone(),
4465 }
4466 }
4467 pub fn with_mounted_cache_opts<'a>(
4475 &self,
4476 path: impl Into<String>,
4477 cache: impl IntoID<Id>,
4478 opts: ContainerWithMountedCacheOpts<'a>,
4479 ) -> Container {
4480 let mut query = self.selection.select("withMountedCache");
4481 query = query.arg("path", path.into());
4482 query = query.arg_lazy(
4483 "cache",
4484 Box::new(move || {
4485 let cache = cache.clone();
4486 Box::pin(async move { cache.into_id().await.unwrap().quote() })
4487 }),
4488 );
4489 if let Some(source) = opts.source {
4490 query = query.arg("source", source);
4491 }
4492 if let Some(sharing) = opts.sharing {
4493 query = query.arg("sharing", sharing);
4494 }
4495 if let Some(owner) = opts.owner {
4496 query = query.arg("owner", owner);
4497 }
4498 if let Some(inherit_owner) = opts.inherit_owner {
4499 query = query.arg("inheritOwner", inherit_owner);
4500 }
4501 if let Some(expand) = opts.expand {
4502 query = query.arg("expand", expand);
4503 }
4504 Container {
4505 proc: self.proc.clone(),
4506 selection: query,
4507 graphql_client: self.graphql_client.clone(),
4508 }
4509 }
4510 pub fn with_mounted_volume(
4518 &self,
4519 path: impl Into<String>,
4520 volume: impl IntoID<Id>,
4521 ) -> Container {
4522 let mut query = self.selection.select("withMountedVolume");
4523 query = query.arg("path", path.into());
4524 query = query.arg_lazy(
4525 "volume",
4526 Box::new(move || {
4527 let volume = volume.clone();
4528 Box::pin(async move { volume.into_id().await.unwrap().quote() })
4529 }),
4530 );
4531 Container {
4532 proc: self.proc.clone(),
4533 selection: query,
4534 graphql_client: self.graphql_client.clone(),
4535 }
4536 }
4537 pub fn with_mounted_volume_opts(
4545 &self,
4546 path: impl Into<String>,
4547 volume: impl IntoID<Id>,
4548 opts: ContainerWithMountedVolumeOpts,
4549 ) -> Container {
4550 let mut query = self.selection.select("withMountedVolume");
4551 query = query.arg("path", path.into());
4552 query = query.arg_lazy(
4553 "volume",
4554 Box::new(move || {
4555 let volume = volume.clone();
4556 Box::pin(async move { volume.into_id().await.unwrap().quote() })
4557 }),
4558 );
4559 if let Some(read_only) = opts.read_only {
4560 query = query.arg("readOnly", read_only);
4561 }
4562 if let Some(expand) = opts.expand {
4563 query = query.arg("expand", expand);
4564 }
4565 Container {
4566 proc: self.proc.clone(),
4567 selection: query,
4568 graphql_client: self.graphql_client.clone(),
4569 }
4570 }
4571 pub fn with_mounted_secret(
4579 &self,
4580 path: impl Into<String>,
4581 source: impl IntoID<Id>,
4582 ) -> Container {
4583 let mut query = self.selection.select("withMountedSecret");
4584 query = query.arg("path", path.into());
4585 query = query.arg_lazy(
4586 "source",
4587 Box::new(move || {
4588 let source = source.clone();
4589 Box::pin(async move { source.into_id().await.unwrap().quote() })
4590 }),
4591 );
4592 Container {
4593 proc: self.proc.clone(),
4594 selection: query,
4595 graphql_client: self.graphql_client.clone(),
4596 }
4597 }
4598 pub fn with_mounted_secret_opts<'a>(
4606 &self,
4607 path: impl Into<String>,
4608 source: impl IntoID<Id>,
4609 opts: ContainerWithMountedSecretOpts<'a>,
4610 ) -> Container {
4611 let mut query = self.selection.select("withMountedSecret");
4612 query = query.arg("path", path.into());
4613 query = query.arg_lazy(
4614 "source",
4615 Box::new(move || {
4616 let source = source.clone();
4617 Box::pin(async move { source.into_id().await.unwrap().quote() })
4618 }),
4619 );
4620 if let Some(owner) = opts.owner {
4621 query = query.arg("owner", owner);
4622 }
4623 if let Some(inherit_owner) = opts.inherit_owner {
4624 query = query.arg("inheritOwner", inherit_owner);
4625 }
4626 if let Some(mode) = opts.mode {
4627 query = query.arg("mode", mode);
4628 }
4629 if let Some(expand) = opts.expand {
4630 query = query.arg("expand", expand);
4631 }
4632 Container {
4633 proc: self.proc.clone(),
4634 selection: query,
4635 graphql_client: self.graphql_client.clone(),
4636 }
4637 }
4638 pub fn with_unix_socket(&self, path: impl Into<String>, source: impl IntoID<Id>) -> Container {
4646 let mut query = self.selection.select("withUnixSocket");
4647 query = query.arg("path", path.into());
4648 query = query.arg_lazy(
4649 "source",
4650 Box::new(move || {
4651 let source = source.clone();
4652 Box::pin(async move { source.into_id().await.unwrap().quote() })
4653 }),
4654 );
4655 Container {
4656 proc: self.proc.clone(),
4657 selection: query,
4658 graphql_client: self.graphql_client.clone(),
4659 }
4660 }
4661 pub fn with_unix_socket_opts<'a>(
4669 &self,
4670 path: impl Into<String>,
4671 source: impl IntoID<Id>,
4672 opts: ContainerWithUnixSocketOpts<'a>,
4673 ) -> Container {
4674 let mut query = self.selection.select("withUnixSocket");
4675 query = query.arg("path", path.into());
4676 query = query.arg_lazy(
4677 "source",
4678 Box::new(move || {
4679 let source = source.clone();
4680 Box::pin(async move { source.into_id().await.unwrap().quote() })
4681 }),
4682 );
4683 if let Some(owner) = opts.owner {
4684 query = query.arg("owner", owner);
4685 }
4686 if let Some(inherit_owner) = opts.inherit_owner {
4687 query = query.arg("inheritOwner", inherit_owner);
4688 }
4689 if let Some(expand) = opts.expand {
4690 query = query.arg("expand", expand);
4691 }
4692 Container {
4693 proc: self.proc.clone(),
4694 selection: query,
4695 graphql_client: self.graphql_client.clone(),
4696 }
4697 }
4698 pub fn without_unix_socket(&self, path: impl Into<String>) -> Container {
4705 let mut query = self.selection.select("withoutUnixSocket");
4706 query = query.arg("path", path.into());
4707 Container {
4708 proc: self.proc.clone(),
4709 selection: query,
4710 graphql_client: self.graphql_client.clone(),
4711 }
4712 }
4713 pub fn without_unix_socket_opts(
4720 &self,
4721 path: impl Into<String>,
4722 opts: ContainerWithoutUnixSocketOpts,
4723 ) -> Container {
4724 let mut query = self.selection.select("withoutUnixSocket");
4725 query = query.arg("path", path.into());
4726 if let Some(expand) = opts.expand {
4727 query = query.arg("expand", expand);
4728 }
4729 Container {
4730 proc: self.proc.clone(),
4731 selection: query,
4732 graphql_client: self.graphql_client.clone(),
4733 }
4734 }
4735 pub fn without_mount(&self, path: impl Into<String>) -> Container {
4742 let mut query = self.selection.select("withoutMount");
4743 query = query.arg("path", path.into());
4744 Container {
4745 proc: self.proc.clone(),
4746 selection: query,
4747 graphql_client: self.graphql_client.clone(),
4748 }
4749 }
4750 pub fn without_mount_opts(
4757 &self,
4758 path: impl Into<String>,
4759 opts: ContainerWithoutMountOpts,
4760 ) -> Container {
4761 let mut query = self.selection.select("withoutMount");
4762 query = query.arg("path", path.into());
4763 if let Some(expand) = opts.expand {
4764 query = query.arg("expand", expand);
4765 }
4766 Container {
4767 proc: self.proc.clone(),
4768 selection: query,
4769 graphql_client: self.graphql_client.clone(),
4770 }
4771 }
4772 pub fn with_file(&self, path: impl Into<String>, source: impl IntoID<Id>) -> Container {
4780 let mut query = self.selection.select("withFile");
4781 query = query.arg("path", path.into());
4782 query = query.arg_lazy(
4783 "source",
4784 Box::new(move || {
4785 let source = source.clone();
4786 Box::pin(async move { source.into_id().await.unwrap().quote() })
4787 }),
4788 );
4789 Container {
4790 proc: self.proc.clone(),
4791 selection: query,
4792 graphql_client: self.graphql_client.clone(),
4793 }
4794 }
4795 pub fn with_file_opts<'a>(
4803 &self,
4804 path: impl Into<String>,
4805 source: impl IntoID<Id>,
4806 opts: ContainerWithFileOpts<'a>,
4807 ) -> Container {
4808 let mut query = self.selection.select("withFile");
4809 query = query.arg("path", path.into());
4810 query = query.arg_lazy(
4811 "source",
4812 Box::new(move || {
4813 let source = source.clone();
4814 Box::pin(async move { source.into_id().await.unwrap().quote() })
4815 }),
4816 );
4817 if let Some(permissions) = opts.permissions {
4818 query = query.arg("permissions", permissions);
4819 }
4820 if let Some(owner) = opts.owner {
4821 query = query.arg("owner", owner);
4822 }
4823 if let Some(inherit_owner) = opts.inherit_owner {
4824 query = query.arg("inheritOwner", inherit_owner);
4825 }
4826 if let Some(expand) = opts.expand {
4827 query = query.arg("expand", expand);
4828 }
4829 Container {
4830 proc: self.proc.clone(),
4831 selection: query,
4832 graphql_client: self.graphql_client.clone(),
4833 }
4834 }
4835 pub fn without_file(&self, path: impl Into<String>) -> Container {
4842 let mut query = self.selection.select("withoutFile");
4843 query = query.arg("path", path.into());
4844 Container {
4845 proc: self.proc.clone(),
4846 selection: query,
4847 graphql_client: self.graphql_client.clone(),
4848 }
4849 }
4850 pub fn without_file_opts(
4857 &self,
4858 path: impl Into<String>,
4859 opts: ContainerWithoutFileOpts,
4860 ) -> Container {
4861 let mut query = self.selection.select("withoutFile");
4862 query = query.arg("path", path.into());
4863 if let Some(expand) = opts.expand {
4864 query = query.arg("expand", expand);
4865 }
4866 Container {
4867 proc: self.proc.clone(),
4868 selection: query,
4869 graphql_client: self.graphql_client.clone(),
4870 }
4871 }
4872 pub fn without_files(&self, paths: Vec<impl Into<String>>) -> Container {
4879 let mut query = self.selection.select("withoutFiles");
4880 query = query.arg(
4881 "paths",
4882 paths.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
4883 );
4884 Container {
4885 proc: self.proc.clone(),
4886 selection: query,
4887 graphql_client: self.graphql_client.clone(),
4888 }
4889 }
4890 pub fn without_files_opts(
4897 &self,
4898 paths: Vec<impl Into<String>>,
4899 opts: ContainerWithoutFilesOpts,
4900 ) -> Container {
4901 let mut query = self.selection.select("withoutFiles");
4902 query = query.arg(
4903 "paths",
4904 paths.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
4905 );
4906 if let Some(expand) = opts.expand {
4907 query = query.arg("expand", expand);
4908 }
4909 Container {
4910 proc: self.proc.clone(),
4911 selection: query,
4912 graphql_client: self.graphql_client.clone(),
4913 }
4914 }
4915 pub fn with_files(&self, path: impl Into<String>, sources: Vec<Id>) -> Container {
4923 let mut query = self.selection.select("withFiles");
4924 query = query.arg("path", path.into());
4925 query = query.arg("sources", sources);
4926 Container {
4927 proc: self.proc.clone(),
4928 selection: query,
4929 graphql_client: self.graphql_client.clone(),
4930 }
4931 }
4932 pub fn with_files_opts<'a>(
4940 &self,
4941 path: impl Into<String>,
4942 sources: Vec<Id>,
4943 opts: ContainerWithFilesOpts<'a>,
4944 ) -> Container {
4945 let mut query = self.selection.select("withFiles");
4946 query = query.arg("path", path.into());
4947 query = query.arg("sources", sources);
4948 if let Some(permissions) = opts.permissions {
4949 query = query.arg("permissions", permissions);
4950 }
4951 if let Some(owner) = opts.owner {
4952 query = query.arg("owner", owner);
4953 }
4954 if let Some(inherit_owner) = opts.inherit_owner {
4955 query = query.arg("inheritOwner", inherit_owner);
4956 }
4957 if let Some(expand) = opts.expand {
4958 query = query.arg("expand", expand);
4959 }
4960 Container {
4961 proc: self.proc.clone(),
4962 selection: query,
4963 graphql_client: self.graphql_client.clone(),
4964 }
4965 }
4966 pub fn with_new_file(&self, path: impl Into<String>, contents: impl Into<String>) -> Container {
4974 let mut query = self.selection.select("withNewFile");
4975 query = query.arg("path", path.into());
4976 query = query.arg("contents", contents.into());
4977 Container {
4978 proc: self.proc.clone(),
4979 selection: query,
4980 graphql_client: self.graphql_client.clone(),
4981 }
4982 }
4983 pub fn with_new_file_opts<'a>(
4991 &self,
4992 path: impl Into<String>,
4993 contents: impl Into<String>,
4994 opts: ContainerWithNewFileOpts<'a>,
4995 ) -> Container {
4996 let mut query = self.selection.select("withNewFile");
4997 query = query.arg("path", path.into());
4998 query = query.arg("contents", contents.into());
4999 if let Some(permissions) = opts.permissions {
5000 query = query.arg("permissions", permissions);
5001 }
5002 if let Some(owner) = opts.owner {
5003 query = query.arg("owner", owner);
5004 }
5005 if let Some(inherit_owner) = opts.inherit_owner {
5006 query = query.arg("inheritOwner", inherit_owner);
5007 }
5008 if let Some(expand) = opts.expand {
5009 query = query.arg("expand", expand);
5010 }
5011 Container {
5012 proc: self.proc.clone(),
5013 selection: query,
5014 graphql_client: self.graphql_client.clone(),
5015 }
5016 }
5017 pub fn with_directory(&self, path: impl Into<String>, source: impl IntoID<Id>) -> Container {
5025 let mut query = self.selection.select("withDirectory");
5026 query = query.arg("path", path.into());
5027 query = query.arg_lazy(
5028 "source",
5029 Box::new(move || {
5030 let source = source.clone();
5031 Box::pin(async move { source.into_id().await.unwrap().quote() })
5032 }),
5033 );
5034 Container {
5035 proc: self.proc.clone(),
5036 selection: query,
5037 graphql_client: self.graphql_client.clone(),
5038 }
5039 }
5040 pub fn with_directory_opts<'a>(
5048 &self,
5049 path: impl Into<String>,
5050 source: impl IntoID<Id>,
5051 opts: ContainerWithDirectoryOpts<'a>,
5052 ) -> Container {
5053 let mut query = self.selection.select("withDirectory");
5054 query = query.arg("path", path.into());
5055 query = query.arg_lazy(
5056 "source",
5057 Box::new(move || {
5058 let source = source.clone();
5059 Box::pin(async move { source.into_id().await.unwrap().quote() })
5060 }),
5061 );
5062 if let Some(exclude) = opts.exclude {
5063 query = query.arg("exclude", exclude);
5064 }
5065 if let Some(include) = opts.include {
5066 query = query.arg("include", include);
5067 }
5068 if let Some(gitignore) = opts.gitignore {
5069 query = query.arg("gitignore", gitignore);
5070 }
5071 if let Some(owner) = opts.owner {
5072 query = query.arg("owner", owner);
5073 }
5074 if let Some(inherit_owner) = opts.inherit_owner {
5075 query = query.arg("inheritOwner", inherit_owner);
5076 }
5077 if let Some(expand) = opts.expand {
5078 query = query.arg("expand", expand);
5079 }
5080 if let Some(permissions) = opts.permissions {
5081 query = query.arg("permissions", permissions);
5082 }
5083 Container {
5084 proc: self.proc.clone(),
5085 selection: query,
5086 graphql_client: self.graphql_client.clone(),
5087 }
5088 }
5089 pub fn without_directory(&self, path: impl Into<String>) -> Container {
5096 let mut query = self.selection.select("withoutDirectory");
5097 query = query.arg("path", path.into());
5098 Container {
5099 proc: self.proc.clone(),
5100 selection: query,
5101 graphql_client: self.graphql_client.clone(),
5102 }
5103 }
5104 pub fn without_directory_opts(
5111 &self,
5112 path: impl Into<String>,
5113 opts: ContainerWithoutDirectoryOpts,
5114 ) -> Container {
5115 let mut query = self.selection.select("withoutDirectory");
5116 query = query.arg("path", path.into());
5117 if let Some(expand) = opts.expand {
5118 query = query.arg("expand", expand);
5119 }
5120 Container {
5121 proc: self.proc.clone(),
5122 selection: query,
5123 graphql_client: self.graphql_client.clone(),
5124 }
5125 }
5126 pub async fn exists(&self, path: impl Into<String>) -> Result<bool, DaggerError> {
5133 let mut query = self.selection.select("exists");
5134 query = query.arg("path", path.into());
5135 query.execute(self.graphql_client.clone()).await
5136 }
5137 pub async fn exists_opts(
5144 &self,
5145 path: impl Into<String>,
5146 opts: ContainerExistsOpts,
5147 ) -> Result<bool, DaggerError> {
5148 let mut query = self.selection.select("exists");
5149 query = query.arg("path", path.into());
5150 if let Some(expected_type) = opts.expected_type {
5151 query = query.arg("expectedType", expected_type);
5152 }
5153 if let Some(do_not_follow_symlinks) = opts.do_not_follow_symlinks {
5154 query = query.arg("doNotFollowSymlinks", do_not_follow_symlinks);
5155 }
5156 if let Some(expand) = opts.expand {
5157 query = query.arg("expand", expand);
5158 }
5159 query.execute(self.graphql_client.clone()).await
5160 }
5161 pub async fn stat(&self, path: impl Into<String>) -> Result<Option<Stat>, DaggerError> {
5168 let mut query = self.selection.select("stat");
5169 query = query.arg("path", path.into());
5170 let query = query.select("id");
5171 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
5172 Ok(id.map(|id| Stat {
5173 proc: self.proc.clone(),
5174 selection: query
5175 .root()
5176 .select("node")
5177 .arg("id", &id.0)
5178 .inline_fragment("Stat"),
5179 graphql_client: self.graphql_client.clone(),
5180 }))
5181 }
5182 pub async fn stat_opts(
5189 &self,
5190 path: impl Into<String>,
5191 opts: ContainerStatOpts,
5192 ) -> Result<Option<Stat>, DaggerError> {
5193 let mut query = self.selection.select("stat");
5194 query = query.arg("path", path.into());
5195 if let Some(do_not_follow_symlinks) = opts.do_not_follow_symlinks {
5196 query = query.arg("doNotFollowSymlinks", do_not_follow_symlinks);
5197 }
5198 let query = query.select("id");
5199 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
5200 Ok(id.map(|id| Stat {
5201 proc: self.proc.clone(),
5202 selection: query
5203 .root()
5204 .select("node")
5205 .arg("id", &id.0)
5206 .inline_fragment("Stat"),
5207 graphql_client: self.graphql_client.clone(),
5208 }))
5209 }
5210 pub fn with_error(&self, err: impl Into<String>) -> Container {
5216 let mut query = self.selection.select("withError");
5217 query = query.arg("err", err.into());
5218 Container {
5219 proc: self.proc.clone(),
5220 selection: query,
5221 graphql_client: self.graphql_client.clone(),
5222 }
5223 }
5224 pub fn with_exec(&self, args: Vec<impl Into<String>>) -> Container {
5235 let mut query = self.selection.select("withExec");
5236 query = query.arg(
5237 "args",
5238 args.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
5239 );
5240 Container {
5241 proc: self.proc.clone(),
5242 selection: query,
5243 graphql_client: self.graphql_client.clone(),
5244 }
5245 }
5246 pub fn with_exec_opts<'a>(
5257 &self,
5258 args: Vec<impl Into<String>>,
5259 opts: ContainerWithExecOpts<'a>,
5260 ) -> Container {
5261 let mut query = self.selection.select("withExec");
5262 query = query.arg(
5263 "args",
5264 args.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
5265 );
5266 if let Some(use_entrypoint) = opts.use_entrypoint {
5267 query = query.arg("useEntrypoint", use_entrypoint);
5268 }
5269 if let Some(stdin) = opts.stdin {
5270 query = query.arg("stdin", stdin);
5271 }
5272 if let Some(redirect_stdin) = opts.redirect_stdin {
5273 query = query.arg("redirectStdin", redirect_stdin);
5274 }
5275 if let Some(redirect_stdout) = opts.redirect_stdout {
5276 query = query.arg("redirectStdout", redirect_stdout);
5277 }
5278 if let Some(redirect_stderr) = opts.redirect_stderr {
5279 query = query.arg("redirectStderr", redirect_stderr);
5280 }
5281 if let Some(expect) = opts.expect {
5282 query = query.arg("expect", expect);
5283 }
5284 if let Some(disable_dagger_in_dagger) = opts.disable_dagger_in_dagger {
5285 query = query.arg("disableDaggerInDagger", disable_dagger_in_dagger);
5286 }
5287 if let Some(experimental_privileged_nesting) = opts.experimental_privileged_nesting {
5288 query = query.arg(
5289 "experimentalPrivilegedNesting",
5290 experimental_privileged_nesting,
5291 );
5292 }
5293 if let Some(dagger_in_dagger_new_session) = opts.dagger_in_dagger_new_session {
5294 query = query.arg("daggerInDaggerNewSession", dagger_in_dagger_new_session);
5295 }
5296 if let Some(insecure_root_capabilities) = opts.insecure_root_capabilities {
5297 query = query.arg("insecureRootCapabilities", insecure_root_capabilities);
5298 }
5299 if let Some(expand) = opts.expand {
5300 query = query.arg("expand", expand);
5301 }
5302 if let Some(no_init) = opts.no_init {
5303 query = query.arg("noInit", no_init);
5304 }
5305 Container {
5306 proc: self.proc.clone(),
5307 selection: query,
5308 graphql_client: self.graphql_client.clone(),
5309 }
5310 }
5311 pub async fn stdout(&self) -> Result<String, DaggerError> {
5314 let query = self.selection.select("stdout");
5315 query.execute(self.graphql_client.clone()).await
5316 }
5317 pub async fn stderr(&self) -> Result<String, DaggerError> {
5320 let query = self.selection.select("stderr");
5321 query.execute(self.graphql_client.clone()).await
5322 }
5323 pub async fn combined_output(&self) -> Result<String, DaggerError> {
5326 let query = self.selection.select("combinedOutput");
5327 query.execute(self.graphql_client.clone()).await
5328 }
5329 pub async fn exit_code(&self) -> Result<isize, DaggerError> {
5332 let query = self.selection.select("exitCode");
5333 query.execute(self.graphql_client.clone()).await
5334 }
5335 pub fn with_symlink(
5343 &self,
5344 target: impl Into<String>,
5345 link_name: impl Into<String>,
5346 ) -> Container {
5347 let mut query = self.selection.select("withSymlink");
5348 query = query.arg("target", target.into());
5349 query = query.arg("linkName", link_name.into());
5350 Container {
5351 proc: self.proc.clone(),
5352 selection: query,
5353 graphql_client: self.graphql_client.clone(),
5354 }
5355 }
5356 pub fn with_symlink_opts(
5364 &self,
5365 target: impl Into<String>,
5366 link_name: impl Into<String>,
5367 opts: ContainerWithSymlinkOpts,
5368 ) -> Container {
5369 let mut query = self.selection.select("withSymlink");
5370 query = query.arg("target", target.into());
5371 query = query.arg("linkName", link_name.into());
5372 if let Some(expand) = opts.expand {
5373 query = query.arg("expand", expand);
5374 }
5375 Container {
5376 proc: self.proc.clone(),
5377 selection: query,
5378 graphql_client: self.graphql_client.clone(),
5379 }
5380 }
5381 pub fn with_annotation(&self, name: impl Into<String>, value: impl Into<String>) -> Container {
5388 let mut query = self.selection.select("withAnnotation");
5389 query = query.arg("name", name.into());
5390 query = query.arg("value", value.into());
5391 Container {
5392 proc: self.proc.clone(),
5393 selection: query,
5394 graphql_client: self.graphql_client.clone(),
5395 }
5396 }
5397 pub fn without_annotation(&self, name: impl Into<String>) -> Container {
5403 let mut query = self.selection.select("withoutAnnotation");
5404 query = query.arg("name", name.into());
5405 Container {
5406 proc: self.proc.clone(),
5407 selection: query,
5408 graphql_client: self.graphql_client.clone(),
5409 }
5410 }
5411 pub async fn publish(&self, address: impl Into<String>) -> Result<String, DaggerError> {
5421 let mut query = self.selection.select("publish");
5422 query = query.arg("address", address.into());
5423 query.execute(self.graphql_client.clone()).await
5424 }
5425 pub async fn publish_opts(
5435 &self,
5436 address: impl Into<String>,
5437 opts: ContainerPublishOpts,
5438 ) -> Result<String, DaggerError> {
5439 let mut query = self.selection.select("publish");
5440 query = query.arg("address", address.into());
5441 if let Some(platform_variants) = opts.platform_variants {
5442 query = query.arg("platformVariants", platform_variants);
5443 }
5444 if let Some(forced_compression) = opts.forced_compression {
5445 query = query.arg("forcedCompression", forced_compression);
5446 }
5447 if let Some(media_types) = opts.media_types {
5448 query = query.arg("mediaTypes", media_types);
5449 }
5450 if let Some(registry_service) = opts.registry_service {
5451 query = query.arg("registryService", registry_service);
5452 }
5453 if let Some(protocol) = opts.protocol {
5454 query = query.arg("protocol", protocol);
5455 }
5456 if let Some(insecure_skip_tls_verify) = opts.insecure_skip_tls_verify {
5457 query = query.arg("insecureSkipTLSVerify", insecure_skip_tls_verify);
5458 }
5459 query.execute(self.graphql_client.clone()).await
5460 }
5461 pub async fn platform(&self) -> Result<Platform, DaggerError> {
5463 let query = self.selection.select("platform");
5464 query.execute(self.graphql_client.clone()).await
5465 }
5466 pub async fn export(&self, path: impl Into<String>) -> Result<String, DaggerError> {
5476 let mut query = self.selection.select("export");
5477 query = query.arg("path", path.into());
5478 query.execute(self.graphql_client.clone()).await
5479 }
5480 pub async fn export_opts(
5490 &self,
5491 path: impl Into<String>,
5492 opts: ContainerExportOpts,
5493 ) -> Result<String, DaggerError> {
5494 let mut query = self.selection.select("export");
5495 query = query.arg("path", path.into());
5496 if let Some(platform_variants) = opts.platform_variants {
5497 query = query.arg("platformVariants", platform_variants);
5498 }
5499 if let Some(forced_compression) = opts.forced_compression {
5500 query = query.arg("forcedCompression", forced_compression);
5501 }
5502 if let Some(media_types) = opts.media_types {
5503 query = query.arg("mediaTypes", media_types);
5504 }
5505 if let Some(expand) = opts.expand {
5506 query = query.arg("expand", expand);
5507 }
5508 query.execute(self.graphql_client.clone()).await
5509 }
5510 pub async fn export_image(&self, name: impl Into<String>) -> Result<Void, DaggerError> {
5517 let mut query = self.selection.select("exportImage");
5518 query = query.arg("name", name.into());
5519 query.execute(self.graphql_client.clone()).await
5520 }
5521 pub async fn export_image_opts(
5528 &self,
5529 name: impl Into<String>,
5530 opts: ContainerExportImageOpts,
5531 ) -> Result<Void, DaggerError> {
5532 let mut query = self.selection.select("exportImage");
5533 query = query.arg("name", name.into());
5534 if let Some(platform_variants) = opts.platform_variants {
5535 query = query.arg("platformVariants", platform_variants);
5536 }
5537 if let Some(forced_compression) = opts.forced_compression {
5538 query = query.arg("forcedCompression", forced_compression);
5539 }
5540 if let Some(media_types) = opts.media_types {
5541 query = query.arg("mediaTypes", media_types);
5542 }
5543 query.execute(self.graphql_client.clone()).await
5544 }
5545 pub fn as_tarball(&self) -> File {
5551 let query = self.selection.select("asTarball");
5552 File {
5553 proc: self.proc.clone(),
5554 selection: query,
5555 graphql_client: self.graphql_client.clone(),
5556 }
5557 }
5558 pub fn as_tarball_opts(&self, opts: ContainerAsTarballOpts) -> File {
5564 let mut query = self.selection.select("asTarball");
5565 if let Some(platform_variants) = opts.platform_variants {
5566 query = query.arg("platformVariants", platform_variants);
5567 }
5568 if let Some(forced_compression) = opts.forced_compression {
5569 query = query.arg("forcedCompression", forced_compression);
5570 }
5571 if let Some(media_types) = opts.media_types {
5572 query = query.arg("mediaTypes", media_types);
5573 }
5574 File {
5575 proc: self.proc.clone(),
5576 selection: query,
5577 graphql_client: self.graphql_client.clone(),
5578 }
5579 }
5580 pub fn import(&self, source: impl IntoID<Id>) -> Container {
5587 let mut query = self.selection.select("import");
5588 query = query.arg_lazy(
5589 "source",
5590 Box::new(move || {
5591 let source = source.clone();
5592 Box::pin(async move { source.into_id().await.unwrap().quote() })
5593 }),
5594 );
5595 Container {
5596 proc: self.proc.clone(),
5597 selection: query,
5598 graphql_client: self.graphql_client.clone(),
5599 }
5600 }
5601 pub fn import_opts<'a>(
5608 &self,
5609 source: impl IntoID<Id>,
5610 opts: ContainerImportOpts<'a>,
5611 ) -> Container {
5612 let mut query = self.selection.select("import");
5613 query = query.arg_lazy(
5614 "source",
5615 Box::new(move || {
5616 let source = source.clone();
5617 Box::pin(async move { source.into_id().await.unwrap().quote() })
5618 }),
5619 );
5620 if let Some(tag) = opts.tag {
5621 query = query.arg("tag", tag);
5622 }
5623 Container {
5624 proc: self.proc.clone(),
5625 selection: query,
5626 graphql_client: self.graphql_client.clone(),
5627 }
5628 }
5629 pub fn with_registry_auth(
5637 &self,
5638 address: impl Into<String>,
5639 username: impl Into<String>,
5640 secret: impl IntoID<Id>,
5641 ) -> Container {
5642 let mut query = self.selection.select("withRegistryAuth");
5643 query = query.arg("address", address.into());
5644 query = query.arg("username", username.into());
5645 query = query.arg_lazy(
5646 "secret",
5647 Box::new(move || {
5648 let secret = secret.clone();
5649 Box::pin(async move { secret.into_id().await.unwrap().quote() })
5650 }),
5651 );
5652 Container {
5653 proc: self.proc.clone(),
5654 selection: query,
5655 graphql_client: self.graphql_client.clone(),
5656 }
5657 }
5658 pub fn without_registry_auth(&self, address: impl Into<String>) -> Container {
5666 let mut query = self.selection.select("withoutRegistryAuth");
5667 query = query.arg("address", address.into());
5668 Container {
5669 proc: self.proc.clone(),
5670 selection: query,
5671 graphql_client: self.graphql_client.clone(),
5672 }
5673 }
5674 pub async fn image_ref(&self) -> Result<String, DaggerError> {
5676 let query = self.selection.select("imageRef");
5677 query.execute(self.graphql_client.clone()).await
5678 }
5679 pub fn manifest(&self) -> File {
5685 let query = self.selection.select("manifest");
5686 File {
5687 proc: self.proc.clone(),
5688 selection: query,
5689 graphql_client: self.graphql_client.clone(),
5690 }
5691 }
5692 pub fn manifest_opts(&self, opts: ContainerManifestOpts) -> File {
5698 let mut query = self.selection.select("manifest");
5699 if let Some(forced_compression) = opts.forced_compression {
5700 query = query.arg("forcedCompression", forced_compression);
5701 }
5702 if let Some(media_types) = opts.media_types {
5703 query = query.arg("mediaTypes", media_types);
5704 }
5705 File {
5706 proc: self.proc.clone(),
5707 selection: query,
5708 graphql_client: self.graphql_client.clone(),
5709 }
5710 }
5711 pub fn layer(&self, id: impl Into<String>) -> File {
5718 let mut query = self.selection.select("layer");
5719 query = query.arg("id", id.into());
5720 File {
5721 proc: self.proc.clone(),
5722 selection: query,
5723 graphql_client: self.graphql_client.clone(),
5724 }
5725 }
5726 pub fn layer_opts(&self, id: impl Into<String>, opts: ContainerLayerOpts) -> File {
5733 let mut query = self.selection.select("layer");
5734 query = query.arg("id", id.into());
5735 if let Some(forced_compression) = opts.forced_compression {
5736 query = query.arg("forcedCompression", forced_compression);
5737 }
5738 if let Some(media_types) = opts.media_types {
5739 query = query.arg("mediaTypes", media_types);
5740 }
5741 File {
5742 proc: self.proc.clone(),
5743 selection: query,
5744 graphql_client: self.graphql_client.clone(),
5745 }
5746 }
5747 pub fn with_exposed_port(&self, port: isize) -> Container {
5757 let mut query = self.selection.select("withExposedPort");
5758 query = query.arg("port", port);
5759 Container {
5760 proc: self.proc.clone(),
5761 selection: query,
5762 graphql_client: self.graphql_client.clone(),
5763 }
5764 }
5765 pub fn with_exposed_port_opts<'a>(
5775 &self,
5776 port: isize,
5777 opts: ContainerWithExposedPortOpts<'a>,
5778 ) -> Container {
5779 let mut query = self.selection.select("withExposedPort");
5780 query = query.arg("port", port);
5781 if let Some(protocol) = opts.protocol {
5782 query = query.arg("protocol", protocol);
5783 }
5784 if let Some(description) = opts.description {
5785 query = query.arg("description", description);
5786 }
5787 if let Some(experimental_skip_healthcheck) = opts.experimental_skip_healthcheck {
5788 query = query.arg("experimentalSkipHealthcheck", experimental_skip_healthcheck);
5789 }
5790 Container {
5791 proc: self.proc.clone(),
5792 selection: query,
5793 graphql_client: self.graphql_client.clone(),
5794 }
5795 }
5796 pub fn without_exposed_port(&self, port: isize) -> Container {
5803 let mut query = self.selection.select("withoutExposedPort");
5804 query = query.arg("port", port);
5805 Container {
5806 proc: self.proc.clone(),
5807 selection: query,
5808 graphql_client: self.graphql_client.clone(),
5809 }
5810 }
5811 pub fn without_exposed_port_opts(
5818 &self,
5819 port: isize,
5820 opts: ContainerWithoutExposedPortOpts,
5821 ) -> Container {
5822 let mut query = self.selection.select("withoutExposedPort");
5823 query = query.arg("port", port);
5824 if let Some(protocol) = opts.protocol {
5825 query = query.arg("protocol", protocol);
5826 }
5827 Container {
5828 proc: self.proc.clone(),
5829 selection: query,
5830 graphql_client: self.graphql_client.clone(),
5831 }
5832 }
5833 pub async fn exposed_ports(&self) -> Result<Vec<Port>, DaggerError> {
5836 let query = self.selection.select("exposedPorts");
5837 let query = query.select("id");
5838 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
5839 Ok(ids
5840 .into_iter()
5841 .map(|id| Port {
5842 proc: self.proc.clone(),
5843 selection: crate::querybuilder::query()
5844 .select("node")
5845 .arg("id", &id.0)
5846 .inline_fragment("Port"),
5847 graphql_client: self.graphql_client.clone(),
5848 })
5849 .collect())
5850 }
5851 pub fn with_service_binding(
5861 &self,
5862 alias: impl Into<String>,
5863 service: impl IntoID<Id>,
5864 ) -> Container {
5865 let mut query = self.selection.select("withServiceBinding");
5866 query = query.arg("alias", alias.into());
5867 query = query.arg_lazy(
5868 "service",
5869 Box::new(move || {
5870 let service = service.clone();
5871 Box::pin(async move { service.into_id().await.unwrap().quote() })
5872 }),
5873 );
5874 Container {
5875 proc: self.proc.clone(),
5876 selection: query,
5877 graphql_client: self.graphql_client.clone(),
5878 }
5879 }
5880 pub fn with_default_terminal_cmd(&self, args: Vec<impl Into<String>>) -> Container {
5887 let mut query = self.selection.select("withDefaultTerminalCmd");
5888 query = query.arg(
5889 "args",
5890 args.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
5891 );
5892 Container {
5893 proc: self.proc.clone(),
5894 selection: query,
5895 graphql_client: self.graphql_client.clone(),
5896 }
5897 }
5898 pub fn with_default_terminal_cmd_opts(
5905 &self,
5906 args: Vec<impl Into<String>>,
5907 opts: ContainerWithDefaultTerminalCmdOpts,
5908 ) -> Container {
5909 let mut query = self.selection.select("withDefaultTerminalCmd");
5910 query = query.arg(
5911 "args",
5912 args.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
5913 );
5914 if let Some(disable_dagger_in_dagger) = opts.disable_dagger_in_dagger {
5915 query = query.arg("disableDaggerInDagger", disable_dagger_in_dagger);
5916 }
5917 if let Some(experimental_privileged_nesting) = opts.experimental_privileged_nesting {
5918 query = query.arg(
5919 "experimentalPrivilegedNesting",
5920 experimental_privileged_nesting,
5921 );
5922 }
5923 if let Some(insecure_root_capabilities) = opts.insecure_root_capabilities {
5924 query = query.arg("insecureRootCapabilities", insecure_root_capabilities);
5925 }
5926 Container {
5927 proc: self.proc.clone(),
5928 selection: query,
5929 graphql_client: self.graphql_client.clone(),
5930 }
5931 }
5932 pub fn with_shell(&self, interactive: Vec<impl Into<String>>) -> Container {
5939 let mut query = self.selection.select("withShell");
5940 query = query.arg(
5941 "interactive",
5942 interactive
5943 .into_iter()
5944 .map(|i| i.into())
5945 .collect::<Vec<String>>(),
5946 );
5947 Container {
5948 proc: self.proc.clone(),
5949 selection: query,
5950 graphql_client: self.graphql_client.clone(),
5951 }
5952 }
5953 pub fn with_shell_opts<'a>(
5960 &self,
5961 interactive: Vec<impl Into<String>>,
5962 opts: ContainerWithShellOpts<'a>,
5963 ) -> Container {
5964 let mut query = self.selection.select("withShell");
5965 query = query.arg(
5966 "interactive",
5967 interactive
5968 .into_iter()
5969 .map(|i| i.into())
5970 .collect::<Vec<String>>(),
5971 );
5972 if let Some(batch) = opts.batch {
5973 query = query.arg("batch", batch);
5974 }
5975 if let Some(disable_dagger_in_dagger) = opts.disable_dagger_in_dagger {
5976 query = query.arg("disableDaggerInDagger", disable_dagger_in_dagger);
5977 }
5978 if let Some(experimental_privileged_nesting) = opts.experimental_privileged_nesting {
5979 query = query.arg(
5980 "experimentalPrivilegedNesting",
5981 experimental_privileged_nesting,
5982 );
5983 }
5984 if let Some(insecure_root_capabilities) = opts.insecure_root_capabilities {
5985 query = query.arg("insecureRootCapabilities", insecure_root_capabilities);
5986 }
5987 Container {
5988 proc: self.proc.clone(),
5989 selection: query,
5990 graphql_client: self.graphql_client.clone(),
5991 }
5992 }
5993 pub fn shell(&self) -> Command {
5999 let query = self.selection.select("shell");
6000 Command {
6001 proc: self.proc.clone(),
6002 selection: query,
6003 graphql_client: self.graphql_client.clone(),
6004 }
6005 }
6006 pub fn shell_opts(&self, opts: ContainerShellOpts) -> Command {
6012 let mut query = self.selection.select("shell");
6013 if let Some(batch) = opts.batch {
6014 query = query.arg("batch", batch);
6015 }
6016 Command {
6017 proc: self.proc.clone(),
6018 selection: query,
6019 graphql_client: self.graphql_client.clone(),
6020 }
6021 }
6022 pub fn with_run(&self, command: impl Into<String>) -> Container {
6029 let mut query = self.selection.select("withRun");
6030 query = query.arg("command", command.into());
6031 Container {
6032 proc: self.proc.clone(),
6033 selection: query,
6034 graphql_client: self.graphql_client.clone(),
6035 }
6036 }
6037 pub fn with_run_opts<'a>(
6044 &self,
6045 command: impl Into<String>,
6046 opts: ContainerWithRunOpts<'a>,
6047 ) -> Container {
6048 let mut query = self.selection.select("withRun");
6049 query = query.arg("command", command.into());
6050 if let Some(shell) = opts.shell {
6051 query = query.arg("shell", shell);
6052 }
6053 if let Some(disable_dagger_in_dagger) = opts.disable_dagger_in_dagger {
6054 query = query.arg("disableDaggerInDagger", disable_dagger_in_dagger);
6055 }
6056 if let Some(experimental_privileged_nesting) = opts.experimental_privileged_nesting {
6057 query = query.arg(
6058 "experimentalPrivilegedNesting",
6059 experimental_privileged_nesting,
6060 );
6061 }
6062 if let Some(insecure_root_capabilities) = opts.insecure_root_capabilities {
6063 query = query.arg("insecureRootCapabilities", insecure_root_capabilities);
6064 }
6065 Container {
6066 proc: self.proc.clone(),
6067 selection: query,
6068 graphql_client: self.graphql_client.clone(),
6069 }
6070 }
6071 pub fn terminal(&self) -> Container {
6077 let query = self.selection.select("terminal");
6078 Container {
6079 proc: self.proc.clone(),
6080 selection: query,
6081 graphql_client: self.graphql_client.clone(),
6082 }
6083 }
6084 pub fn terminal_opts<'a>(&self, opts: ContainerTerminalOpts<'a>) -> Container {
6090 let mut query = self.selection.select("terminal");
6091 if let Some(cmd) = opts.cmd {
6092 query = query.arg("cmd", cmd);
6093 }
6094 if let Some(disable_dagger_in_dagger) = opts.disable_dagger_in_dagger {
6095 query = query.arg("disableDaggerInDagger", disable_dagger_in_dagger);
6096 }
6097 if let Some(experimental_privileged_nesting) = opts.experimental_privileged_nesting {
6098 query = query.arg(
6099 "experimentalPrivilegedNesting",
6100 experimental_privileged_nesting,
6101 );
6102 }
6103 if let Some(insecure_root_capabilities) = opts.insecure_root_capabilities {
6104 query = query.arg("insecureRootCapabilities", insecure_root_capabilities);
6105 }
6106 Container {
6107 proc: self.proc.clone(),
6108 selection: query,
6109 graphql_client: self.graphql_client.clone(),
6110 }
6111 }
6112 pub fn with_gpu(&self) -> Container {
6115 let query = self.selection.select("withGPU");
6116 Container {
6117 proc: self.proc.clone(),
6118 selection: query,
6119 graphql_client: self.graphql_client.clone(),
6120 }
6121 }
6122 pub fn experimental_with_gpu(&self, devices: Vec<impl Into<String>>) -> Container {
6129 let mut query = self.selection.select("experimentalWithGPU");
6130 query = query.arg(
6131 "devices",
6132 devices
6133 .into_iter()
6134 .map(|i| i.into())
6135 .collect::<Vec<String>>(),
6136 );
6137 Container {
6138 proc: self.proc.clone(),
6139 selection: query,
6140 graphql_client: self.graphql_client.clone(),
6141 }
6142 }
6143 pub fn experimental_with_all_gp_us(&self) -> Container {
6146 let query = self.selection.select("experimentalWithAllGPUs");
6147 Container {
6148 proc: self.proc.clone(),
6149 selection: query,
6150 graphql_client: self.graphql_client.clone(),
6151 }
6152 }
6153 pub fn as_service(&self) -> Service {
6160 let query = self.selection.select("asService");
6161 Service {
6162 proc: self.proc.clone(),
6163 selection: query,
6164 graphql_client: self.graphql_client.clone(),
6165 }
6166 }
6167 pub fn as_service_opts<'a>(&self, opts: ContainerAsServiceOpts<'a>) -> Service {
6174 let mut query = self.selection.select("asService");
6175 if let Some(args) = opts.args {
6176 query = query.arg("args", args);
6177 }
6178 if let Some(use_entrypoint) = opts.use_entrypoint {
6179 query = query.arg("useEntrypoint", use_entrypoint);
6180 }
6181 if let Some(disable_dagger_in_dagger) = opts.disable_dagger_in_dagger {
6182 query = query.arg("disableDaggerInDagger", disable_dagger_in_dagger);
6183 }
6184 if let Some(experimental_privileged_nesting) = opts.experimental_privileged_nesting {
6185 query = query.arg(
6186 "experimentalPrivilegedNesting",
6187 experimental_privileged_nesting,
6188 );
6189 }
6190 if let Some(dagger_in_dagger_new_session) = opts.dagger_in_dagger_new_session {
6191 query = query.arg("daggerInDaggerNewSession", dagger_in_dagger_new_session);
6192 }
6193 if let Some(insecure_root_capabilities) = opts.insecure_root_capabilities {
6194 query = query.arg("insecureRootCapabilities", insecure_root_capabilities);
6195 }
6196 if let Some(expand) = opts.expand {
6197 query = query.arg("expand", expand);
6198 }
6199 if let Some(no_init) = opts.no_init {
6200 query = query.arg("noInit", no_init);
6201 }
6202 Service {
6203 proc: self.proc.clone(),
6204 selection: query,
6205 graphql_client: self.graphql_client.clone(),
6206 }
6207 }
6208 pub async fn up(&self) -> Result<Void, DaggerError> {
6215 let query = self.selection.select("up");
6216 query.execute(self.graphql_client.clone()).await
6217 }
6218 pub async fn up_opts<'a>(&self, opts: ContainerUpOpts<'a>) -> Result<Void, DaggerError> {
6225 let mut query = self.selection.select("up");
6226 if let Some(random) = opts.random {
6227 query = query.arg("random", random);
6228 }
6229 if let Some(ports) = opts.ports {
6230 query = query.arg("ports", ports);
6231 }
6232 if let Some(args) = opts.args {
6233 query = query.arg("args", args);
6234 }
6235 if let Some(use_entrypoint) = opts.use_entrypoint {
6236 query = query.arg("useEntrypoint", use_entrypoint);
6237 }
6238 if let Some(disable_dagger_in_dagger) = opts.disable_dagger_in_dagger {
6239 query = query.arg("disableDaggerInDagger", disable_dagger_in_dagger);
6240 }
6241 if let Some(experimental_privileged_nesting) = opts.experimental_privileged_nesting {
6242 query = query.arg(
6243 "experimentalPrivilegedNesting",
6244 experimental_privileged_nesting,
6245 );
6246 }
6247 if let Some(dagger_in_dagger_new_session) = opts.dagger_in_dagger_new_session {
6248 query = query.arg("daggerInDaggerNewSession", dagger_in_dagger_new_session);
6249 }
6250 if let Some(insecure_root_capabilities) = opts.insecure_root_capabilities {
6251 query = query.arg("insecureRootCapabilities", insecure_root_capabilities);
6252 }
6253 if let Some(expand) = opts.expand {
6254 query = query.arg("expand", expand);
6255 }
6256 if let Some(no_init) = opts.no_init {
6257 query = query.arg("noInit", no_init);
6258 }
6259 query.execute(self.graphql_client.clone()).await
6260 }
6261}
6262impl Exportable for Container {
6263 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
6264 let query = self.selection.select("id");
6265 let graphql_client = self.graphql_client.clone();
6266 async move { query.execute(graphql_client).await }
6267 }
6268 fn export(
6269 &self,
6270 path: impl Into<String>,
6271 ) -> impl core::future::Future<Output = Result<String, DaggerError>> + Send {
6272 let mut query = self.selection.select("export");
6273 query = query.arg("path", path.into());
6274 let graphql_client = self.graphql_client.clone();
6275 async move { query.execute(graphql_client).await }
6276 }
6277}
6278impl Node for Container {
6279 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
6280 let query = self.selection.select("id");
6281 let graphql_client = self.graphql_client.clone();
6282 async move { query.execute(graphql_client).await }
6283 }
6284}
6285impl Syncer for Container {
6286 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
6287 let query = self.selection.select("id");
6288 let graphql_client = self.graphql_client.clone();
6289 async move { query.execute(graphql_client).await }
6290 }
6291 fn sync(&self) -> impl core::future::Future<Output = Result<Self, DaggerError>> + Send {
6292 let query = self.selection.select("sync");
6293 let proc = self.proc.clone();
6294 let graphql_client = self.graphql_client.clone();
6295 async move {
6296 let id: Id = query.execute(graphql_client.clone()).await?;
6297 Ok(Self {
6298 proc,
6299 selection: query
6300 .root()
6301 .select("node")
6302 .arg("id", &id.0)
6303 .inline_fragment("Container"),
6304 graphql_client,
6305 })
6306 }
6307 }
6308}
6309#[derive(Clone)]
6310pub struct CurrentModule {
6311 pub proc: Option<Arc<DaggerSessionProc>>,
6312 pub selection: Selection,
6313 pub graphql_client: DynGraphQLClient,
6314}
6315#[derive(Builder, Debug, PartialEq)]
6316pub struct CurrentModuleWorkdirOpts<'a> {
6317 #[builder(setter(into, strip_option), default)]
6319 pub exclude: Option<Vec<&'a str>>,
6320 #[builder(setter(into, strip_option), default)]
6322 pub gitignore: Option<bool>,
6323 #[builder(setter(into, strip_option), default)]
6325 pub include: Option<Vec<&'a str>>,
6326}
6327impl IntoID<Id> for CurrentModule {
6328 fn into_id(
6329 self,
6330 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
6331 Box::pin(async move { self.id().await })
6332 }
6333}
6334impl Loadable for CurrentModule {
6335 fn graphql_type() -> &'static str {
6336 "CurrentModule"
6337 }
6338 fn from_query(
6339 proc: Option<Arc<DaggerSessionProc>>,
6340 selection: Selection,
6341 graphql_client: DynGraphQLClient,
6342 ) -> Self {
6343 Self {
6344 proc,
6345 selection,
6346 graphql_client,
6347 }
6348 }
6349}
6350impl CurrentModule {
6351 pub async fn id(&self) -> Result<Id, DaggerError> {
6353 let query = self.selection.select("id");
6354 query.execute(self.graphql_client.clone()).await
6355 }
6356 pub fn context_directory(&self) -> Directory {
6359 let query = self.selection.select("contextDirectory");
6360 Directory {
6361 proc: self.proc.clone(),
6362 selection: query,
6363 graphql_client: self.graphql_client.clone(),
6364 }
6365 }
6366 pub async fn dependencies(&self) -> Result<Vec<Module>, DaggerError> {
6368 let query = self.selection.select("dependencies");
6369 let query = query.select("id");
6370 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
6371 Ok(ids
6372 .into_iter()
6373 .map(|id| Module {
6374 proc: self.proc.clone(),
6375 selection: crate::querybuilder::query()
6376 .select("node")
6377 .arg("id", &id.0)
6378 .inline_fragment("Module"),
6379 graphql_client: self.graphql_client.clone(),
6380 })
6381 .collect())
6382 }
6383 pub fn generated_context_directory(&self) -> Directory {
6385 let query = self.selection.select("generatedContextDirectory");
6386 Directory {
6387 proc: self.proc.clone(),
6388 selection: query,
6389 graphql_client: self.graphql_client.clone(),
6390 }
6391 }
6392 pub async fn name(&self) -> Result<String, DaggerError> {
6394 let query = self.selection.select("name");
6395 query.execute(self.graphql_client.clone()).await
6396 }
6397 pub fn source(&self) -> Directory {
6399 let query = self.selection.select("source");
6400 Directory {
6401 proc: self.proc.clone(),
6402 selection: query,
6403 graphql_client: self.graphql_client.clone(),
6404 }
6405 }
6406 pub async fn source_subpath(&self) -> Result<String, DaggerError> {
6408 let query = self.selection.select("sourceSubpath");
6409 query.execute(self.graphql_client.clone()).await
6410 }
6411 pub fn workdir(&self, path: impl Into<String>) -> Directory {
6418 let mut query = self.selection.select("workdir");
6419 query = query.arg("path", path.into());
6420 Directory {
6421 proc: self.proc.clone(),
6422 selection: query,
6423 graphql_client: self.graphql_client.clone(),
6424 }
6425 }
6426 pub fn workdir_opts<'a>(
6433 &self,
6434 path: impl Into<String>,
6435 opts: CurrentModuleWorkdirOpts<'a>,
6436 ) -> Directory {
6437 let mut query = self.selection.select("workdir");
6438 query = query.arg("path", path.into());
6439 if let Some(exclude) = opts.exclude {
6440 query = query.arg("exclude", exclude);
6441 }
6442 if let Some(include) = opts.include {
6443 query = query.arg("include", include);
6444 }
6445 if let Some(gitignore) = opts.gitignore {
6446 query = query.arg("gitignore", gitignore);
6447 }
6448 Directory {
6449 proc: self.proc.clone(),
6450 selection: query,
6451 graphql_client: self.graphql_client.clone(),
6452 }
6453 }
6454 pub fn workdir_file(&self, path: impl Into<String>) -> File {
6460 let mut query = self.selection.select("workdirFile");
6461 query = query.arg("path", path.into());
6462 File {
6463 proc: self.proc.clone(),
6464 selection: query,
6465 graphql_client: self.graphql_client.clone(),
6466 }
6467 }
6468}
6469impl Node for CurrentModule {
6470 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
6471 let query = self.selection.select("id");
6472 let graphql_client = self.graphql_client.clone();
6473 async move { query.execute(graphql_client).await }
6474 }
6475}
6476#[derive(Clone)]
6477pub struct DiffStat {
6478 pub proc: Option<Arc<DaggerSessionProc>>,
6479 pub selection: Selection,
6480 pub graphql_client: DynGraphQLClient,
6481}
6482impl IntoID<Id> for DiffStat {
6483 fn into_id(
6484 self,
6485 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
6486 Box::pin(async move { self.id().await })
6487 }
6488}
6489impl Loadable for DiffStat {
6490 fn graphql_type() -> &'static str {
6491 "DiffStat"
6492 }
6493 fn from_query(
6494 proc: Option<Arc<DaggerSessionProc>>,
6495 selection: Selection,
6496 graphql_client: DynGraphQLClient,
6497 ) -> Self {
6498 Self {
6499 proc,
6500 selection,
6501 graphql_client,
6502 }
6503 }
6504}
6505impl DiffStat {
6506 pub async fn id(&self) -> Result<Id, DaggerError> {
6508 let query = self.selection.select("id");
6509 query.execute(self.graphql_client.clone()).await
6510 }
6511 pub async fn path(&self) -> Result<String, DaggerError> {
6513 let query = self.selection.select("path");
6514 query.execute(self.graphql_client.clone()).await
6515 }
6516 pub async fn old_path(&self) -> Result<String, DaggerError> {
6518 let query = self.selection.select("oldPath");
6519 query.execute(self.graphql_client.clone()).await
6520 }
6521 pub async fn kind(&self) -> Result<DiffStatKind, DaggerError> {
6523 let query = self.selection.select("kind");
6524 query.execute(self.graphql_client.clone()).await
6525 }
6526 pub async fn added_lines(&self) -> Result<isize, DaggerError> {
6528 let query = self.selection.select("addedLines");
6529 query.execute(self.graphql_client.clone()).await
6530 }
6531 pub async fn removed_lines(&self) -> Result<isize, DaggerError> {
6533 let query = self.selection.select("removedLines");
6534 query.execute(self.graphql_client.clone()).await
6535 }
6536}
6537impl Node for DiffStat {
6538 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
6539 let query = self.selection.select("id");
6540 let graphql_client = self.graphql_client.clone();
6541 async move { query.execute(graphql_client).await }
6542 }
6543}
6544#[derive(Clone)]
6545pub struct Directory {
6546 pub proc: Option<Arc<DaggerSessionProc>>,
6547 pub selection: Selection,
6548 pub graphql_client: DynGraphQLClient,
6549}
6550#[derive(Builder, Debug, PartialEq)]
6551pub struct DirectoryEntriesOpts<'a> {
6552 #[builder(setter(into, strip_option), default)]
6554 pub path: Option<&'a str>,
6555}
6556#[derive(Builder, Debug, PartialEq)]
6557pub struct DirectorySearchOpts<'a> {
6558 #[builder(setter(into, strip_option), default)]
6560 pub dotall: Option<bool>,
6561 #[builder(setter(into, strip_option), default)]
6563 pub files_only: Option<bool>,
6564 #[builder(setter(into, strip_option), default)]
6566 pub globs: Option<Vec<&'a str>>,
6567 #[builder(setter(into, strip_option), default)]
6569 pub insensitive: Option<bool>,
6570 #[builder(setter(into, strip_option), default)]
6572 pub limit: Option<isize>,
6573 #[builder(setter(into, strip_option), default)]
6575 pub literal: Option<bool>,
6576 #[builder(setter(into, strip_option), default)]
6578 pub multiline: Option<bool>,
6579 #[builder(setter(into, strip_option), default)]
6581 pub paths: Option<Vec<&'a str>>,
6582 #[builder(setter(into, strip_option), default)]
6584 pub skip_hidden: Option<bool>,
6585 #[builder(setter(into, strip_option), default)]
6587 pub skip_ignored: Option<bool>,
6588}
6589#[derive(Builder, Debug, PartialEq)]
6590pub struct DirectoryWithFileOpts<'a> {
6591 #[builder(setter(into, strip_option), default)]
6595 pub owner: Option<&'a str>,
6596 #[builder(setter(into, strip_option), default)]
6598 pub permissions: Option<isize>,
6599}
6600#[derive(Builder, Debug, PartialEq)]
6601pub struct DirectoryWithFilesOpts {
6602 #[builder(setter(into, strip_option), default)]
6604 pub permissions: Option<isize>,
6605}
6606#[derive(Builder, Debug, PartialEq)]
6607pub struct DirectoryWithNewFileOpts {
6608 #[builder(setter(into, strip_option), default)]
6610 pub permissions: Option<isize>,
6611}
6612#[derive(Builder, Debug, PartialEq)]
6613pub struct DirectoryExistsOpts {
6614 #[builder(setter(into, strip_option), default)]
6616 pub do_not_follow_symlinks: Option<bool>,
6617 #[builder(setter(into, strip_option), default)]
6619 pub expected_type: Option<ExistsType>,
6620}
6621#[derive(Builder, Debug, PartialEq)]
6622pub struct DirectoryStatOpts {
6623 #[builder(setter(into, strip_option), default)]
6625 pub do_not_follow_symlinks: Option<bool>,
6626}
6627#[derive(Builder, Debug, PartialEq)]
6628pub struct DirectoryWithDirectoryOpts<'a> {
6629 #[builder(setter(into, strip_option), default)]
6631 pub exclude: Option<Vec<&'a str>>,
6632 #[builder(setter(into, strip_option), default)]
6634 pub gitignore: Option<bool>,
6635 #[builder(setter(into, strip_option), default)]
6637 pub include: Option<Vec<&'a str>>,
6638 #[builder(setter(into, strip_option), default)]
6642 pub owner: Option<&'a str>,
6643 #[builder(setter(into, strip_option), default)]
6645 pub permissions: Option<isize>,
6646}
6647#[derive(Builder, Debug, PartialEq)]
6648pub struct DirectoryFilterOpts<'a> {
6649 #[builder(setter(into, strip_option), default)]
6651 pub exclude: Option<Vec<&'a str>>,
6652 #[builder(setter(into, strip_option), default)]
6654 pub gitignore: Option<bool>,
6655 #[builder(setter(into, strip_option), default)]
6657 pub include: Option<Vec<&'a str>>,
6658}
6659#[derive(Builder, Debug, PartialEq)]
6660pub struct DirectoryWithNewDirectoryOpts {
6661 #[builder(setter(into, strip_option), default)]
6663 pub permissions: Option<isize>,
6664}
6665#[derive(Builder, Debug, PartialEq)]
6666pub struct DirectoryExportOpts {
6667 #[builder(setter(into, strip_option), default)]
6669 pub wipe: Option<bool>,
6670}
6671#[derive(Builder, Debug, PartialEq)]
6672pub struct DirectoryDockerBuildOpts<'a> {
6673 #[builder(setter(into, strip_option), default)]
6675 pub build_args: Option<Vec<BuildArg>>,
6676 #[builder(setter(into, strip_option), default)]
6678 pub dockerfile: Option<&'a str>,
6679 #[builder(setter(into, strip_option), default)]
6682 pub no_init: Option<bool>,
6683 #[builder(setter(into, strip_option), default)]
6685 pub platform: Option<Platform>,
6686 #[builder(setter(into, strip_option), default)]
6689 pub secrets: Option<Vec<Id>>,
6690 #[builder(setter(into, strip_option), default)]
6694 pub ssh: Option<Id>,
6695 #[builder(setter(into, strip_option), default)]
6697 pub target: Option<&'a str>,
6698}
6699#[derive(Builder, Debug, PartialEq)]
6700pub struct DirectoryWithPatchOpts {
6701 #[builder(setter(into, strip_option), default)]
6703 pub on_conflict: Option<PatchConflict>,
6704}
6705#[derive(Builder, Debug, PartialEq)]
6706pub struct DirectoryWithPatchFileOpts {
6707 #[builder(setter(into, strip_option), default)]
6709 pub on_conflict: Option<PatchConflict>,
6710}
6711#[derive(Builder, Debug, PartialEq)]
6712pub struct DirectoryAsWorkspaceOpts<'a> {
6713 #[builder(setter(into, strip_option), default)]
6715 pub cwd: Option<&'a str>,
6716}
6717#[derive(Builder, Debug, PartialEq)]
6718pub struct DirectoryTerminalOpts<'a> {
6719 #[builder(setter(into, strip_option), default)]
6721 pub cmd: Option<Vec<&'a str>>,
6722 #[builder(setter(into, strip_option), default)]
6724 pub container: Option<Id>,
6725 #[builder(setter(into, strip_option), default)]
6727 pub disable_dagger_in_dagger: Option<bool>,
6728 #[builder(setter(into, strip_option), default)]
6729 pub experimental_privileged_nesting: Option<bool>,
6730 #[builder(setter(into, strip_option), default)]
6732 pub insecure_root_capabilities: Option<bool>,
6733}
6734#[derive(Builder, Debug, PartialEq)]
6735pub struct DirectoryAsModuleOpts<'a> {
6736 #[builder(setter(into, strip_option), default)]
6739 pub source_root_path: Option<&'a str>,
6740}
6741#[derive(Builder, Debug, PartialEq)]
6742pub struct DirectoryAsModuleSourceOpts<'a> {
6743 #[builder(setter(into, strip_option), default)]
6746 pub source_root_path: Option<&'a str>,
6747}
6748impl IntoID<Id> for Directory {
6749 fn into_id(
6750 self,
6751 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
6752 Box::pin(async move { self.id().await })
6753 }
6754}
6755impl Loadable for Directory {
6756 fn graphql_type() -> &'static str {
6757 "Directory"
6758 }
6759 fn from_query(
6760 proc: Option<Arc<DaggerSessionProc>>,
6761 selection: Selection,
6762 graphql_client: DynGraphQLClient,
6763 ) -> Self {
6764 Self {
6765 proc,
6766 selection,
6767 graphql_client,
6768 }
6769 }
6770}
6771impl Directory {
6772 pub async fn id(&self) -> Result<Id, DaggerError> {
6774 let query = self.selection.select("id");
6775 query.execute(self.graphql_client.clone()).await
6776 }
6777 pub async fn sync(&self) -> Result<Directory, DaggerError> {
6779 let query = self.selection.select("sync");
6780 let id: Id = query.execute(self.graphql_client.clone()).await?;
6781 Ok(Directory {
6782 proc: self.proc.clone(),
6783 selection: query
6784 .root()
6785 .select("node")
6786 .arg("id", &id.0)
6787 .inline_fragment("Directory"),
6788 graphql_client: self.graphql_client.clone(),
6789 })
6790 }
6791 pub async fn name(&self) -> Result<String, DaggerError> {
6793 let query = self.selection.select("name");
6794 query.execute(self.graphql_client.clone()).await
6795 }
6796 pub async fn entries(&self) -> Result<Vec<String>, DaggerError> {
6802 let query = self.selection.select("entries");
6803 query.execute(self.graphql_client.clone()).await
6804 }
6805 pub async fn entries_opts<'a>(
6811 &self,
6812 opts: DirectoryEntriesOpts<'a>,
6813 ) -> Result<Vec<String>, DaggerError> {
6814 let mut query = self.selection.select("entries");
6815 if let Some(path) = opts.path {
6816 query = query.arg("path", path);
6817 }
6818 query.execute(self.graphql_client.clone()).await
6819 }
6820 pub async fn glob(&self, pattern: impl Into<String>) -> Result<Vec<String>, DaggerError> {
6826 let mut query = self.selection.select("glob");
6827 query = query.arg("pattern", pattern.into());
6828 query.execute(self.graphql_client.clone()).await
6829 }
6830 pub async fn search(
6838 &self,
6839 pattern: impl Into<String>,
6840 ) -> Result<Vec<SearchResult>, DaggerError> {
6841 let mut query = self.selection.select("search");
6842 query = query.arg("pattern", pattern.into());
6843 let query = query.select("id");
6844 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
6845 Ok(ids
6846 .into_iter()
6847 .map(|id| SearchResult {
6848 proc: self.proc.clone(),
6849 selection: crate::querybuilder::query()
6850 .select("node")
6851 .arg("id", &id.0)
6852 .inline_fragment("SearchResult"),
6853 graphql_client: self.graphql_client.clone(),
6854 })
6855 .collect())
6856 }
6857 pub async fn search_opts<'a>(
6865 &self,
6866 pattern: impl Into<String>,
6867 opts: DirectorySearchOpts<'a>,
6868 ) -> Result<Vec<SearchResult>, DaggerError> {
6869 let mut query = self.selection.select("search");
6870 query = query.arg("pattern", pattern.into());
6871 if let Some(paths) = opts.paths {
6872 query = query.arg("paths", paths);
6873 }
6874 if let Some(globs) = opts.globs {
6875 query = query.arg("globs", globs);
6876 }
6877 if let Some(literal) = opts.literal {
6878 query = query.arg("literal", literal);
6879 }
6880 if let Some(multiline) = opts.multiline {
6881 query = query.arg("multiline", multiline);
6882 }
6883 if let Some(dotall) = opts.dotall {
6884 query = query.arg("dotall", dotall);
6885 }
6886 if let Some(insensitive) = opts.insensitive {
6887 query = query.arg("insensitive", insensitive);
6888 }
6889 if let Some(skip_ignored) = opts.skip_ignored {
6890 query = query.arg("skipIgnored", skip_ignored);
6891 }
6892 if let Some(skip_hidden) = opts.skip_hidden {
6893 query = query.arg("skipHidden", skip_hidden);
6894 }
6895 if let Some(files_only) = opts.files_only {
6896 query = query.arg("filesOnly", files_only);
6897 }
6898 if let Some(limit) = opts.limit {
6899 query = query.arg("limit", limit);
6900 }
6901 let query = query.select("id");
6902 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
6903 Ok(ids
6904 .into_iter()
6905 .map(|id| SearchResult {
6906 proc: self.proc.clone(),
6907 selection: crate::querybuilder::query()
6908 .select("node")
6909 .arg("id", &id.0)
6910 .inline_fragment("SearchResult"),
6911 graphql_client: self.graphql_client.clone(),
6912 })
6913 .collect())
6914 }
6915 pub async fn digest(&self) -> Result<String, DaggerError> {
6917 let query = self.selection.select("digest");
6918 query.execute(self.graphql_client.clone()).await
6919 }
6920 pub fn file(&self, path: impl Into<String>) -> File {
6926 let mut query = self.selection.select("file");
6927 query = query.arg("path", path.into());
6928 File {
6929 proc: self.proc.clone(),
6930 selection: query,
6931 graphql_client: self.graphql_client.clone(),
6932 }
6933 }
6934 pub fn with_file(&self, path: impl Into<String>, source: impl IntoID<Id>) -> Directory {
6942 let mut query = self.selection.select("withFile");
6943 query = query.arg("path", path.into());
6944 query = query.arg_lazy(
6945 "source",
6946 Box::new(move || {
6947 let source = source.clone();
6948 Box::pin(async move { source.into_id().await.unwrap().quote() })
6949 }),
6950 );
6951 Directory {
6952 proc: self.proc.clone(),
6953 selection: query,
6954 graphql_client: self.graphql_client.clone(),
6955 }
6956 }
6957 pub fn with_file_opts<'a>(
6965 &self,
6966 path: impl Into<String>,
6967 source: impl IntoID<Id>,
6968 opts: DirectoryWithFileOpts<'a>,
6969 ) -> Directory {
6970 let mut query = self.selection.select("withFile");
6971 query = query.arg("path", path.into());
6972 query = query.arg_lazy(
6973 "source",
6974 Box::new(move || {
6975 let source = source.clone();
6976 Box::pin(async move { source.into_id().await.unwrap().quote() })
6977 }),
6978 );
6979 if let Some(permissions) = opts.permissions {
6980 query = query.arg("permissions", permissions);
6981 }
6982 if let Some(owner) = opts.owner {
6983 query = query.arg("owner", owner);
6984 }
6985 Directory {
6986 proc: self.proc.clone(),
6987 selection: query,
6988 graphql_client: self.graphql_client.clone(),
6989 }
6990 }
6991 pub fn with_files(&self, path: impl Into<String>, sources: Vec<Id>) -> Directory {
6999 let mut query = self.selection.select("withFiles");
7000 query = query.arg("path", path.into());
7001 query = query.arg("sources", sources);
7002 Directory {
7003 proc: self.proc.clone(),
7004 selection: query,
7005 graphql_client: self.graphql_client.clone(),
7006 }
7007 }
7008 pub fn with_files_opts(
7016 &self,
7017 path: impl Into<String>,
7018 sources: Vec<Id>,
7019 opts: DirectoryWithFilesOpts,
7020 ) -> Directory {
7021 let mut query = self.selection.select("withFiles");
7022 query = query.arg("path", path.into());
7023 query = query.arg("sources", sources);
7024 if let Some(permissions) = opts.permissions {
7025 query = query.arg("permissions", permissions);
7026 }
7027 Directory {
7028 proc: self.proc.clone(),
7029 selection: query,
7030 graphql_client: self.graphql_client.clone(),
7031 }
7032 }
7033 pub fn with_new_file(&self, path: impl Into<String>, contents: impl Into<String>) -> Directory {
7041 let mut query = self.selection.select("withNewFile");
7042 query = query.arg("path", path.into());
7043 query = query.arg("contents", contents.into());
7044 Directory {
7045 proc: self.proc.clone(),
7046 selection: query,
7047 graphql_client: self.graphql_client.clone(),
7048 }
7049 }
7050 pub fn with_new_file_opts(
7058 &self,
7059 path: impl Into<String>,
7060 contents: impl Into<String>,
7061 opts: DirectoryWithNewFileOpts,
7062 ) -> Directory {
7063 let mut query = self.selection.select("withNewFile");
7064 query = query.arg("path", path.into());
7065 query = query.arg("contents", contents.into());
7066 if let Some(permissions) = opts.permissions {
7067 query = query.arg("permissions", permissions);
7068 }
7069 Directory {
7070 proc: self.proc.clone(),
7071 selection: query,
7072 graphql_client: self.graphql_client.clone(),
7073 }
7074 }
7075 pub fn without_file(&self, path: impl Into<String>) -> Directory {
7081 let mut query = self.selection.select("withoutFile");
7082 query = query.arg("path", path.into());
7083 Directory {
7084 proc: self.proc.clone(),
7085 selection: query,
7086 graphql_client: self.graphql_client.clone(),
7087 }
7088 }
7089 pub fn without_files(&self, paths: Vec<impl Into<String>>) -> Directory {
7095 let mut query = self.selection.select("withoutFiles");
7096 query = query.arg(
7097 "paths",
7098 paths.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
7099 );
7100 Directory {
7101 proc: self.proc.clone(),
7102 selection: query,
7103 graphql_client: self.graphql_client.clone(),
7104 }
7105 }
7106 pub async fn exists(&self, path: impl Into<String>) -> Result<bool, DaggerError> {
7113 let mut query = self.selection.select("exists");
7114 query = query.arg("path", path.into());
7115 query.execute(self.graphql_client.clone()).await
7116 }
7117 pub async fn exists_opts(
7124 &self,
7125 path: impl Into<String>,
7126 opts: DirectoryExistsOpts,
7127 ) -> Result<bool, DaggerError> {
7128 let mut query = self.selection.select("exists");
7129 query = query.arg("path", path.into());
7130 if let Some(expected_type) = opts.expected_type {
7131 query = query.arg("expectedType", expected_type);
7132 }
7133 if let Some(do_not_follow_symlinks) = opts.do_not_follow_symlinks {
7134 query = query.arg("doNotFollowSymlinks", do_not_follow_symlinks);
7135 }
7136 query.execute(self.graphql_client.clone()).await
7137 }
7138 pub async fn stat(&self, path: impl Into<String>) -> Result<Option<Stat>, DaggerError> {
7145 let mut query = self.selection.select("stat");
7146 query = query.arg("path", path.into());
7147 let query = query.select("id");
7148 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
7149 Ok(id.map(|id| Stat {
7150 proc: self.proc.clone(),
7151 selection: query
7152 .root()
7153 .select("node")
7154 .arg("id", &id.0)
7155 .inline_fragment("Stat"),
7156 graphql_client: self.graphql_client.clone(),
7157 }))
7158 }
7159 pub async fn stat_opts(
7166 &self,
7167 path: impl Into<String>,
7168 opts: DirectoryStatOpts,
7169 ) -> Result<Option<Stat>, DaggerError> {
7170 let mut query = self.selection.select("stat");
7171 query = query.arg("path", path.into());
7172 if let Some(do_not_follow_symlinks) = opts.do_not_follow_symlinks {
7173 query = query.arg("doNotFollowSymlinks", do_not_follow_symlinks);
7174 }
7175 let query = query.select("id");
7176 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
7177 Ok(id.map(|id| Stat {
7178 proc: self.proc.clone(),
7179 selection: query
7180 .root()
7181 .select("node")
7182 .arg("id", &id.0)
7183 .inline_fragment("Stat"),
7184 graphql_client: self.graphql_client.clone(),
7185 }))
7186 }
7187 pub fn directory(&self, path: impl Into<String>) -> Directory {
7193 let mut query = self.selection.select("directory");
7194 query = query.arg("path", path.into());
7195 Directory {
7196 proc: self.proc.clone(),
7197 selection: query,
7198 graphql_client: self.graphql_client.clone(),
7199 }
7200 }
7201 pub fn with_directory(&self, path: impl Into<String>, source: impl IntoID<Id>) -> Directory {
7209 let mut query = self.selection.select("withDirectory");
7210 query = query.arg("path", path.into());
7211 query = query.arg_lazy(
7212 "source",
7213 Box::new(move || {
7214 let source = source.clone();
7215 Box::pin(async move { source.into_id().await.unwrap().quote() })
7216 }),
7217 );
7218 Directory {
7219 proc: self.proc.clone(),
7220 selection: query,
7221 graphql_client: self.graphql_client.clone(),
7222 }
7223 }
7224 pub fn with_directory_opts<'a>(
7232 &self,
7233 path: impl Into<String>,
7234 source: impl IntoID<Id>,
7235 opts: DirectoryWithDirectoryOpts<'a>,
7236 ) -> Directory {
7237 let mut query = self.selection.select("withDirectory");
7238 query = query.arg("path", path.into());
7239 query = query.arg_lazy(
7240 "source",
7241 Box::new(move || {
7242 let source = source.clone();
7243 Box::pin(async move { source.into_id().await.unwrap().quote() })
7244 }),
7245 );
7246 if let Some(exclude) = opts.exclude {
7247 query = query.arg("exclude", exclude);
7248 }
7249 if let Some(include) = opts.include {
7250 query = query.arg("include", include);
7251 }
7252 if let Some(gitignore) = opts.gitignore {
7253 query = query.arg("gitignore", gitignore);
7254 }
7255 if let Some(owner) = opts.owner {
7256 query = query.arg("owner", owner);
7257 }
7258 if let Some(permissions) = opts.permissions {
7259 query = query.arg("permissions", permissions);
7260 }
7261 Directory {
7262 proc: self.proc.clone(),
7263 selection: query,
7264 graphql_client: self.graphql_client.clone(),
7265 }
7266 }
7267 pub fn filter(&self) -> Directory {
7273 let query = self.selection.select("filter");
7274 Directory {
7275 proc: self.proc.clone(),
7276 selection: query,
7277 graphql_client: self.graphql_client.clone(),
7278 }
7279 }
7280 pub fn filter_opts<'a>(&self, opts: DirectoryFilterOpts<'a>) -> Directory {
7286 let mut query = self.selection.select("filter");
7287 if let Some(exclude) = opts.exclude {
7288 query = query.arg("exclude", exclude);
7289 }
7290 if let Some(include) = opts.include {
7291 query = query.arg("include", include);
7292 }
7293 if let Some(gitignore) = opts.gitignore {
7294 query = query.arg("gitignore", gitignore);
7295 }
7296 Directory {
7297 proc: self.proc.clone(),
7298 selection: query,
7299 graphql_client: self.graphql_client.clone(),
7300 }
7301 }
7302 pub fn with_new_directory(&self, path: impl Into<String>) -> Directory {
7309 let mut query = self.selection.select("withNewDirectory");
7310 query = query.arg("path", path.into());
7311 Directory {
7312 proc: self.proc.clone(),
7313 selection: query,
7314 graphql_client: self.graphql_client.clone(),
7315 }
7316 }
7317 pub fn with_new_directory_opts(
7324 &self,
7325 path: impl Into<String>,
7326 opts: DirectoryWithNewDirectoryOpts,
7327 ) -> Directory {
7328 let mut query = self.selection.select("withNewDirectory");
7329 query = query.arg("path", path.into());
7330 if let Some(permissions) = opts.permissions {
7331 query = query.arg("permissions", permissions);
7332 }
7333 Directory {
7334 proc: self.proc.clone(),
7335 selection: query,
7336 graphql_client: self.graphql_client.clone(),
7337 }
7338 }
7339 pub fn without_directory(&self, path: impl Into<String>) -> Directory {
7345 let mut query = self.selection.select("withoutDirectory");
7346 query = query.arg("path", path.into());
7347 Directory {
7348 proc: self.proc.clone(),
7349 selection: query,
7350 graphql_client: self.graphql_client.clone(),
7351 }
7352 }
7353 pub fn diff(&self, other: impl IntoID<Id>) -> Directory {
7359 let mut query = self.selection.select("diff");
7360 query = query.arg_lazy(
7361 "other",
7362 Box::new(move || {
7363 let other = other.clone();
7364 Box::pin(async move { other.into_id().await.unwrap().quote() })
7365 }),
7366 );
7367 Directory {
7368 proc: self.proc.clone(),
7369 selection: query,
7370 graphql_client: self.graphql_client.clone(),
7371 }
7372 }
7373 pub async fn find_up(
7380 &self,
7381 name: impl Into<String>,
7382 start: impl Into<String>,
7383 ) -> Result<String, DaggerError> {
7384 let mut query = self.selection.select("findUp");
7385 query = query.arg("name", name.into());
7386 query = query.arg("start", start.into());
7387 query.execute(self.graphql_client.clone()).await
7388 }
7389 pub fn changes(&self, from: impl IntoID<Id>) -> Changeset {
7396 let mut query = self.selection.select("changes");
7397 query = query.arg_lazy(
7398 "from",
7399 Box::new(move || {
7400 let from = from.clone();
7401 Box::pin(async move { from.into_id().await.unwrap().quote() })
7402 }),
7403 );
7404 Changeset {
7405 proc: self.proc.clone(),
7406 selection: query,
7407 graphql_client: self.graphql_client.clone(),
7408 }
7409 }
7410 pub fn with_changes(&self, changes: impl IntoID<Id>) -> Directory {
7416 let mut query = self.selection.select("withChanges");
7417 query = query.arg_lazy(
7418 "changes",
7419 Box::new(move || {
7420 let changes = changes.clone();
7421 Box::pin(async move { changes.into_id().await.unwrap().quote() })
7422 }),
7423 );
7424 Directory {
7425 proc: self.proc.clone(),
7426 selection: query,
7427 graphql_client: self.graphql_client.clone(),
7428 }
7429 }
7430 pub async fn export(&self, path: impl Into<String>) -> Result<String, DaggerError> {
7437 let mut query = self.selection.select("export");
7438 query = query.arg("path", path.into());
7439 query.execute(self.graphql_client.clone()).await
7440 }
7441 pub async fn export_opts(
7448 &self,
7449 path: impl Into<String>,
7450 opts: DirectoryExportOpts,
7451 ) -> Result<String, DaggerError> {
7452 let mut query = self.selection.select("export");
7453 query = query.arg("path", path.into());
7454 if let Some(wipe) = opts.wipe {
7455 query = query.arg("wipe", wipe);
7456 }
7457 query.execute(self.graphql_client.clone()).await
7458 }
7459 pub fn docker_build(&self) -> Container {
7465 let query = self.selection.select("dockerBuild");
7466 Container {
7467 proc: self.proc.clone(),
7468 selection: query,
7469 graphql_client: self.graphql_client.clone(),
7470 }
7471 }
7472 pub fn docker_build_opts<'a>(&self, opts: DirectoryDockerBuildOpts<'a>) -> Container {
7478 let mut query = self.selection.select("dockerBuild");
7479 if let Some(dockerfile) = opts.dockerfile {
7480 query = query.arg("dockerfile", dockerfile);
7481 }
7482 if let Some(platform) = opts.platform {
7483 query = query.arg("platform", platform);
7484 }
7485 if let Some(build_args) = opts.build_args {
7486 query = query.arg("buildArgs", build_args);
7487 }
7488 if let Some(target) = opts.target {
7489 query = query.arg("target", target);
7490 }
7491 if let Some(secrets) = opts.secrets {
7492 query = query.arg("secrets", secrets);
7493 }
7494 if let Some(no_init) = opts.no_init {
7495 query = query.arg("noInit", no_init);
7496 }
7497 if let Some(ssh) = opts.ssh {
7498 query = query.arg("ssh", ssh);
7499 }
7500 Container {
7501 proc: self.proc.clone(),
7502 selection: query,
7503 graphql_client: self.graphql_client.clone(),
7504 }
7505 }
7506 pub fn with_timestamps(&self, timestamp: isize) -> Directory {
7514 let mut query = self.selection.select("withTimestamps");
7515 query = query.arg("timestamp", timestamp);
7516 Directory {
7517 proc: self.proc.clone(),
7518 selection: query,
7519 graphql_client: self.graphql_client.clone(),
7520 }
7521 }
7522 pub fn with_patch(&self, patch: impl Into<String>) -> Directory {
7529 let mut query = self.selection.select("withPatch");
7530 query = query.arg("patch", patch.into());
7531 Directory {
7532 proc: self.proc.clone(),
7533 selection: query,
7534 graphql_client: self.graphql_client.clone(),
7535 }
7536 }
7537 pub fn with_patch_opts(
7544 &self,
7545 patch: impl Into<String>,
7546 opts: DirectoryWithPatchOpts,
7547 ) -> Directory {
7548 let mut query = self.selection.select("withPatch");
7549 query = query.arg("patch", patch.into());
7550 if let Some(on_conflict) = opts.on_conflict {
7551 query = query.arg("onConflict", on_conflict);
7552 }
7553 Directory {
7554 proc: self.proc.clone(),
7555 selection: query,
7556 graphql_client: self.graphql_client.clone(),
7557 }
7558 }
7559 pub fn with_patch_file(&self, patch: impl IntoID<Id>) -> Directory {
7566 let mut query = self.selection.select("withPatchFile");
7567 query = query.arg_lazy(
7568 "patch",
7569 Box::new(move || {
7570 let patch = patch.clone();
7571 Box::pin(async move { patch.into_id().await.unwrap().quote() })
7572 }),
7573 );
7574 Directory {
7575 proc: self.proc.clone(),
7576 selection: query,
7577 graphql_client: self.graphql_client.clone(),
7578 }
7579 }
7580 pub fn with_patch_file_opts(
7587 &self,
7588 patch: impl IntoID<Id>,
7589 opts: DirectoryWithPatchFileOpts,
7590 ) -> Directory {
7591 let mut query = self.selection.select("withPatchFile");
7592 query = query.arg_lazy(
7593 "patch",
7594 Box::new(move || {
7595 let patch = patch.clone();
7596 Box::pin(async move { patch.into_id().await.unwrap().quote() })
7597 }),
7598 );
7599 if let Some(on_conflict) = opts.on_conflict {
7600 query = query.arg("onConflict", on_conflict);
7601 }
7602 Directory {
7603 proc: self.proc.clone(),
7604 selection: query,
7605 graphql_client: self.graphql_client.clone(),
7606 }
7607 }
7608 pub fn as_git(&self) -> GitRepository {
7610 let query = self.selection.select("asGit");
7611 GitRepository {
7612 proc: self.proc.clone(),
7613 selection: query,
7614 graphql_client: self.graphql_client.clone(),
7615 }
7616 }
7617 pub fn as_workspace(&self) -> Workspace {
7623 let query = self.selection.select("asWorkspace");
7624 Workspace {
7625 proc: self.proc.clone(),
7626 selection: query,
7627 graphql_client: self.graphql_client.clone(),
7628 }
7629 }
7630 pub fn as_workspace_opts<'a>(&self, opts: DirectoryAsWorkspaceOpts<'a>) -> Workspace {
7636 let mut query = self.selection.select("asWorkspace");
7637 if let Some(cwd) = opts.cwd {
7638 query = query.arg("cwd", cwd);
7639 }
7640 Workspace {
7641 proc: self.proc.clone(),
7642 selection: query,
7643 graphql_client: self.graphql_client.clone(),
7644 }
7645 }
7646 pub fn terminal(&self) -> Directory {
7652 let query = self.selection.select("terminal");
7653 Directory {
7654 proc: self.proc.clone(),
7655 selection: query,
7656 graphql_client: self.graphql_client.clone(),
7657 }
7658 }
7659 pub fn terminal_opts<'a>(&self, opts: DirectoryTerminalOpts<'a>) -> Directory {
7665 let mut query = self.selection.select("terminal");
7666 if let Some(container) = opts.container {
7667 query = query.arg("container", container);
7668 }
7669 if let Some(cmd) = opts.cmd {
7670 query = query.arg("cmd", cmd);
7671 }
7672 if let Some(disable_dagger_in_dagger) = opts.disable_dagger_in_dagger {
7673 query = query.arg("disableDaggerInDagger", disable_dagger_in_dagger);
7674 }
7675 if let Some(experimental_privileged_nesting) = opts.experimental_privileged_nesting {
7676 query = query.arg(
7677 "experimentalPrivilegedNesting",
7678 experimental_privileged_nesting,
7679 );
7680 }
7681 if let Some(insecure_root_capabilities) = opts.insecure_root_capabilities {
7682 query = query.arg("insecureRootCapabilities", insecure_root_capabilities);
7683 }
7684 Directory {
7685 proc: self.proc.clone(),
7686 selection: query,
7687 graphql_client: self.graphql_client.clone(),
7688 }
7689 }
7690 pub fn with_symlink(
7697 &self,
7698 target: impl Into<String>,
7699 link_name: impl Into<String>,
7700 ) -> Directory {
7701 let mut query = self.selection.select("withSymlink");
7702 query = query.arg("target", target.into());
7703 query = query.arg("linkName", link_name.into());
7704 Directory {
7705 proc: self.proc.clone(),
7706 selection: query,
7707 graphql_client: self.graphql_client.clone(),
7708 }
7709 }
7710 pub fn chown(&self, path: impl Into<String>, owner: impl Into<String>) -> Directory {
7721 let mut query = self.selection.select("chown");
7722 query = query.arg("path", path.into());
7723 query = query.arg("owner", owner.into());
7724 Directory {
7725 proc: self.proc.clone(),
7726 selection: query,
7727 graphql_client: self.graphql_client.clone(),
7728 }
7729 }
7730 pub fn with_error(&self, err: impl Into<String>) -> Directory {
7736 let mut query = self.selection.select("withError");
7737 query = query.arg("err", err.into());
7738 Directory {
7739 proc: self.proc.clone(),
7740 selection: query,
7741 graphql_client: self.graphql_client.clone(),
7742 }
7743 }
7744 pub fn as_module(&self) -> Module {
7750 let query = self.selection.select("asModule");
7751 Module {
7752 proc: self.proc.clone(),
7753 selection: query,
7754 graphql_client: self.graphql_client.clone(),
7755 }
7756 }
7757 pub fn as_module_opts<'a>(&self, opts: DirectoryAsModuleOpts<'a>) -> Module {
7763 let mut query = self.selection.select("asModule");
7764 if let Some(source_root_path) = opts.source_root_path {
7765 query = query.arg("sourceRootPath", source_root_path);
7766 }
7767 Module {
7768 proc: self.proc.clone(),
7769 selection: query,
7770 graphql_client: self.graphql_client.clone(),
7771 }
7772 }
7773 pub fn as_module_source(&self) -> ModuleSource {
7779 let query = self.selection.select("asModuleSource");
7780 ModuleSource {
7781 proc: self.proc.clone(),
7782 selection: query,
7783 graphql_client: self.graphql_client.clone(),
7784 }
7785 }
7786 pub fn as_module_source_opts<'a>(&self, opts: DirectoryAsModuleSourceOpts<'a>) -> ModuleSource {
7792 let mut query = self.selection.select("asModuleSource");
7793 if let Some(source_root_path) = opts.source_root_path {
7794 query = query.arg("sourceRootPath", source_root_path);
7795 }
7796 ModuleSource {
7797 proc: self.proc.clone(),
7798 selection: query,
7799 graphql_client: self.graphql_client.clone(),
7800 }
7801 }
7802}
7803impl Exportable for Directory {
7804 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
7805 let query = self.selection.select("id");
7806 let graphql_client = self.graphql_client.clone();
7807 async move { query.execute(graphql_client).await }
7808 }
7809 fn export(
7810 &self,
7811 path: impl Into<String>,
7812 ) -> impl core::future::Future<Output = Result<String, DaggerError>> + Send {
7813 let mut query = self.selection.select("export");
7814 query = query.arg("path", path.into());
7815 let graphql_client = self.graphql_client.clone();
7816 async move { query.execute(graphql_client).await }
7817 }
7818}
7819impl Node for Directory {
7820 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
7821 let query = self.selection.select("id");
7822 let graphql_client = self.graphql_client.clone();
7823 async move { query.execute(graphql_client).await }
7824 }
7825}
7826impl Syncer for Directory {
7827 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
7828 let query = self.selection.select("id");
7829 let graphql_client = self.graphql_client.clone();
7830 async move { query.execute(graphql_client).await }
7831 }
7832 fn sync(&self) -> impl core::future::Future<Output = Result<Self, DaggerError>> + Send {
7833 let query = self.selection.select("sync");
7834 let proc = self.proc.clone();
7835 let graphql_client = self.graphql_client.clone();
7836 async move {
7837 let id: Id = query.execute(graphql_client.clone()).await?;
7838 Ok(Self {
7839 proc,
7840 selection: query
7841 .root()
7842 .select("node")
7843 .arg("id", &id.0)
7844 .inline_fragment("Directory"),
7845 graphql_client,
7846 })
7847 }
7848 }
7849}
7850#[derive(Clone)]
7851pub struct Engine {
7852 pub proc: Option<Arc<DaggerSessionProc>>,
7853 pub selection: Selection,
7854 pub graphql_client: DynGraphQLClient,
7855}
7856impl IntoID<Id> for Engine {
7857 fn into_id(
7858 self,
7859 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
7860 Box::pin(async move { self.id().await })
7861 }
7862}
7863impl Loadable for Engine {
7864 fn graphql_type() -> &'static str {
7865 "Engine"
7866 }
7867 fn from_query(
7868 proc: Option<Arc<DaggerSessionProc>>,
7869 selection: Selection,
7870 graphql_client: DynGraphQLClient,
7871 ) -> Self {
7872 Self {
7873 proc,
7874 selection,
7875 graphql_client,
7876 }
7877 }
7878}
7879impl Engine {
7880 pub async fn id(&self) -> Result<Id, DaggerError> {
7882 let query = self.selection.select("id");
7883 query.execute(self.graphql_client.clone()).await
7884 }
7885 pub async fn clients(&self) -> Result<Vec<String>, DaggerError> {
7887 let query = self.selection.select("clients");
7888 query.execute(self.graphql_client.clone()).await
7889 }
7890 pub async fn name(&self) -> Result<String, DaggerError> {
7892 let query = self.selection.select("name");
7893 query.execute(self.graphql_client.clone()).await
7894 }
7895 pub fn local_cache(&self) -> EngineCache {
7897 let query = self.selection.select("localCache");
7898 EngineCache {
7899 proc: self.proc.clone(),
7900 selection: query,
7901 graphql_client: self.graphql_client.clone(),
7902 }
7903 }
7904}
7905impl Node for Engine {
7906 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
7907 let query = self.selection.select("id");
7908 let graphql_client = self.graphql_client.clone();
7909 async move { query.execute(graphql_client).await }
7910 }
7911}
7912#[derive(Clone)]
7913pub struct EngineCache {
7914 pub proc: Option<Arc<DaggerSessionProc>>,
7915 pub selection: Selection,
7916 pub graphql_client: DynGraphQLClient,
7917}
7918#[derive(Builder, Debug, PartialEq)]
7919pub struct EngineCacheEntrySetOpts<'a> {
7920 #[builder(setter(into, strip_option), default)]
7921 pub key: Option<&'a str>,
7922}
7923#[derive(Builder, Debug, PartialEq)]
7924pub struct EngineCachePruneOpts<'a> {
7925 #[builder(setter(into, strip_option), default)]
7927 pub max_estimated_bytes: Option<isize>,
7928 #[builder(setter(into, strip_option), default)]
7930 pub max_used_space: Option<&'a str>,
7931 #[builder(setter(into, strip_option), default)]
7933 pub min_free_space: Option<&'a str>,
7934 #[builder(setter(into, strip_option), default)]
7936 pub reserved_space: Option<&'a str>,
7937 #[builder(setter(into, strip_option), default)]
7939 pub target_estimated_bytes: Option<isize>,
7940 #[builder(setter(into, strip_option), default)]
7942 pub target_space: Option<&'a str>,
7943 #[builder(setter(into, strip_option), default)]
7945 pub use_default_policy: Option<bool>,
7946}
7947impl IntoID<Id> for EngineCache {
7948 fn into_id(
7949 self,
7950 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
7951 Box::pin(async move { self.id().await })
7952 }
7953}
7954impl Loadable for EngineCache {
7955 fn graphql_type() -> &'static str {
7956 "EngineCache"
7957 }
7958 fn from_query(
7959 proc: Option<Arc<DaggerSessionProc>>,
7960 selection: Selection,
7961 graphql_client: DynGraphQLClient,
7962 ) -> Self {
7963 Self {
7964 proc,
7965 selection,
7966 graphql_client,
7967 }
7968 }
7969}
7970impl EngineCache {
7971 pub async fn id(&self) -> Result<Id, DaggerError> {
7973 let query = self.selection.select("id");
7974 query.execute(self.graphql_client.clone()).await
7975 }
7976 pub fn entry_set(&self) -> EngineCacheEntrySet {
7982 let query = self.selection.select("entrySet");
7983 EngineCacheEntrySet {
7984 proc: self.proc.clone(),
7985 selection: query,
7986 graphql_client: self.graphql_client.clone(),
7987 }
7988 }
7989 pub fn entry_set_opts<'a>(&self, opts: EngineCacheEntrySetOpts<'a>) -> EngineCacheEntrySet {
7995 let mut query = self.selection.select("entrySet");
7996 if let Some(key) = opts.key {
7997 query = query.arg("key", key);
7998 }
7999 EngineCacheEntrySet {
8000 proc: self.proc.clone(),
8001 selection: query,
8002 graphql_client: self.graphql_client.clone(),
8003 }
8004 }
8005 pub async fn prune(&self) -> Result<Void, DaggerError> {
8011 let query = self.selection.select("prune");
8012 query.execute(self.graphql_client.clone()).await
8013 }
8014 pub async fn prune_opts<'a>(
8020 &self,
8021 opts: EngineCachePruneOpts<'a>,
8022 ) -> Result<Void, DaggerError> {
8023 let mut query = self.selection.select("prune");
8024 if let Some(use_default_policy) = opts.use_default_policy {
8025 query = query.arg("useDefaultPolicy", use_default_policy);
8026 }
8027 if let Some(max_used_space) = opts.max_used_space {
8028 query = query.arg("maxUsedSpace", max_used_space);
8029 }
8030 if let Some(reserved_space) = opts.reserved_space {
8031 query = query.arg("reservedSpace", reserved_space);
8032 }
8033 if let Some(min_free_space) = opts.min_free_space {
8034 query = query.arg("minFreeSpace", min_free_space);
8035 }
8036 if let Some(target_space) = opts.target_space {
8037 query = query.arg("targetSpace", target_space);
8038 }
8039 if let Some(max_estimated_bytes) = opts.max_estimated_bytes {
8040 query = query.arg("maxEstimatedBytes", max_estimated_bytes);
8041 }
8042 if let Some(target_estimated_bytes) = opts.target_estimated_bytes {
8043 query = query.arg("targetEstimatedBytes", target_estimated_bytes);
8044 }
8045 query.execute(self.graphql_client.clone()).await
8046 }
8047 pub async fn max_used_space(&self) -> Result<isize, DaggerError> {
8049 let query = self.selection.select("maxUsedSpace");
8050 query.execute(self.graphql_client.clone()).await
8051 }
8052 pub async fn target_space(&self) -> Result<isize, DaggerError> {
8054 let query = self.selection.select("targetSpace");
8055 query.execute(self.graphql_client.clone()).await
8056 }
8057 pub async fn reserved_space(&self) -> Result<isize, DaggerError> {
8059 let query = self.selection.select("reservedSpace");
8060 query.execute(self.graphql_client.clone()).await
8061 }
8062 pub async fn min_free_space(&self) -> Result<isize, DaggerError> {
8064 let query = self.selection.select("minFreeSpace");
8065 query.execute(self.graphql_client.clone()).await
8066 }
8067}
8068impl Node for EngineCache {
8069 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
8070 let query = self.selection.select("id");
8071 let graphql_client = self.graphql_client.clone();
8072 async move { query.execute(graphql_client).await }
8073 }
8074}
8075#[derive(Clone)]
8076pub struct EngineCacheEntry {
8077 pub proc: Option<Arc<DaggerSessionProc>>,
8078 pub selection: Selection,
8079 pub graphql_client: DynGraphQLClient,
8080}
8081impl IntoID<Id> for EngineCacheEntry {
8082 fn into_id(
8083 self,
8084 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
8085 Box::pin(async move { self.id().await })
8086 }
8087}
8088impl Loadable for EngineCacheEntry {
8089 fn graphql_type() -> &'static str {
8090 "EngineCacheEntry"
8091 }
8092 fn from_query(
8093 proc: Option<Arc<DaggerSessionProc>>,
8094 selection: Selection,
8095 graphql_client: DynGraphQLClient,
8096 ) -> Self {
8097 Self {
8098 proc,
8099 selection,
8100 graphql_client,
8101 }
8102 }
8103}
8104impl EngineCacheEntry {
8105 pub async fn id(&self) -> Result<Id, DaggerError> {
8107 let query = self.selection.select("id");
8108 query.execute(self.graphql_client.clone()).await
8109 }
8110 pub async fn description(&self) -> Result<String, DaggerError> {
8112 let query = self.selection.select("description");
8113 query.execute(self.graphql_client.clone()).await
8114 }
8115 pub async fn disk_space_bytes(&self) -> Result<isize, DaggerError> {
8117 let query = self.selection.select("diskSpaceBytes");
8118 query.execute(self.graphql_client.clone()).await
8119 }
8120 pub async fn created_time_unix_nano(&self) -> Result<isize, DaggerError> {
8122 let query = self.selection.select("createdTimeUnixNano");
8123 query.execute(self.graphql_client.clone()).await
8124 }
8125 pub async fn most_recent_use_time_unix_nano(&self) -> Result<isize, DaggerError> {
8127 let query = self.selection.select("mostRecentUseTimeUnixNano");
8128 query.execute(self.graphql_client.clone()).await
8129 }
8130 pub async fn actively_used(&self) -> Result<bool, DaggerError> {
8132 let query = self.selection.select("activelyUsed");
8133 query.execute(self.graphql_client.clone()).await
8134 }
8135 pub async fn record_type(&self) -> Result<String, DaggerError> {
8137 let query = self.selection.select("recordType");
8138 query.execute(self.graphql_client.clone()).await
8139 }
8140 pub async fn record_types(&self) -> Result<Vec<String>, DaggerError> {
8142 let query = self.selection.select("recordTypes");
8143 query.execute(self.graphql_client.clone()).await
8144 }
8145 pub async fn dagql_call(&self) -> Result<String, DaggerError> {
8147 let query = self.selection.select("dagqlCall");
8148 query.execute(self.graphql_client.clone()).await
8149 }
8150}
8151impl Node for EngineCacheEntry {
8152 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
8153 let query = self.selection.select("id");
8154 let graphql_client = self.graphql_client.clone();
8155 async move { query.execute(graphql_client).await }
8156 }
8157}
8158#[derive(Clone)]
8159pub struct EngineCacheEntrySet {
8160 pub proc: Option<Arc<DaggerSessionProc>>,
8161 pub selection: Selection,
8162 pub graphql_client: DynGraphQLClient,
8163}
8164impl IntoID<Id> for EngineCacheEntrySet {
8165 fn into_id(
8166 self,
8167 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
8168 Box::pin(async move { self.id().await })
8169 }
8170}
8171impl Loadable for EngineCacheEntrySet {
8172 fn graphql_type() -> &'static str {
8173 "EngineCacheEntrySet"
8174 }
8175 fn from_query(
8176 proc: Option<Arc<DaggerSessionProc>>,
8177 selection: Selection,
8178 graphql_client: DynGraphQLClient,
8179 ) -> Self {
8180 Self {
8181 proc,
8182 selection,
8183 graphql_client,
8184 }
8185 }
8186}
8187impl EngineCacheEntrySet {
8188 pub async fn id(&self) -> Result<Id, DaggerError> {
8190 let query = self.selection.select("id");
8191 query.execute(self.graphql_client.clone()).await
8192 }
8193 pub async fn entries(&self) -> Result<Vec<EngineCacheEntry>, DaggerError> {
8195 let query = self.selection.select("entries");
8196 let query = query.select("id");
8197 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
8198 Ok(ids
8199 .into_iter()
8200 .map(|id| EngineCacheEntry {
8201 proc: self.proc.clone(),
8202 selection: crate::querybuilder::query()
8203 .select("node")
8204 .arg("id", &id.0)
8205 .inline_fragment("EngineCacheEntry"),
8206 graphql_client: self.graphql_client.clone(),
8207 })
8208 .collect())
8209 }
8210 pub async fn entry_count(&self) -> Result<isize, DaggerError> {
8212 let query = self.selection.select("entryCount");
8213 query.execute(self.graphql_client.clone()).await
8214 }
8215 pub async fn disk_space_bytes(&self) -> Result<isize, DaggerError> {
8217 let query = self.selection.select("diskSpaceBytes");
8218 query.execute(self.graphql_client.clone()).await
8219 }
8220}
8221impl Node for EngineCacheEntrySet {
8222 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
8223 let query = self.selection.select("id");
8224 let graphql_client = self.graphql_client.clone();
8225 async move { query.execute(graphql_client).await }
8226 }
8227}
8228#[derive(Clone)]
8229pub struct EnumTypeDef {
8230 pub proc: Option<Arc<DaggerSessionProc>>,
8231 pub selection: Selection,
8232 pub graphql_client: DynGraphQLClient,
8233}
8234impl IntoID<Id> for EnumTypeDef {
8235 fn into_id(
8236 self,
8237 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
8238 Box::pin(async move { self.id().await })
8239 }
8240}
8241impl Loadable for EnumTypeDef {
8242 fn graphql_type() -> &'static str {
8243 "EnumTypeDef"
8244 }
8245 fn from_query(
8246 proc: Option<Arc<DaggerSessionProc>>,
8247 selection: Selection,
8248 graphql_client: DynGraphQLClient,
8249 ) -> Self {
8250 Self {
8251 proc,
8252 selection,
8253 graphql_client,
8254 }
8255 }
8256}
8257impl EnumTypeDef {
8258 pub async fn id(&self) -> Result<Id, DaggerError> {
8260 let query = self.selection.select("id");
8261 query.execute(self.graphql_client.clone()).await
8262 }
8263 pub async fn values(&self) -> Result<Vec<EnumValueTypeDef>, DaggerError> {
8265 let query = self.selection.select("values");
8266 let query = query.select("id");
8267 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
8268 Ok(ids
8269 .into_iter()
8270 .map(|id| EnumValueTypeDef {
8271 proc: self.proc.clone(),
8272 selection: crate::querybuilder::query()
8273 .select("node")
8274 .arg("id", &id.0)
8275 .inline_fragment("EnumValueTypeDef"),
8276 graphql_client: self.graphql_client.clone(),
8277 })
8278 .collect())
8279 }
8280 pub async fn members(&self) -> Result<Vec<EnumValueTypeDef>, DaggerError> {
8282 let query = self.selection.select("members");
8283 let query = query.select("id");
8284 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
8285 Ok(ids
8286 .into_iter()
8287 .map(|id| EnumValueTypeDef {
8288 proc: self.proc.clone(),
8289 selection: crate::querybuilder::query()
8290 .select("node")
8291 .arg("id", &id.0)
8292 .inline_fragment("EnumValueTypeDef"),
8293 graphql_client: self.graphql_client.clone(),
8294 })
8295 .collect())
8296 }
8297 pub async fn name(&self) -> Result<String, DaggerError> {
8299 let query = self.selection.select("name");
8300 query.execute(self.graphql_client.clone()).await
8301 }
8302 pub async fn description(&self) -> Result<String, DaggerError> {
8304 let query = self.selection.select("description");
8305 query.execute(self.graphql_client.clone()).await
8306 }
8307 pub async fn source_map(&self) -> Result<Option<SourceMap>, DaggerError> {
8309 let query = self.selection.select("sourceMap");
8310 let query = query.select("id");
8311 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
8312 Ok(id.map(|id| SourceMap {
8313 proc: self.proc.clone(),
8314 selection: query
8315 .root()
8316 .select("node")
8317 .arg("id", &id.0)
8318 .inline_fragment("SourceMap"),
8319 graphql_client: self.graphql_client.clone(),
8320 }))
8321 }
8322 pub async fn source_module_name(&self) -> Result<String, DaggerError> {
8324 let query = self.selection.select("sourceModuleName");
8325 query.execute(self.graphql_client.clone()).await
8326 }
8327}
8328impl Node for EnumTypeDef {
8329 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
8330 let query = self.selection.select("id");
8331 let graphql_client = self.graphql_client.clone();
8332 async move { query.execute(graphql_client).await }
8333 }
8334}
8335#[derive(Clone)]
8336pub struct EnumValueTypeDef {
8337 pub proc: Option<Arc<DaggerSessionProc>>,
8338 pub selection: Selection,
8339 pub graphql_client: DynGraphQLClient,
8340}
8341impl IntoID<Id> for EnumValueTypeDef {
8342 fn into_id(
8343 self,
8344 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
8345 Box::pin(async move { self.id().await })
8346 }
8347}
8348impl Loadable for EnumValueTypeDef {
8349 fn graphql_type() -> &'static str {
8350 "EnumValueTypeDef"
8351 }
8352 fn from_query(
8353 proc: Option<Arc<DaggerSessionProc>>,
8354 selection: Selection,
8355 graphql_client: DynGraphQLClient,
8356 ) -> Self {
8357 Self {
8358 proc,
8359 selection,
8360 graphql_client,
8361 }
8362 }
8363}
8364impl EnumValueTypeDef {
8365 pub async fn id(&self) -> Result<Id, DaggerError> {
8367 let query = self.selection.select("id");
8368 query.execute(self.graphql_client.clone()).await
8369 }
8370 pub async fn name(&self) -> Result<String, DaggerError> {
8372 let query = self.selection.select("name");
8373 query.execute(self.graphql_client.clone()).await
8374 }
8375 pub async fn value(&self) -> Result<String, DaggerError> {
8377 let query = self.selection.select("value");
8378 query.execute(self.graphql_client.clone()).await
8379 }
8380 pub async fn description(&self) -> Result<String, DaggerError> {
8382 let query = self.selection.select("description");
8383 query.execute(self.graphql_client.clone()).await
8384 }
8385 pub async fn source_map(&self) -> Result<Option<SourceMap>, DaggerError> {
8387 let query = self.selection.select("sourceMap");
8388 let query = query.select("id");
8389 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
8390 Ok(id.map(|id| SourceMap {
8391 proc: self.proc.clone(),
8392 selection: query
8393 .root()
8394 .select("node")
8395 .arg("id", &id.0)
8396 .inline_fragment("SourceMap"),
8397 graphql_client: self.graphql_client.clone(),
8398 }))
8399 }
8400 pub async fn deprecated(&self) -> Result<String, DaggerError> {
8402 let query = self.selection.select("deprecated");
8403 query.execute(self.graphql_client.clone()).await
8404 }
8405}
8406impl Node for EnumValueTypeDef {
8407 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
8408 let query = self.selection.select("id");
8409 let graphql_client = self.graphql_client.clone();
8410 async move { query.execute(graphql_client).await }
8411 }
8412}
8413#[derive(Clone)]
8414pub struct EnvFile {
8415 pub proc: Option<Arc<DaggerSessionProc>>,
8416 pub selection: Selection,
8417 pub graphql_client: DynGraphQLClient,
8418}
8419#[derive(Builder, Debug, PartialEq)]
8420pub struct EnvFileVariablesOpts {
8421 #[builder(setter(into, strip_option), default)]
8423 pub raw: Option<bool>,
8424}
8425#[derive(Builder, Debug, PartialEq)]
8426pub struct EnvFileGetOpts {
8427 #[builder(setter(into, strip_option), default)]
8429 pub raw: Option<bool>,
8430}
8431impl IntoID<Id> for EnvFile {
8432 fn into_id(
8433 self,
8434 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
8435 Box::pin(async move { self.id().await })
8436 }
8437}
8438impl Loadable for EnvFile {
8439 fn graphql_type() -> &'static str {
8440 "EnvFile"
8441 }
8442 fn from_query(
8443 proc: Option<Arc<DaggerSessionProc>>,
8444 selection: Selection,
8445 graphql_client: DynGraphQLClient,
8446 ) -> Self {
8447 Self {
8448 proc,
8449 selection,
8450 graphql_client,
8451 }
8452 }
8453}
8454impl EnvFile {
8455 pub async fn id(&self) -> Result<Id, DaggerError> {
8457 let query = self.selection.select("id");
8458 query.execute(self.graphql_client.clone()).await
8459 }
8460 pub async fn variables(&self) -> Result<Vec<EnvVariable>, DaggerError> {
8466 let query = self.selection.select("variables");
8467 let query = query.select("id");
8468 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
8469 Ok(ids
8470 .into_iter()
8471 .map(|id| EnvVariable {
8472 proc: self.proc.clone(),
8473 selection: crate::querybuilder::query()
8474 .select("node")
8475 .arg("id", &id.0)
8476 .inline_fragment("EnvVariable"),
8477 graphql_client: self.graphql_client.clone(),
8478 })
8479 .collect())
8480 }
8481 pub async fn variables_opts(
8487 &self,
8488 opts: EnvFileVariablesOpts,
8489 ) -> Result<Vec<EnvVariable>, DaggerError> {
8490 let mut query = self.selection.select("variables");
8491 if let Some(raw) = opts.raw {
8492 query = query.arg("raw", raw);
8493 }
8494 let query = query.select("id");
8495 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
8496 Ok(ids
8497 .into_iter()
8498 .map(|id| EnvVariable {
8499 proc: self.proc.clone(),
8500 selection: crate::querybuilder::query()
8501 .select("node")
8502 .arg("id", &id.0)
8503 .inline_fragment("EnvVariable"),
8504 graphql_client: self.graphql_client.clone(),
8505 })
8506 .collect())
8507 }
8508 pub fn with_variable(&self, name: impl Into<String>, value: impl Into<String>) -> EnvFile {
8515 let mut query = self.selection.select("withVariable");
8516 query = query.arg("name", name.into());
8517 query = query.arg("value", value.into());
8518 EnvFile {
8519 proc: self.proc.clone(),
8520 selection: query,
8521 graphql_client: self.graphql_client.clone(),
8522 }
8523 }
8524 pub fn without_variable(&self, name: impl Into<String>) -> EnvFile {
8530 let mut query = self.selection.select("withoutVariable");
8531 query = query.arg("name", name.into());
8532 EnvFile {
8533 proc: self.proc.clone(),
8534 selection: query,
8535 graphql_client: self.graphql_client.clone(),
8536 }
8537 }
8538 pub async fn get(&self, name: impl Into<String>) -> Result<String, DaggerError> {
8545 let mut query = self.selection.select("get");
8546 query = query.arg("name", name.into());
8547 query.execute(self.graphql_client.clone()).await
8548 }
8549 pub async fn get_opts(
8556 &self,
8557 name: impl Into<String>,
8558 opts: EnvFileGetOpts,
8559 ) -> Result<String, DaggerError> {
8560 let mut query = self.selection.select("get");
8561 query = query.arg("name", name.into());
8562 if let Some(raw) = opts.raw {
8563 query = query.arg("raw", raw);
8564 }
8565 query.execute(self.graphql_client.clone()).await
8566 }
8567 pub async fn exists(&self, name: impl Into<String>) -> Result<bool, DaggerError> {
8573 let mut query = self.selection.select("exists");
8574 query = query.arg("name", name.into());
8575 query.execute(self.graphql_client.clone()).await
8576 }
8577 pub fn as_file(&self) -> File {
8579 let query = self.selection.select("asFile");
8580 File {
8581 proc: self.proc.clone(),
8582 selection: query,
8583 graphql_client: self.graphql_client.clone(),
8584 }
8585 }
8586 pub fn namespace(&self, prefix: impl Into<String>) -> EnvFile {
8592 let mut query = self.selection.select("namespace");
8593 query = query.arg("prefix", prefix.into());
8594 EnvFile {
8595 proc: self.proc.clone(),
8596 selection: query,
8597 graphql_client: self.graphql_client.clone(),
8598 }
8599 }
8600}
8601impl Node for EnvFile {
8602 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
8603 let query = self.selection.select("id");
8604 let graphql_client = self.graphql_client.clone();
8605 async move { query.execute(graphql_client).await }
8606 }
8607}
8608#[derive(Clone)]
8609pub struct EnvVariable {
8610 pub proc: Option<Arc<DaggerSessionProc>>,
8611 pub selection: Selection,
8612 pub graphql_client: DynGraphQLClient,
8613}
8614impl IntoID<Id> for EnvVariable {
8615 fn into_id(
8616 self,
8617 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
8618 Box::pin(async move { self.id().await })
8619 }
8620}
8621impl Loadable for EnvVariable {
8622 fn graphql_type() -> &'static str {
8623 "EnvVariable"
8624 }
8625 fn from_query(
8626 proc: Option<Arc<DaggerSessionProc>>,
8627 selection: Selection,
8628 graphql_client: DynGraphQLClient,
8629 ) -> Self {
8630 Self {
8631 proc,
8632 selection,
8633 graphql_client,
8634 }
8635 }
8636}
8637impl EnvVariable {
8638 pub async fn id(&self) -> Result<Id, DaggerError> {
8640 let query = self.selection.select("id");
8641 query.execute(self.graphql_client.clone()).await
8642 }
8643 pub async fn name(&self) -> Result<String, DaggerError> {
8645 let query = self.selection.select("name");
8646 query.execute(self.graphql_client.clone()).await
8647 }
8648 pub async fn value(&self) -> Result<String, DaggerError> {
8650 let query = self.selection.select("value");
8651 query.execute(self.graphql_client.clone()).await
8652 }
8653}
8654impl Node for EnvVariable {
8655 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
8656 let query = self.selection.select("id");
8657 let graphql_client = self.graphql_client.clone();
8658 async move { query.execute(graphql_client).await }
8659 }
8660}
8661#[derive(Clone)]
8662pub struct Error {
8663 pub proc: Option<Arc<DaggerSessionProc>>,
8664 pub selection: Selection,
8665 pub graphql_client: DynGraphQLClient,
8666}
8667impl IntoID<Id> for Error {
8668 fn into_id(
8669 self,
8670 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
8671 Box::pin(async move { self.id().await })
8672 }
8673}
8674impl Loadable for Error {
8675 fn graphql_type() -> &'static str {
8676 "Error"
8677 }
8678 fn from_query(
8679 proc: Option<Arc<DaggerSessionProc>>,
8680 selection: Selection,
8681 graphql_client: DynGraphQLClient,
8682 ) -> Self {
8683 Self {
8684 proc,
8685 selection,
8686 graphql_client,
8687 }
8688 }
8689}
8690impl Error {
8691 pub async fn id(&self) -> Result<Id, DaggerError> {
8693 let query = self.selection.select("id");
8694 query.execute(self.graphql_client.clone()).await
8695 }
8696 pub fn with_value(&self, name: impl Into<String>, value: Json) -> Error {
8703 let mut query = self.selection.select("withValue");
8704 query = query.arg("name", name.into());
8705 query = query.arg("value", value);
8706 Error {
8707 proc: self.proc.clone(),
8708 selection: query,
8709 graphql_client: self.graphql_client.clone(),
8710 }
8711 }
8712 pub async fn message(&self) -> Result<String, DaggerError> {
8714 let query = self.selection.select("message");
8715 query.execute(self.graphql_client.clone()).await
8716 }
8717 pub async fn values(&self) -> Result<Vec<ErrorValue>, DaggerError> {
8719 let query = self.selection.select("values");
8720 let query = query.select("id");
8721 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
8722 Ok(ids
8723 .into_iter()
8724 .map(|id| ErrorValue {
8725 proc: self.proc.clone(),
8726 selection: crate::querybuilder::query()
8727 .select("node")
8728 .arg("id", &id.0)
8729 .inline_fragment("ErrorValue"),
8730 graphql_client: self.graphql_client.clone(),
8731 })
8732 .collect())
8733 }
8734}
8735impl Node for Error {
8736 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
8737 let query = self.selection.select("id");
8738 let graphql_client = self.graphql_client.clone();
8739 async move { query.execute(graphql_client).await }
8740 }
8741}
8742#[derive(Clone)]
8743pub struct ErrorValue {
8744 pub proc: Option<Arc<DaggerSessionProc>>,
8745 pub selection: Selection,
8746 pub graphql_client: DynGraphQLClient,
8747}
8748impl IntoID<Id> for ErrorValue {
8749 fn into_id(
8750 self,
8751 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
8752 Box::pin(async move { self.id().await })
8753 }
8754}
8755impl Loadable for ErrorValue {
8756 fn graphql_type() -> &'static str {
8757 "ErrorValue"
8758 }
8759 fn from_query(
8760 proc: Option<Arc<DaggerSessionProc>>,
8761 selection: Selection,
8762 graphql_client: DynGraphQLClient,
8763 ) -> Self {
8764 Self {
8765 proc,
8766 selection,
8767 graphql_client,
8768 }
8769 }
8770}
8771impl ErrorValue {
8772 pub async fn id(&self) -> Result<Id, DaggerError> {
8774 let query = self.selection.select("id");
8775 query.execute(self.graphql_client.clone()).await
8776 }
8777 pub async fn name(&self) -> Result<String, DaggerError> {
8779 let query = self.selection.select("name");
8780 query.execute(self.graphql_client.clone()).await
8781 }
8782 pub async fn value(&self) -> Result<Json, DaggerError> {
8784 let query = self.selection.select("value");
8785 query.execute(self.graphql_client.clone()).await
8786 }
8787}
8788impl Node for ErrorValue {
8789 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
8790 let query = self.selection.select("id");
8791 let graphql_client = self.graphql_client.clone();
8792 async move { query.execute(graphql_client).await }
8793 }
8794}
8795#[derive(Clone)]
8796pub struct Expertise {
8797 pub proc: Option<Arc<DaggerSessionProc>>,
8798 pub selection: Selection,
8799 pub graphql_client: DynGraphQLClient,
8800}
8801impl IntoID<Id> for Expertise {
8802 fn into_id(
8803 self,
8804 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
8805 Box::pin(async move { self.id().await })
8806 }
8807}
8808impl Loadable for Expertise {
8809 fn graphql_type() -> &'static str {
8810 "Expertise"
8811 }
8812 fn from_query(
8813 proc: Option<Arc<DaggerSessionProc>>,
8814 selection: Selection,
8815 graphql_client: DynGraphQLClient,
8816 ) -> Self {
8817 Self {
8818 proc,
8819 selection,
8820 graphql_client,
8821 }
8822 }
8823}
8824impl Expertise {
8825 pub async fn id(&self) -> Result<Id, DaggerError> {
8827 let query = self.selection.select("id");
8828 query.execute(self.graphql_client.clone()).await
8829 }
8830 pub async fn name(&self) -> Result<String, DaggerError> {
8832 let query = self.selection.select("name");
8833 query.execute(self.graphql_client.clone()).await
8834 }
8835 pub async fn description(&self) -> Result<String, DaggerError> {
8837 let query = self.selection.select("description");
8838 query.execute(self.graphql_client.clone()).await
8839 }
8840 pub async fn path(&self) -> Result<Vec<String>, DaggerError> {
8842 let query = self.selection.select("path");
8843 query.execute(self.graphql_client.clone()).await
8844 }
8845 pub fn original_module(&self) -> Module {
8847 let query = self.selection.select("originalModule");
8848 Module {
8849 proc: self.proc.clone(),
8850 selection: query,
8851 graphql_client: self.graphql_client.clone(),
8852 }
8853 }
8854}
8855impl Node for Expertise {
8856 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
8857 let query = self.selection.select("id");
8858 let graphql_client = self.graphql_client.clone();
8859 async move { query.execute(graphql_client).await }
8860 }
8861}
8862#[derive(Clone)]
8863pub struct FieldTypeDef {
8864 pub proc: Option<Arc<DaggerSessionProc>>,
8865 pub selection: Selection,
8866 pub graphql_client: DynGraphQLClient,
8867}
8868impl IntoID<Id> for FieldTypeDef {
8869 fn into_id(
8870 self,
8871 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
8872 Box::pin(async move { self.id().await })
8873 }
8874}
8875impl Loadable for FieldTypeDef {
8876 fn graphql_type() -> &'static str {
8877 "FieldTypeDef"
8878 }
8879 fn from_query(
8880 proc: Option<Arc<DaggerSessionProc>>,
8881 selection: Selection,
8882 graphql_client: DynGraphQLClient,
8883 ) -> Self {
8884 Self {
8885 proc,
8886 selection,
8887 graphql_client,
8888 }
8889 }
8890}
8891impl FieldTypeDef {
8892 pub async fn id(&self) -> Result<Id, DaggerError> {
8894 let query = self.selection.select("id");
8895 query.execute(self.graphql_client.clone()).await
8896 }
8897 pub fn type_def(&self) -> TypeDef {
8899 let query = self.selection.select("typeDef");
8900 TypeDef {
8901 proc: self.proc.clone(),
8902 selection: query,
8903 graphql_client: self.graphql_client.clone(),
8904 }
8905 }
8906 pub async fn name(&self) -> Result<String, DaggerError> {
8908 let query = self.selection.select("name");
8909 query.execute(self.graphql_client.clone()).await
8910 }
8911 pub async fn description(&self) -> Result<String, DaggerError> {
8913 let query = self.selection.select("description");
8914 query.execute(self.graphql_client.clone()).await
8915 }
8916 pub async fn source_map(&self) -> Result<Option<SourceMap>, DaggerError> {
8918 let query = self.selection.select("sourceMap");
8919 let query = query.select("id");
8920 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
8921 Ok(id.map(|id| SourceMap {
8922 proc: self.proc.clone(),
8923 selection: query
8924 .root()
8925 .select("node")
8926 .arg("id", &id.0)
8927 .inline_fragment("SourceMap"),
8928 graphql_client: self.graphql_client.clone(),
8929 }))
8930 }
8931 pub async fn deprecated(&self) -> Result<String, DaggerError> {
8933 let query = self.selection.select("deprecated");
8934 query.execute(self.graphql_client.clone()).await
8935 }
8936}
8937impl Node for FieldTypeDef {
8938 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
8939 let query = self.selection.select("id");
8940 let graphql_client = self.graphql_client.clone();
8941 async move { query.execute(graphql_client).await }
8942 }
8943}
8944#[derive(Clone)]
8945pub struct File {
8946 pub proc: Option<Arc<DaggerSessionProc>>,
8947 pub selection: Selection,
8948 pub graphql_client: DynGraphQLClient,
8949}
8950#[derive(Builder, Debug, PartialEq)]
8951pub struct FileContentsOpts {
8952 #[builder(setter(into, strip_option), default)]
8954 pub limit_lines: Option<isize>,
8955 #[builder(setter(into, strip_option), default)]
8957 pub offset_lines: Option<isize>,
8958}
8959#[derive(Builder, Debug, PartialEq)]
8960pub struct FileDigestOpts {
8961 #[builder(setter(into, strip_option), default)]
8963 pub exclude_metadata: Option<bool>,
8964}
8965#[derive(Builder, Debug, PartialEq)]
8966pub struct FileSearchOpts<'a> {
8967 #[builder(setter(into, strip_option), default)]
8969 pub dotall: Option<bool>,
8970 #[builder(setter(into, strip_option), default)]
8972 pub files_only: Option<bool>,
8973 #[builder(setter(into, strip_option), default)]
8974 pub globs: Option<Vec<&'a str>>,
8975 #[builder(setter(into, strip_option), default)]
8977 pub insensitive: Option<bool>,
8978 #[builder(setter(into, strip_option), default)]
8980 pub limit: Option<isize>,
8981 #[builder(setter(into, strip_option), default)]
8983 pub literal: Option<bool>,
8984 #[builder(setter(into, strip_option), default)]
8986 pub multiline: Option<bool>,
8987 #[builder(setter(into, strip_option), default)]
8988 pub paths: Option<Vec<&'a str>>,
8989 #[builder(setter(into, strip_option), default)]
8991 pub skip_hidden: Option<bool>,
8992 #[builder(setter(into, strip_option), default)]
8994 pub skip_ignored: Option<bool>,
8995}
8996#[derive(Builder, Debug, PartialEq)]
8997pub struct FileWithReplacedOpts {
8998 #[builder(setter(into, strip_option), default)]
9000 pub all: Option<bool>,
9001 #[builder(setter(into, strip_option), default)]
9003 pub first_from: Option<isize>,
9004}
9005#[derive(Builder, Debug, PartialEq)]
9006pub struct FileExportOpts {
9007 #[builder(setter(into, strip_option), default)]
9009 pub allow_parent_dir_path: Option<bool>,
9010}
9011#[derive(Builder, Debug, PartialEq)]
9012pub struct FileAsEnvFileOpts {
9013 #[builder(setter(into, strip_option), default)]
9015 pub expand: Option<bool>,
9016}
9017impl IntoID<Id> for File {
9018 fn into_id(
9019 self,
9020 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
9021 Box::pin(async move { self.id().await })
9022 }
9023}
9024impl Loadable for File {
9025 fn graphql_type() -> &'static str {
9026 "File"
9027 }
9028 fn from_query(
9029 proc: Option<Arc<DaggerSessionProc>>,
9030 selection: Selection,
9031 graphql_client: DynGraphQLClient,
9032 ) -> Self {
9033 Self {
9034 proc,
9035 selection,
9036 graphql_client,
9037 }
9038 }
9039}
9040impl File {
9041 pub async fn id(&self) -> Result<Id, DaggerError> {
9043 let query = self.selection.select("id");
9044 query.execute(self.graphql_client.clone()).await
9045 }
9046 pub async fn sync(&self) -> Result<File, DaggerError> {
9048 let query = self.selection.select("sync");
9049 let id: Id = query.execute(self.graphql_client.clone()).await?;
9050 Ok(File {
9051 proc: self.proc.clone(),
9052 selection: query
9053 .root()
9054 .select("node")
9055 .arg("id", &id.0)
9056 .inline_fragment("File"),
9057 graphql_client: self.graphql_client.clone(),
9058 })
9059 }
9060 pub async fn contents(&self) -> Result<String, DaggerError> {
9066 let query = self.selection.select("contents");
9067 query.execute(self.graphql_client.clone()).await
9068 }
9069 pub async fn contents_opts(&self, opts: FileContentsOpts) -> Result<String, DaggerError> {
9075 let mut query = self.selection.select("contents");
9076 if let Some(offset_lines) = opts.offset_lines {
9077 query = query.arg("offsetLines", offset_lines);
9078 }
9079 if let Some(limit_lines) = opts.limit_lines {
9080 query = query.arg("limitLines", limit_lines);
9081 }
9082 query.execute(self.graphql_client.clone()).await
9083 }
9084 pub async fn size(&self) -> Result<isize, DaggerError> {
9086 let query = self.selection.select("size");
9087 query.execute(self.graphql_client.clone()).await
9088 }
9089 pub async fn name(&self) -> Result<String, DaggerError> {
9091 let query = self.selection.select("name");
9092 query.execute(self.graphql_client.clone()).await
9093 }
9094 pub async fn stat(&self) -> Result<Option<Stat>, DaggerError> {
9096 let query = self.selection.select("stat");
9097 let query = query.select("id");
9098 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
9099 Ok(id.map(|id| Stat {
9100 proc: self.proc.clone(),
9101 selection: query
9102 .root()
9103 .select("node")
9104 .arg("id", &id.0)
9105 .inline_fragment("Stat"),
9106 graphql_client: self.graphql_client.clone(),
9107 }))
9108 }
9109 pub async fn digest(&self) -> Result<String, DaggerError> {
9115 let query = self.selection.select("digest");
9116 query.execute(self.graphql_client.clone()).await
9117 }
9118 pub async fn digest_opts(&self, opts: FileDigestOpts) -> Result<String, DaggerError> {
9124 let mut query = self.selection.select("digest");
9125 if let Some(exclude_metadata) = opts.exclude_metadata {
9126 query = query.arg("excludeMetadata", exclude_metadata);
9127 }
9128 query.execute(self.graphql_client.clone()).await
9129 }
9130 pub fn with_name(&self, name: impl Into<String>) -> File {
9136 let mut query = self.selection.select("withName");
9137 query = query.arg("name", name.into());
9138 File {
9139 proc: self.proc.clone(),
9140 selection: query,
9141 graphql_client: self.graphql_client.clone(),
9142 }
9143 }
9144 pub async fn search(
9152 &self,
9153 pattern: impl Into<String>,
9154 ) -> Result<Vec<SearchResult>, DaggerError> {
9155 let mut query = self.selection.select("search");
9156 query = query.arg("pattern", pattern.into());
9157 let query = query.select("id");
9158 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
9159 Ok(ids
9160 .into_iter()
9161 .map(|id| SearchResult {
9162 proc: self.proc.clone(),
9163 selection: crate::querybuilder::query()
9164 .select("node")
9165 .arg("id", &id.0)
9166 .inline_fragment("SearchResult"),
9167 graphql_client: self.graphql_client.clone(),
9168 })
9169 .collect())
9170 }
9171 pub async fn search_opts<'a>(
9179 &self,
9180 pattern: impl Into<String>,
9181 opts: FileSearchOpts<'a>,
9182 ) -> Result<Vec<SearchResult>, DaggerError> {
9183 let mut query = self.selection.select("search");
9184 query = query.arg("pattern", pattern.into());
9185 if let Some(literal) = opts.literal {
9186 query = query.arg("literal", literal);
9187 }
9188 if let Some(multiline) = opts.multiline {
9189 query = query.arg("multiline", multiline);
9190 }
9191 if let Some(dotall) = opts.dotall {
9192 query = query.arg("dotall", dotall);
9193 }
9194 if let Some(insensitive) = opts.insensitive {
9195 query = query.arg("insensitive", insensitive);
9196 }
9197 if let Some(skip_ignored) = opts.skip_ignored {
9198 query = query.arg("skipIgnored", skip_ignored);
9199 }
9200 if let Some(skip_hidden) = opts.skip_hidden {
9201 query = query.arg("skipHidden", skip_hidden);
9202 }
9203 if let Some(files_only) = opts.files_only {
9204 query = query.arg("filesOnly", files_only);
9205 }
9206 if let Some(limit) = opts.limit {
9207 query = query.arg("limit", limit);
9208 }
9209 if let Some(paths) = opts.paths {
9210 query = query.arg("paths", paths);
9211 }
9212 if let Some(globs) = opts.globs {
9213 query = query.arg("globs", globs);
9214 }
9215 let query = query.select("id");
9216 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
9217 Ok(ids
9218 .into_iter()
9219 .map(|id| SearchResult {
9220 proc: self.proc.clone(),
9221 selection: crate::querybuilder::query()
9222 .select("node")
9223 .arg("id", &id.0)
9224 .inline_fragment("SearchResult"),
9225 graphql_client: self.graphql_client.clone(),
9226 })
9227 .collect())
9228 }
9229 pub fn with_replaced(&self, search: impl Into<String>, replacement: impl Into<String>) -> File {
9241 let mut query = self.selection.select("withReplaced");
9242 query = query.arg("search", search.into());
9243 query = query.arg("replacement", replacement.into());
9244 File {
9245 proc: self.proc.clone(),
9246 selection: query,
9247 graphql_client: self.graphql_client.clone(),
9248 }
9249 }
9250 pub fn with_replaced_opts(
9262 &self,
9263 search: impl Into<String>,
9264 replacement: impl Into<String>,
9265 opts: FileWithReplacedOpts,
9266 ) -> File {
9267 let mut query = self.selection.select("withReplaced");
9268 query = query.arg("search", search.into());
9269 query = query.arg("replacement", replacement.into());
9270 if let Some(all) = opts.all {
9271 query = query.arg("all", all);
9272 }
9273 if let Some(first_from) = opts.first_from {
9274 query = query.arg("firstFrom", first_from);
9275 }
9276 File {
9277 proc: self.proc.clone(),
9278 selection: query,
9279 graphql_client: self.graphql_client.clone(),
9280 }
9281 }
9282 pub async fn export(&self, path: impl Into<String>) -> Result<String, DaggerError> {
9289 let mut query = self.selection.select("export");
9290 query = query.arg("path", path.into());
9291 query.execute(self.graphql_client.clone()).await
9292 }
9293 pub async fn export_opts(
9300 &self,
9301 path: impl Into<String>,
9302 opts: FileExportOpts,
9303 ) -> Result<String, DaggerError> {
9304 let mut query = self.selection.select("export");
9305 query = query.arg("path", path.into());
9306 if let Some(allow_parent_dir_path) = opts.allow_parent_dir_path {
9307 query = query.arg("allowParentDirPath", allow_parent_dir_path);
9308 }
9309 query.execute(self.graphql_client.clone()).await
9310 }
9311 pub fn with_timestamps(&self, timestamp: isize) -> File {
9319 let mut query = self.selection.select("withTimestamps");
9320 query = query.arg("timestamp", timestamp);
9321 File {
9322 proc: self.proc.clone(),
9323 selection: query,
9324 graphql_client: self.graphql_client.clone(),
9325 }
9326 }
9327 pub fn chown(&self, owner: impl Into<String>) -> File {
9337 let mut query = self.selection.select("chown");
9338 query = query.arg("owner", owner.into());
9339 File {
9340 proc: self.proc.clone(),
9341 selection: query,
9342 graphql_client: self.graphql_client.clone(),
9343 }
9344 }
9345 pub fn as_git_bundle(&self) -> GitBundle {
9347 let query = self.selection.select("asGitBundle");
9348 GitBundle {
9349 proc: self.proc.clone(),
9350 selection: query,
9351 graphql_client: self.graphql_client.clone(),
9352 }
9353 }
9354 pub fn as_json(&self) -> JsonValue {
9356 let query = self.selection.select("asJSON");
9357 JsonValue {
9358 proc: self.proc.clone(),
9359 selection: query,
9360 graphql_client: self.graphql_client.clone(),
9361 }
9362 }
9363 pub fn as_env_file(&self) -> EnvFile {
9369 let query = self.selection.select("asEnvFile");
9370 EnvFile {
9371 proc: self.proc.clone(),
9372 selection: query,
9373 graphql_client: self.graphql_client.clone(),
9374 }
9375 }
9376 pub fn as_env_file_opts(&self, opts: FileAsEnvFileOpts) -> EnvFile {
9382 let mut query = self.selection.select("asEnvFile");
9383 if let Some(expand) = opts.expand {
9384 query = query.arg("expand", expand);
9385 }
9386 EnvFile {
9387 proc: self.proc.clone(),
9388 selection: query,
9389 graphql_client: self.graphql_client.clone(),
9390 }
9391 }
9392}
9393impl Exportable for File {
9394 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
9395 let query = self.selection.select("id");
9396 let graphql_client = self.graphql_client.clone();
9397 async move { query.execute(graphql_client).await }
9398 }
9399 fn export(
9400 &self,
9401 path: impl Into<String>,
9402 ) -> impl core::future::Future<Output = Result<String, DaggerError>> + Send {
9403 let mut query = self.selection.select("export");
9404 query = query.arg("path", path.into());
9405 let graphql_client = self.graphql_client.clone();
9406 async move { query.execute(graphql_client).await }
9407 }
9408}
9409impl Node for File {
9410 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
9411 let query = self.selection.select("id");
9412 let graphql_client = self.graphql_client.clone();
9413 async move { query.execute(graphql_client).await }
9414 }
9415}
9416impl Syncer for File {
9417 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
9418 let query = self.selection.select("id");
9419 let graphql_client = self.graphql_client.clone();
9420 async move { query.execute(graphql_client).await }
9421 }
9422 fn sync(&self) -> impl core::future::Future<Output = Result<Self, DaggerError>> + Send {
9423 let query = self.selection.select("sync");
9424 let proc = self.proc.clone();
9425 let graphql_client = self.graphql_client.clone();
9426 async move {
9427 let id: Id = query.execute(graphql_client.clone()).await?;
9428 Ok(Self {
9429 proc,
9430 selection: query
9431 .root()
9432 .select("node")
9433 .arg("id", &id.0)
9434 .inline_fragment("File"),
9435 graphql_client,
9436 })
9437 }
9438 }
9439}
9440#[derive(Clone)]
9441pub struct Function {
9442 pub proc: Option<Arc<DaggerSessionProc>>,
9443 pub selection: Selection,
9444 pub graphql_client: DynGraphQLClient,
9445}
9446#[derive(Builder, Debug, PartialEq)]
9447pub struct FunctionWithDeprecatedOpts<'a> {
9448 #[builder(setter(into, strip_option), default)]
9450 pub reason: Option<&'a str>,
9451}
9452#[derive(Builder, Debug, PartialEq)]
9453pub struct FunctionWithArgOpts<'a> {
9454 #[builder(setter(into, strip_option), default)]
9455 pub default_address: Option<&'a str>,
9456 #[builder(setter(into, strip_option), default)]
9458 pub default_path: Option<&'a str>,
9459 #[builder(setter(into, strip_option), default)]
9461 pub default_value: Option<Json>,
9462 #[builder(setter(into, strip_option), default)]
9464 pub deprecated: Option<&'a str>,
9465 #[builder(setter(into, strip_option), default)]
9467 pub description: Option<&'a str>,
9468 #[builder(setter(into, strip_option), default)]
9470 pub ignore: Option<Vec<&'a str>>,
9471 #[builder(setter(into, strip_option), default)]
9473 pub source_map: Option<Id>,
9474}
9475#[derive(Builder, Debug, PartialEq)]
9476pub struct FunctionWithCachePolicyOpts<'a> {
9477 #[builder(setter(into, strip_option), default)]
9479 pub time_to_live: Option<&'a str>,
9480}
9481impl IntoID<Id> for Function {
9482 fn into_id(
9483 self,
9484 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
9485 Box::pin(async move { self.id().await })
9486 }
9487}
9488impl Loadable for Function {
9489 fn graphql_type() -> &'static str {
9490 "Function"
9491 }
9492 fn from_query(
9493 proc: Option<Arc<DaggerSessionProc>>,
9494 selection: Selection,
9495 graphql_client: DynGraphQLClient,
9496 ) -> Self {
9497 Self {
9498 proc,
9499 selection,
9500 graphql_client,
9501 }
9502 }
9503}
9504impl Function {
9505 pub async fn id(&self) -> Result<Id, DaggerError> {
9507 let query = self.selection.select("id");
9508 query.execute(self.graphql_client.clone()).await
9509 }
9510 pub fn with_description(&self, description: impl Into<String>) -> Function {
9516 let mut query = self.selection.select("withDescription");
9517 query = query.arg("description", description.into());
9518 Function {
9519 proc: self.proc.clone(),
9520 selection: query,
9521 graphql_client: self.graphql_client.clone(),
9522 }
9523 }
9524 pub fn with_deprecated(&self) -> Function {
9530 let query = self.selection.select("withDeprecated");
9531 Function {
9532 proc: self.proc.clone(),
9533 selection: query,
9534 graphql_client: self.graphql_client.clone(),
9535 }
9536 }
9537 pub fn with_deprecated_opts<'a>(&self, opts: FunctionWithDeprecatedOpts<'a>) -> Function {
9543 let mut query = self.selection.select("withDeprecated");
9544 if let Some(reason) = opts.reason {
9545 query = query.arg("reason", reason);
9546 }
9547 Function {
9548 proc: self.proc.clone(),
9549 selection: query,
9550 graphql_client: self.graphql_client.clone(),
9551 }
9552 }
9553 pub fn with_check(&self) -> Function {
9555 let query = self.selection.select("withCheck");
9556 Function {
9557 proc: self.proc.clone(),
9558 selection: query,
9559 graphql_client: self.graphql_client.clone(),
9560 }
9561 }
9562 pub fn with_generator(&self) -> Function {
9564 let query = self.selection.select("withGenerator");
9565 Function {
9566 proc: self.proc.clone(),
9567 selection: query,
9568 graphql_client: self.graphql_client.clone(),
9569 }
9570 }
9571 pub fn with_up(&self) -> Function {
9573 let query = self.selection.select("withUp");
9574 Function {
9575 proc: self.proc.clone(),
9576 selection: query,
9577 graphql_client: self.graphql_client.clone(),
9578 }
9579 }
9580 pub fn with_agent(&self) -> Function {
9582 let query = self.selection.select("withAgent");
9583 Function {
9584 proc: self.proc.clone(),
9585 selection: query,
9586 graphql_client: self.graphql_client.clone(),
9587 }
9588 }
9589 pub fn with_source_map(&self, source_map: impl IntoID<Id>) -> Function {
9595 let mut query = self.selection.select("withSourceMap");
9596 query = query.arg_lazy(
9597 "sourceMap",
9598 Box::new(move || {
9599 let source_map = source_map.clone();
9600 Box::pin(async move { source_map.into_id().await.unwrap().quote() })
9601 }),
9602 );
9603 Function {
9604 proc: self.proc.clone(),
9605 selection: query,
9606 graphql_client: self.graphql_client.clone(),
9607 }
9608 }
9609 pub fn with_arg(&self, name: impl Into<String>, type_def: impl IntoID<Id>) -> Function {
9617 let mut query = self.selection.select("withArg");
9618 query = query.arg("name", name.into());
9619 query = query.arg_lazy(
9620 "typeDef",
9621 Box::new(move || {
9622 let type_def = type_def.clone();
9623 Box::pin(async move { type_def.into_id().await.unwrap().quote() })
9624 }),
9625 );
9626 Function {
9627 proc: self.proc.clone(),
9628 selection: query,
9629 graphql_client: self.graphql_client.clone(),
9630 }
9631 }
9632 pub fn with_arg_opts<'a>(
9640 &self,
9641 name: impl Into<String>,
9642 type_def: impl IntoID<Id>,
9643 opts: FunctionWithArgOpts<'a>,
9644 ) -> Function {
9645 let mut query = self.selection.select("withArg");
9646 query = query.arg("name", name.into());
9647 query = query.arg_lazy(
9648 "typeDef",
9649 Box::new(move || {
9650 let type_def = type_def.clone();
9651 Box::pin(async move { type_def.into_id().await.unwrap().quote() })
9652 }),
9653 );
9654 if let Some(description) = opts.description {
9655 query = query.arg("description", description);
9656 }
9657 if let Some(default_value) = opts.default_value {
9658 query = query.arg("defaultValue", default_value);
9659 }
9660 if let Some(default_path) = opts.default_path {
9661 query = query.arg("defaultPath", default_path);
9662 }
9663 if let Some(ignore) = opts.ignore {
9664 query = query.arg("ignore", ignore);
9665 }
9666 if let Some(source_map) = opts.source_map {
9667 query = query.arg("sourceMap", source_map);
9668 }
9669 if let Some(deprecated) = opts.deprecated {
9670 query = query.arg("deprecated", deprecated);
9671 }
9672 if let Some(default_address) = opts.default_address {
9673 query = query.arg("defaultAddress", default_address);
9674 }
9675 Function {
9676 proc: self.proc.clone(),
9677 selection: query,
9678 graphql_client: self.graphql_client.clone(),
9679 }
9680 }
9681 pub fn with_cache_policy(&self, policy: FunctionCachePolicy) -> Function {
9688 let mut query = self.selection.select("withCachePolicy");
9689 query = query.arg("policy", policy);
9690 Function {
9691 proc: self.proc.clone(),
9692 selection: query,
9693 graphql_client: self.graphql_client.clone(),
9694 }
9695 }
9696 pub fn with_cache_policy_opts<'a>(
9703 &self,
9704 policy: FunctionCachePolicy,
9705 opts: FunctionWithCachePolicyOpts<'a>,
9706 ) -> Function {
9707 let mut query = self.selection.select("withCachePolicy");
9708 query = query.arg("policy", policy);
9709 if let Some(time_to_live) = opts.time_to_live {
9710 query = query.arg("timeToLive", time_to_live);
9711 }
9712 Function {
9713 proc: self.proc.clone(),
9714 selection: query,
9715 graphql_client: self.graphql_client.clone(),
9716 }
9717 }
9718 pub async fn name(&self) -> Result<String, DaggerError> {
9720 let query = self.selection.select("name");
9721 query.execute(self.graphql_client.clone()).await
9722 }
9723 pub async fn description(&self) -> Result<String, DaggerError> {
9725 let query = self.selection.select("description");
9726 query.execute(self.graphql_client.clone()).await
9727 }
9728 pub async fn deprecated(&self) -> Result<String, DaggerError> {
9730 let query = self.selection.select("deprecated");
9731 query.execute(self.graphql_client.clone()).await
9732 }
9733 pub async fn source_map(&self) -> Result<Option<SourceMap>, DaggerError> {
9735 let query = self.selection.select("sourceMap");
9736 let query = query.select("id");
9737 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
9738 Ok(id.map(|id| SourceMap {
9739 proc: self.proc.clone(),
9740 selection: query
9741 .root()
9742 .select("node")
9743 .arg("id", &id.0)
9744 .inline_fragment("SourceMap"),
9745 graphql_client: self.graphql_client.clone(),
9746 }))
9747 }
9748 pub async fn source_module_name(&self) -> Result<String, DaggerError> {
9750 let query = self.selection.select("sourceModuleName");
9751 query.execute(self.graphql_client.clone()).await
9752 }
9753 pub async fn args(&self) -> Result<Vec<FunctionArg>, DaggerError> {
9755 let query = self.selection.select("args");
9756 let query = query.select("id");
9757 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
9758 Ok(ids
9759 .into_iter()
9760 .map(|id| FunctionArg {
9761 proc: self.proc.clone(),
9762 selection: crate::querybuilder::query()
9763 .select("node")
9764 .arg("id", &id.0)
9765 .inline_fragment("FunctionArg"),
9766 graphql_client: self.graphql_client.clone(),
9767 })
9768 .collect())
9769 }
9770 pub fn return_type(&self) -> TypeDef {
9772 let query = self.selection.select("returnType");
9773 TypeDef {
9774 proc: self.proc.clone(),
9775 selection: query,
9776 graphql_client: self.graphql_client.clone(),
9777 }
9778 }
9779}
9780impl Node for Function {
9781 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
9782 let query = self.selection.select("id");
9783 let graphql_client = self.graphql_client.clone();
9784 async move { query.execute(graphql_client).await }
9785 }
9786}
9787#[derive(Clone)]
9788pub struct FunctionArg {
9789 pub proc: Option<Arc<DaggerSessionProc>>,
9790 pub selection: Selection,
9791 pub graphql_client: DynGraphQLClient,
9792}
9793impl IntoID<Id> for FunctionArg {
9794 fn into_id(
9795 self,
9796 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
9797 Box::pin(async move { self.id().await })
9798 }
9799}
9800impl Loadable for FunctionArg {
9801 fn graphql_type() -> &'static str {
9802 "FunctionArg"
9803 }
9804 fn from_query(
9805 proc: Option<Arc<DaggerSessionProc>>,
9806 selection: Selection,
9807 graphql_client: DynGraphQLClient,
9808 ) -> Self {
9809 Self {
9810 proc,
9811 selection,
9812 graphql_client,
9813 }
9814 }
9815}
9816impl FunctionArg {
9817 pub async fn id(&self) -> Result<Id, DaggerError> {
9819 let query = self.selection.select("id");
9820 query.execute(self.graphql_client.clone()).await
9821 }
9822 pub async fn name(&self) -> Result<String, DaggerError> {
9824 let query = self.selection.select("name");
9825 query.execute(self.graphql_client.clone()).await
9826 }
9827 pub async fn description(&self) -> Result<String, DaggerError> {
9829 let query = self.selection.select("description");
9830 query.execute(self.graphql_client.clone()).await
9831 }
9832 pub async fn source_map(&self) -> Result<Option<SourceMap>, DaggerError> {
9834 let query = self.selection.select("sourceMap");
9835 let query = query.select("id");
9836 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
9837 Ok(id.map(|id| SourceMap {
9838 proc: self.proc.clone(),
9839 selection: query
9840 .root()
9841 .select("node")
9842 .arg("id", &id.0)
9843 .inline_fragment("SourceMap"),
9844 graphql_client: self.graphql_client.clone(),
9845 }))
9846 }
9847 pub async fn default_value(&self) -> Result<Json, DaggerError> {
9849 let query = self.selection.select("defaultValue");
9850 query.execute(self.graphql_client.clone()).await
9851 }
9852 pub async fn default_path(&self) -> Result<String, DaggerError> {
9854 let query = self.selection.select("defaultPath");
9855 query.execute(self.graphql_client.clone()).await
9856 }
9857 pub async fn default_address(&self) -> Result<String, DaggerError> {
9859 let query = self.selection.select("defaultAddress");
9860 query.execute(self.graphql_client.clone()).await
9861 }
9862 pub async fn ignore(&self) -> Result<Vec<String>, DaggerError> {
9864 let query = self.selection.select("ignore");
9865 query.execute(self.graphql_client.clone()).await
9866 }
9867 pub async fn deprecated(&self) -> Result<String, DaggerError> {
9869 let query = self.selection.select("deprecated");
9870 query.execute(self.graphql_client.clone()).await
9871 }
9872 pub fn type_def(&self) -> TypeDef {
9874 let query = self.selection.select("typeDef");
9875 TypeDef {
9876 proc: self.proc.clone(),
9877 selection: query,
9878 graphql_client: self.graphql_client.clone(),
9879 }
9880 }
9881}
9882impl Node for FunctionArg {
9883 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
9884 let query = self.selection.select("id");
9885 let graphql_client = self.graphql_client.clone();
9886 async move { query.execute(graphql_client).await }
9887 }
9888}
9889#[derive(Clone)]
9890pub struct FunctionCall {
9891 pub proc: Option<Arc<DaggerSessionProc>>,
9892 pub selection: Selection,
9893 pub graphql_client: DynGraphQLClient,
9894}
9895impl IntoID<Id> for FunctionCall {
9896 fn into_id(
9897 self,
9898 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
9899 Box::pin(async move { self.id().await })
9900 }
9901}
9902impl Loadable for FunctionCall {
9903 fn graphql_type() -> &'static str {
9904 "FunctionCall"
9905 }
9906 fn from_query(
9907 proc: Option<Arc<DaggerSessionProc>>,
9908 selection: Selection,
9909 graphql_client: DynGraphQLClient,
9910 ) -> Self {
9911 Self {
9912 proc,
9913 selection,
9914 graphql_client,
9915 }
9916 }
9917}
9918impl FunctionCall {
9919 pub async fn id(&self) -> Result<Id, DaggerError> {
9921 let query = self.selection.select("id");
9922 query.execute(self.graphql_client.clone()).await
9923 }
9924 pub async fn return_value(&self, value: Json) -> Result<Void, DaggerError> {
9930 let mut query = self.selection.select("returnValue");
9931 query = query.arg("value", value);
9932 query.execute(self.graphql_client.clone()).await
9933 }
9934 pub async fn return_error(&self, error: impl IntoID<Id>) -> Result<Void, DaggerError> {
9940 let mut query = self.selection.select("returnError");
9941 query = query.arg_lazy(
9942 "error",
9943 Box::new(move || {
9944 let error = error.clone();
9945 Box::pin(async move { error.into_id().await.unwrap().quote() })
9946 }),
9947 );
9948 query.execute(self.graphql_client.clone()).await
9949 }
9950 pub async fn name(&self) -> Result<String, DaggerError> {
9952 let query = self.selection.select("name");
9953 query.execute(self.graphql_client.clone()).await
9954 }
9955 pub async fn parent_name(&self) -> Result<String, DaggerError> {
9957 let query = self.selection.select("parentName");
9958 query.execute(self.graphql_client.clone()).await
9959 }
9960 pub async fn parent(&self) -> Result<Json, DaggerError> {
9962 let query = self.selection.select("parent");
9963 query.execute(self.graphql_client.clone()).await
9964 }
9965 pub async fn input_args(&self) -> Result<Vec<FunctionCallArgValue>, DaggerError> {
9967 let query = self.selection.select("inputArgs");
9968 let query = query.select("id");
9969 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
9970 Ok(ids
9971 .into_iter()
9972 .map(|id| FunctionCallArgValue {
9973 proc: self.proc.clone(),
9974 selection: crate::querybuilder::query()
9975 .select("node")
9976 .arg("id", &id.0)
9977 .inline_fragment("FunctionCallArgValue"),
9978 graphql_client: self.graphql_client.clone(),
9979 })
9980 .collect())
9981 }
9982}
9983impl Node for FunctionCall {
9984 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
9985 let query = self.selection.select("id");
9986 let graphql_client = self.graphql_client.clone();
9987 async move { query.execute(graphql_client).await }
9988 }
9989}
9990#[derive(Clone)]
9991pub struct FunctionCallArgValue {
9992 pub proc: Option<Arc<DaggerSessionProc>>,
9993 pub selection: Selection,
9994 pub graphql_client: DynGraphQLClient,
9995}
9996impl IntoID<Id> for FunctionCallArgValue {
9997 fn into_id(
9998 self,
9999 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
10000 Box::pin(async move { self.id().await })
10001 }
10002}
10003impl Loadable for FunctionCallArgValue {
10004 fn graphql_type() -> &'static str {
10005 "FunctionCallArgValue"
10006 }
10007 fn from_query(
10008 proc: Option<Arc<DaggerSessionProc>>,
10009 selection: Selection,
10010 graphql_client: DynGraphQLClient,
10011 ) -> Self {
10012 Self {
10013 proc,
10014 selection,
10015 graphql_client,
10016 }
10017 }
10018}
10019impl FunctionCallArgValue {
10020 pub async fn id(&self) -> Result<Id, DaggerError> {
10022 let query = self.selection.select("id");
10023 query.execute(self.graphql_client.clone()).await
10024 }
10025 pub async fn name(&self) -> Result<String, DaggerError> {
10027 let query = self.selection.select("name");
10028 query.execute(self.graphql_client.clone()).await
10029 }
10030 pub async fn value(&self) -> Result<Json, DaggerError> {
10032 let query = self.selection.select("value");
10033 query.execute(self.graphql_client.clone()).await
10034 }
10035}
10036impl Node for FunctionCallArgValue {
10037 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
10038 let query = self.selection.select("id");
10039 let graphql_client = self.graphql_client.clone();
10040 async move { query.execute(graphql_client).await }
10041 }
10042}
10043#[derive(Clone)]
10044pub struct GeneratedCode {
10045 pub proc: Option<Arc<DaggerSessionProc>>,
10046 pub selection: Selection,
10047 pub graphql_client: DynGraphQLClient,
10048}
10049impl IntoID<Id> for GeneratedCode {
10050 fn into_id(
10051 self,
10052 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
10053 Box::pin(async move { self.id().await })
10054 }
10055}
10056impl Loadable for GeneratedCode {
10057 fn graphql_type() -> &'static str {
10058 "GeneratedCode"
10059 }
10060 fn from_query(
10061 proc: Option<Arc<DaggerSessionProc>>,
10062 selection: Selection,
10063 graphql_client: DynGraphQLClient,
10064 ) -> Self {
10065 Self {
10066 proc,
10067 selection,
10068 graphql_client,
10069 }
10070 }
10071}
10072impl GeneratedCode {
10073 pub async fn id(&self) -> Result<Id, DaggerError> {
10075 let query = self.selection.select("id");
10076 query.execute(self.graphql_client.clone()).await
10077 }
10078 pub fn with_vcs_generated_paths(&self, paths: Vec<impl Into<String>>) -> GeneratedCode {
10080 let mut query = self.selection.select("withVCSGeneratedPaths");
10081 query = query.arg(
10082 "paths",
10083 paths.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
10084 );
10085 GeneratedCode {
10086 proc: self.proc.clone(),
10087 selection: query,
10088 graphql_client: self.graphql_client.clone(),
10089 }
10090 }
10091 pub fn with_vcs_ignored_paths(&self, paths: Vec<impl Into<String>>) -> GeneratedCode {
10093 let mut query = self.selection.select("withVCSIgnoredPaths");
10094 query = query.arg(
10095 "paths",
10096 paths.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
10097 );
10098 GeneratedCode {
10099 proc: self.proc.clone(),
10100 selection: query,
10101 graphql_client: self.graphql_client.clone(),
10102 }
10103 }
10104 pub fn code(&self) -> Directory {
10106 let query = self.selection.select("code");
10107 Directory {
10108 proc: self.proc.clone(),
10109 selection: query,
10110 graphql_client: self.graphql_client.clone(),
10111 }
10112 }
10113 pub async fn vcs_generated_paths(&self) -> Result<Vec<String>, DaggerError> {
10115 let query = self.selection.select("vcsGeneratedPaths");
10116 query.execute(self.graphql_client.clone()).await
10117 }
10118 pub async fn vcs_ignored_paths(&self) -> Result<Vec<String>, DaggerError> {
10120 let query = self.selection.select("vcsIgnoredPaths");
10121 query.execute(self.graphql_client.clone()).await
10122 }
10123}
10124impl Node for GeneratedCode {
10125 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
10126 let query = self.selection.select("id");
10127 let graphql_client = self.graphql_client.clone();
10128 async move { query.execute(graphql_client).await }
10129 }
10130}
10131#[derive(Clone)]
10132pub struct Generator {
10133 pub proc: Option<Arc<DaggerSessionProc>>,
10134 pub selection: Selection,
10135 pub graphql_client: DynGraphQLClient,
10136}
10137impl IntoID<Id> for Generator {
10138 fn into_id(
10139 self,
10140 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
10141 Box::pin(async move { self.id().await })
10142 }
10143}
10144impl Loadable for Generator {
10145 fn graphql_type() -> &'static str {
10146 "Generator"
10147 }
10148 fn from_query(
10149 proc: Option<Arc<DaggerSessionProc>>,
10150 selection: Selection,
10151 graphql_client: DynGraphQLClient,
10152 ) -> Self {
10153 Self {
10154 proc,
10155 selection,
10156 graphql_client,
10157 }
10158 }
10159}
10160impl Generator {
10161 pub async fn id(&self) -> Result<Id, DaggerError> {
10163 let query = self.selection.select("id");
10164 query.execute(self.graphql_client.clone()).await
10165 }
10166 pub fn changeset(&self) -> Changeset {
10168 let query = self.selection.select("changeset");
10169 Changeset {
10170 proc: self.proc.clone(),
10171 selection: query,
10172 graphql_client: self.graphql_client.clone(),
10173 }
10174 }
10175 pub fn sync(&self) -> Generator {
10177 let query = self.selection.select("sync");
10178 Generator {
10179 proc: self.proc.clone(),
10180 selection: query,
10181 graphql_client: self.graphql_client.clone(),
10182 }
10183 }
10184 pub fn stale(&self) -> Check {
10186 let query = self.selection.select("stale");
10187 Check {
10188 proc: self.proc.clone(),
10189 selection: query,
10190 graphql_client: self.graphql_client.clone(),
10191 }
10192 }
10193}
10194impl Node for Generator {
10195 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
10196 let query = self.selection.select("id");
10197 let graphql_client = self.graphql_client.clone();
10198 async move { query.execute(graphql_client).await }
10199 }
10200}
10201#[derive(Clone)]
10202pub struct GitBundle {
10203 pub proc: Option<Arc<DaggerSessionProc>>,
10204 pub selection: Selection,
10205 pub graphql_client: DynGraphQLClient,
10206}
10207impl IntoID<Id> for GitBundle {
10208 fn into_id(
10209 self,
10210 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
10211 Box::pin(async move { self.id().await })
10212 }
10213}
10214impl Loadable for GitBundle {
10215 fn graphql_type() -> &'static str {
10216 "GitBundle"
10217 }
10218 fn from_query(
10219 proc: Option<Arc<DaggerSessionProc>>,
10220 selection: Selection,
10221 graphql_client: DynGraphQLClient,
10222 ) -> Self {
10223 Self {
10224 proc,
10225 selection,
10226 graphql_client,
10227 }
10228 }
10229}
10230impl GitBundle {
10231 pub async fn id(&self) -> Result<Id, DaggerError> {
10233 let query = self.selection.select("id");
10234 query.execute(self.graphql_client.clone()).await
10235 }
10236 pub fn validate(&self) -> GitBundle {
10238 let query = self.selection.select("validate");
10239 GitBundle {
10240 proc: self.proc.clone(),
10241 selection: query,
10242 graphql_client: self.graphql_client.clone(),
10243 }
10244 }
10245 pub fn as_file(&self) -> File {
10247 let query = self.selection.select("asFile");
10248 File {
10249 proc: self.proc.clone(),
10250 selection: query,
10251 graphql_client: self.graphql_client.clone(),
10252 }
10253 }
10254 pub async fn version(&self) -> Result<isize, DaggerError> {
10256 let query = self.selection.select("version");
10257 query.execute(self.graphql_client.clone()).await
10258 }
10259 pub async fn object_format(&self) -> Result<String, DaggerError> {
10261 let query = self.selection.select("objectFormat");
10262 query.execute(self.graphql_client.clone()).await
10263 }
10264 pub async fn refs(&self) -> Result<Vec<GitBundleRef>, DaggerError> {
10266 let query = self.selection.select("refs");
10267 let query = query.select("id");
10268 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
10269 Ok(ids
10270 .into_iter()
10271 .map(|id| GitBundleRef {
10272 proc: self.proc.clone(),
10273 selection: crate::querybuilder::query()
10274 .select("node")
10275 .arg("id", &id.0)
10276 .inline_fragment("GitBundleRef"),
10277 graphql_client: self.graphql_client.clone(),
10278 })
10279 .collect())
10280 }
10281 pub async fn prerequisite_sh_as(&self) -> Result<Vec<String>, DaggerError> {
10283 let query = self.selection.select("prerequisiteSHAs");
10284 query.execute(self.graphql_client.clone()).await
10285 }
10286}
10287impl Node for GitBundle {
10288 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
10289 let query = self.selection.select("id");
10290 let graphql_client = self.graphql_client.clone();
10291 async move { query.execute(graphql_client).await }
10292 }
10293}
10294#[derive(Clone)]
10295pub struct GitBundleRef {
10296 pub proc: Option<Arc<DaggerSessionProc>>,
10297 pub selection: Selection,
10298 pub graphql_client: DynGraphQLClient,
10299}
10300impl IntoID<Id> for GitBundleRef {
10301 fn into_id(
10302 self,
10303 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
10304 Box::pin(async move { self.id().await })
10305 }
10306}
10307impl Loadable for GitBundleRef {
10308 fn graphql_type() -> &'static str {
10309 "GitBundleRef"
10310 }
10311 fn from_query(
10312 proc: Option<Arc<DaggerSessionProc>>,
10313 selection: Selection,
10314 graphql_client: DynGraphQLClient,
10315 ) -> Self {
10316 Self {
10317 proc,
10318 selection,
10319 graphql_client,
10320 }
10321 }
10322}
10323impl GitBundleRef {
10324 pub async fn id(&self) -> Result<Id, DaggerError> {
10326 let query = self.selection.select("id");
10327 query.execute(self.graphql_client.clone()).await
10328 }
10329 pub async fn name(&self) -> Result<String, DaggerError> {
10331 let query = self.selection.select("name");
10332 query.execute(self.graphql_client.clone()).await
10333 }
10334 pub async fn sha(&self) -> Result<String, DaggerError> {
10336 let query = self.selection.select("sha");
10337 query.execute(self.graphql_client.clone()).await
10338 }
10339}
10340impl Node for GitBundleRef {
10341 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
10342 let query = self.selection.select("id");
10343 let graphql_client = self.graphql_client.clone();
10344 async move { query.execute(graphql_client).await }
10345 }
10346}
10347#[derive(Clone)]
10348pub struct GitCommit {
10349 pub proc: Option<Arc<DaggerSessionProc>>,
10350 pub selection: Selection,
10351 pub graphql_client: DynGraphQLClient,
10352}
10353#[derive(Builder, Debug, PartialEq)]
10354pub struct GitCommitReleaseTagOpts {
10355 #[builder(setter(into, strip_option), default)]
10357 pub include_pre_release: Option<bool>,
10358}
10359#[derive(Builder, Debug, PartialEq)]
10360pub struct GitCommitAncestorReleaseTagOpts {
10361 #[builder(setter(into, strip_option), default)]
10363 pub include_pre_release: Option<bool>,
10364}
10365#[derive(Builder, Debug, PartialEq)]
10366pub struct GitCommitTreeOpts {
10367 #[builder(setter(into, strip_option), default)]
10369 pub depth: Option<isize>,
10370 #[builder(setter(into, strip_option), default)]
10372 pub discard_git_dir: Option<bool>,
10373 #[builder(setter(into, strip_option), default)]
10375 pub include_tags: Option<bool>,
10376}
10377#[derive(Builder, Debug, PartialEq)]
10378pub struct GitCommitChangesOpts {
10379 #[builder(setter(into, strip_option), default)]
10381 pub against: Option<Id>,
10382}
10383impl IntoID<Id> for GitCommit {
10384 fn into_id(
10385 self,
10386 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
10387 Box::pin(async move { self.id().await })
10388 }
10389}
10390impl Loadable for GitCommit {
10391 fn graphql_type() -> &'static str {
10392 "GitCommit"
10393 }
10394 fn from_query(
10395 proc: Option<Arc<DaggerSessionProc>>,
10396 selection: Selection,
10397 graphql_client: DynGraphQLClient,
10398 ) -> Self {
10399 Self {
10400 proc,
10401 selection,
10402 graphql_client,
10403 }
10404 }
10405}
10406impl GitCommit {
10407 pub async fn id(&self) -> Result<Id, DaggerError> {
10409 let query = self.selection.select("id");
10410 query.execute(self.graphql_client.clone()).await
10411 }
10412 pub async fn release_tag(&self) -> Result<Option<GitRef>, DaggerError> {
10418 let query = self.selection.select("releaseTag");
10419 let query = query.select("id");
10420 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
10421 Ok(id.map(|id| GitRef {
10422 proc: self.proc.clone(),
10423 selection: query
10424 .root()
10425 .select("node")
10426 .arg("id", &id.0)
10427 .inline_fragment("GitRef"),
10428 graphql_client: self.graphql_client.clone(),
10429 }))
10430 }
10431 pub async fn release_tag_opts(
10437 &self,
10438 opts: GitCommitReleaseTagOpts,
10439 ) -> Result<Option<GitRef>, DaggerError> {
10440 let mut query = self.selection.select("releaseTag");
10441 if let Some(include_pre_release) = opts.include_pre_release {
10442 query = query.arg("includePreRelease", include_pre_release);
10443 }
10444 let query = query.select("id");
10445 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
10446 Ok(id.map(|id| GitRef {
10447 proc: self.proc.clone(),
10448 selection: query
10449 .root()
10450 .select("node")
10451 .arg("id", &id.0)
10452 .inline_fragment("GitRef"),
10453 graphql_client: self.graphql_client.clone(),
10454 }))
10455 }
10456 pub async fn ancestor_release_tag(&self) -> Result<Option<GitRef>, DaggerError> {
10462 let query = self.selection.select("ancestorReleaseTag");
10463 let query = query.select("id");
10464 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
10465 Ok(id.map(|id| GitRef {
10466 proc: self.proc.clone(),
10467 selection: query
10468 .root()
10469 .select("node")
10470 .arg("id", &id.0)
10471 .inline_fragment("GitRef"),
10472 graphql_client: self.graphql_client.clone(),
10473 }))
10474 }
10475 pub async fn ancestor_release_tag_opts(
10481 &self,
10482 opts: GitCommitAncestorReleaseTagOpts,
10483 ) -> Result<Option<GitRef>, DaggerError> {
10484 let mut query = self.selection.select("ancestorReleaseTag");
10485 if let Some(include_pre_release) = opts.include_pre_release {
10486 query = query.arg("includePreRelease", include_pre_release);
10487 }
10488 let query = query.select("id");
10489 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
10490 Ok(id.map(|id| GitRef {
10491 proc: self.proc.clone(),
10492 selection: query
10493 .root()
10494 .select("node")
10495 .arg("id", &id.0)
10496 .inline_fragment("GitRef"),
10497 graphql_client: self.graphql_client.clone(),
10498 }))
10499 }
10500 pub fn tree(&self) -> Directory {
10506 let query = self.selection.select("tree");
10507 Directory {
10508 proc: self.proc.clone(),
10509 selection: query,
10510 graphql_client: self.graphql_client.clone(),
10511 }
10512 }
10513 pub fn tree_opts(&self, opts: GitCommitTreeOpts) -> Directory {
10519 let mut query = self.selection.select("tree");
10520 if let Some(discard_git_dir) = opts.discard_git_dir {
10521 query = query.arg("discardGitDir", discard_git_dir);
10522 }
10523 if let Some(depth) = opts.depth {
10524 query = query.arg("depth", depth);
10525 }
10526 if let Some(include_tags) = opts.include_tags {
10527 query = query.arg("includeTags", include_tags);
10528 }
10529 Directory {
10530 proc: self.proc.clone(),
10531 selection: query,
10532 graphql_client: self.graphql_client.clone(),
10533 }
10534 }
10535 pub fn changes(&self) -> Changeset {
10542 let query = self.selection.select("changes");
10543 Changeset {
10544 proc: self.proc.clone(),
10545 selection: query,
10546 graphql_client: self.graphql_client.clone(),
10547 }
10548 }
10549 pub fn changes_opts(&self, opts: GitCommitChangesOpts) -> Changeset {
10556 let mut query = self.selection.select("changes");
10557 if let Some(against) = opts.against {
10558 query = query.arg("against", against);
10559 }
10560 Changeset {
10561 proc: self.proc.clone(),
10562 selection: query,
10563 graphql_client: self.graphql_client.clone(),
10564 }
10565 }
10566 pub async fn sha(&self) -> Result<String, DaggerError> {
10568 let query = self.selection.select("sha");
10569 query.execute(self.graphql_client.clone()).await
10570 }
10571 pub async fn short_sha(&self) -> Result<String, DaggerError> {
10573 let query = self.selection.select("shortSha");
10574 query.execute(self.graphql_client.clone()).await
10575 }
10576 pub async fn authored_date(&self) -> Result<String, DaggerError> {
10578 let query = self.selection.select("authoredDate");
10579 query.execute(self.graphql_client.clone()).await
10580 }
10581 pub async fn committed_date(&self) -> Result<String, DaggerError> {
10583 let query = self.selection.select("committedDate");
10584 query.execute(self.graphql_client.clone()).await
10585 }
10586 pub async fn author_name(&self) -> Result<String, DaggerError> {
10588 let query = self.selection.select("authorName");
10589 query.execute(self.graphql_client.clone()).await
10590 }
10591 pub async fn author_email(&self) -> Result<String, DaggerError> {
10593 let query = self.selection.select("authorEmail");
10594 query.execute(self.graphql_client.clone()).await
10595 }
10596 pub async fn committer_name(&self) -> Result<String, DaggerError> {
10598 let query = self.selection.select("committerName");
10599 query.execute(self.graphql_client.clone()).await
10600 }
10601 pub async fn committer_email(&self) -> Result<String, DaggerError> {
10603 let query = self.selection.select("committerEmail");
10604 query.execute(self.graphql_client.clone()).await
10605 }
10606 pub async fn message(&self) -> Result<String, DaggerError> {
10608 let query = self.selection.select("message");
10609 query.execute(self.graphql_client.clone()).await
10610 }
10611 pub async fn message_headline(&self) -> Result<String, DaggerError> {
10613 let query = self.selection.select("messageHeadline");
10614 query.execute(self.graphql_client.clone()).await
10615 }
10616 pub async fn message_body(&self) -> Result<String, DaggerError> {
10618 let query = self.selection.select("messageBody");
10619 query.execute(self.graphql_client.clone()).await
10620 }
10621 pub async fn parent_shas(&self) -> Result<Vec<String>, DaggerError> {
10623 let query = self.selection.select("parentShas");
10624 query.execute(self.graphql_client.clone()).await
10625 }
10626}
10627impl Node for GitCommit {
10628 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
10629 let query = self.selection.select("id");
10630 let graphql_client = self.graphql_client.clone();
10631 async move { query.execute(graphql_client).await }
10632 }
10633}
10634#[derive(Clone)]
10635pub struct GitPushResult {
10636 pub proc: Option<Arc<DaggerSessionProc>>,
10637 pub selection: Selection,
10638 pub graphql_client: DynGraphQLClient,
10639}
10640impl IntoID<Id> for GitPushResult {
10641 fn into_id(
10642 self,
10643 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
10644 Box::pin(async move { self.id().await })
10645 }
10646}
10647impl Loadable for GitPushResult {
10648 fn graphql_type() -> &'static str {
10649 "GitPushResult"
10650 }
10651 fn from_query(
10652 proc: Option<Arc<DaggerSessionProc>>,
10653 selection: Selection,
10654 graphql_client: DynGraphQLClient,
10655 ) -> Self {
10656 Self {
10657 proc,
10658 selection,
10659 graphql_client,
10660 }
10661 }
10662}
10663impl GitPushResult {
10664 pub async fn id(&self) -> Result<Id, DaggerError> {
10666 let query = self.selection.select("id");
10667 query.execute(self.graphql_client.clone()).await
10668 }
10669 pub async fn r#ref(&self) -> Result<String, DaggerError> {
10671 let query = self.selection.select("ref");
10672 query.execute(self.graphql_client.clone()).await
10673 }
10674 pub async fn previous_sha(&self) -> Result<String, DaggerError> {
10676 let query = self.selection.select("previousSHA");
10677 query.execute(self.graphql_client.clone()).await
10678 }
10679 pub async fn sha(&self) -> Result<String, DaggerError> {
10681 let query = self.selection.select("sha");
10682 query.execute(self.graphql_client.clone()).await
10683 }
10684 pub async fn disposition(&self) -> Result<GitPushDisposition, DaggerError> {
10686 let query = self.selection.select("disposition");
10687 query.execute(self.graphql_client.clone()).await
10688 }
10689}
10690impl Node for GitPushResult {
10691 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
10692 let query = self.selection.select("id");
10693 let graphql_client = self.graphql_client.clone();
10694 async move { query.execute(graphql_client).await }
10695 }
10696}
10697#[derive(Clone)]
10698pub struct GitRef {
10699 pub proc: Option<Arc<DaggerSessionProc>>,
10700 pub selection: Selection,
10701 pub graphql_client: DynGraphQLClient,
10702}
10703#[derive(Builder, Debug, PartialEq)]
10704pub struct GitRefPushOpts<'a> {
10705 #[builder(setter(into, strip_option), default)]
10707 pub branch: Option<&'a str>,
10708 #[builder(setter(into, strip_option), default)]
10710 pub expected_remote_sha: Option<&'a str>,
10711 #[builder(setter(into, strip_option), default)]
10713 pub remote: Option<&'a str>,
10714 #[builder(setter(into, strip_option), default)]
10716 pub to: Option<Id>,
10717}
10718#[derive(Builder, Debug, PartialEq)]
10719pub struct GitRefTreeOpts {
10720 #[builder(setter(into, strip_option), default)]
10722 pub depth: Option<isize>,
10723 #[builder(setter(into, strip_option), default)]
10725 pub discard_git_dir: Option<bool>,
10726 #[builder(setter(into, strip_option), default)]
10728 pub include_tags: Option<bool>,
10729}
10730#[derive(Builder, Debug, PartialEq)]
10731pub struct GitRefLogOpts<'a> {
10732 #[builder(setter(into, strip_option), default)]
10734 pub base: Option<Id>,
10735 #[builder(setter(into, strip_option), default)]
10737 pub limit: Option<isize>,
10738 #[builder(setter(into, strip_option), default)]
10740 pub paths: Option<Vec<&'a str>>,
10741}
10742#[derive(Builder, Debug, PartialEq)]
10743pub struct GitRefWithCommitOpts<'a> {
10744 #[builder(setter(into, strip_option), default)]
10746 pub allow_empty: Option<bool>,
10747 #[builder(setter(into, strip_option), default)]
10749 pub committer_date: Option<&'a str>,
10750 #[builder(setter(into, strip_option), default)]
10752 pub committer_email: Option<&'a str>,
10753 #[builder(setter(into, strip_option), default)]
10755 pub committer_name: Option<&'a str>,
10756 #[builder(setter(into, strip_option), default)]
10758 pub signoff: Option<bool>,
10759}
10760#[derive(Builder, Debug, PartialEq)]
10761pub struct GitRefAsWorkspaceOpts<'a> {
10762 #[builder(setter(into, strip_option), default)]
10764 pub cwd: Option<&'a str>,
10765}
10766impl IntoID<Id> for GitRef {
10767 fn into_id(
10768 self,
10769 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
10770 Box::pin(async move { self.id().await })
10771 }
10772}
10773impl Loadable for GitRef {
10774 fn graphql_type() -> &'static str {
10775 "GitRef"
10776 }
10777 fn from_query(
10778 proc: Option<Arc<DaggerSessionProc>>,
10779 selection: Selection,
10780 graphql_client: DynGraphQLClient,
10781 ) -> Self {
10782 Self {
10783 proc,
10784 selection,
10785 graphql_client,
10786 }
10787 }
10788}
10789impl GitRef {
10790 pub async fn id(&self) -> Result<Id, DaggerError> {
10792 let query = self.selection.select("id");
10793 query.execute(self.graphql_client.clone()).await
10794 }
10795 pub fn push(&self) -> GitPushResult {
10803 let query = self.selection.select("push");
10804 GitPushResult {
10805 proc: self.proc.clone(),
10806 selection: query,
10807 graphql_client: self.graphql_client.clone(),
10808 }
10809 }
10810 pub fn push_opts<'a>(&self, opts: GitRefPushOpts<'a>) -> GitPushResult {
10818 let mut query = self.selection.select("push");
10819 if let Some(to) = opts.to {
10820 query = query.arg("to", to);
10821 }
10822 if let Some(remote) = opts.remote {
10823 query = query.arg("remote", remote);
10824 }
10825 if let Some(branch) = opts.branch {
10826 query = query.arg("branch", branch);
10827 }
10828 if let Some(expected_remote_sha) = opts.expected_remote_sha {
10829 query = query.arg("expectedRemoteSHA", expected_remote_sha);
10830 }
10831 GitPushResult {
10832 proc: self.proc.clone(),
10833 selection: query,
10834 graphql_client: self.graphql_client.clone(),
10835 }
10836 }
10837 pub fn target_commit(&self) -> GitCommit {
10839 let query = self.selection.select("targetCommit");
10840 GitCommit {
10841 proc: self.proc.clone(),
10842 selection: query,
10843 graphql_client: self.graphql_client.clone(),
10844 }
10845 }
10846 pub async fn commit_sha(&self) -> Result<String, DaggerError> {
10848 let query = self.selection.select("commitSHA");
10849 query.execute(self.graphql_client.clone()).await
10850 }
10851 pub fn tree(&self) -> Directory {
10857 let query = self.selection.select("tree");
10858 Directory {
10859 proc: self.proc.clone(),
10860 selection: query,
10861 graphql_client: self.graphql_client.clone(),
10862 }
10863 }
10864 pub fn tree_opts(&self, opts: GitRefTreeOpts) -> Directory {
10870 let mut query = self.selection.select("tree");
10871 if let Some(discard_git_dir) = opts.discard_git_dir {
10872 query = query.arg("discardGitDir", discard_git_dir);
10873 }
10874 if let Some(depth) = opts.depth {
10875 query = query.arg("depth", depth);
10876 }
10877 if let Some(include_tags) = opts.include_tags {
10878 query = query.arg("includeTags", include_tags);
10879 }
10880 Directory {
10881 proc: self.proc.clone(),
10882 selection: query,
10883 graphql_client: self.graphql_client.clone(),
10884 }
10885 }
10886 pub async fn commit(&self) -> Result<String, DaggerError> {
10888 let query = self.selection.select("commit");
10889 query.execute(self.graphql_client.clone()).await
10890 }
10891 pub async fn name(&self) -> Result<String, DaggerError> {
10893 let query = self.selection.select("name");
10894 query.execute(self.graphql_client.clone()).await
10895 }
10896 pub async fn r#ref(&self) -> Result<String, DaggerError> {
10898 let query = self.selection.select("ref");
10899 query.execute(self.graphql_client.clone()).await
10900 }
10901 pub async fn contains(&self, other: impl IntoID<Id>) -> Result<bool, DaggerError> {
10908 let mut query = self.selection.select("contains");
10909 query = query.arg_lazy(
10910 "other",
10911 Box::new(move || {
10912 let other = other.clone();
10913 Box::pin(async move { other.into_id().await.unwrap().quote() })
10914 }),
10915 );
10916 query.execute(self.graphql_client.clone()).await
10917 }
10918 pub fn common_ancestor(&self, other: impl IntoID<Id>) -> GitRef {
10924 let mut query = self.selection.select("commonAncestor");
10925 query = query.arg_lazy(
10926 "other",
10927 Box::new(move || {
10928 let other = other.clone();
10929 Box::pin(async move { other.into_id().await.unwrap().quote() })
10930 }),
10931 );
10932 GitRef {
10933 proc: self.proc.clone(),
10934 selection: query,
10935 graphql_client: self.graphql_client.clone(),
10936 }
10937 }
10938 pub async fn log(&self) -> Result<Vec<GitCommit>, DaggerError> {
10944 let query = self.selection.select("log");
10945 let query = query.select("id");
10946 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
10947 Ok(ids
10948 .into_iter()
10949 .map(|id| GitCommit {
10950 proc: self.proc.clone(),
10951 selection: crate::querybuilder::query()
10952 .select("node")
10953 .arg("id", &id.0)
10954 .inline_fragment("GitCommit"),
10955 graphql_client: self.graphql_client.clone(),
10956 })
10957 .collect())
10958 }
10959 pub async fn log_opts<'a>(
10965 &self,
10966 opts: GitRefLogOpts<'a>,
10967 ) -> Result<Vec<GitCommit>, DaggerError> {
10968 let mut query = self.selection.select("log");
10969 if let Some(limit) = opts.limit {
10970 query = query.arg("limit", limit);
10971 }
10972 if let Some(paths) = opts.paths {
10973 query = query.arg("paths", paths);
10974 }
10975 if let Some(base) = opts.base {
10976 query = query.arg("base", base);
10977 }
10978 let query = query.select("id");
10979 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
10980 Ok(ids
10981 .into_iter()
10982 .map(|id| GitCommit {
10983 proc: self.proc.clone(),
10984 selection: crate::querybuilder::query()
10985 .select("node")
10986 .arg("id", &id.0)
10987 .inline_fragment("GitCommit"),
10988 graphql_client: self.graphql_client.clone(),
10989 })
10990 .collect())
10991 }
10992 pub fn with_commit(
11005 &self,
11006 changes: impl IntoID<Id>,
11007 message: impl Into<String>,
11008 date: impl Into<String>,
11009 author_name: impl Into<String>,
11010 author_email: impl Into<String>,
11011 ) -> GitRef {
11012 let mut query = self.selection.select("withCommit");
11013 query = query.arg_lazy(
11014 "changes",
11015 Box::new(move || {
11016 let changes = changes.clone();
11017 Box::pin(async move { changes.into_id().await.unwrap().quote() })
11018 }),
11019 );
11020 query = query.arg("message", message.into());
11021 query = query.arg("date", date.into());
11022 query = query.arg("authorName", author_name.into());
11023 query = query.arg("authorEmail", author_email.into());
11024 GitRef {
11025 proc: self.proc.clone(),
11026 selection: query,
11027 graphql_client: self.graphql_client.clone(),
11028 }
11029 }
11030 pub fn with_commit_opts<'a>(
11043 &self,
11044 changes: impl IntoID<Id>,
11045 message: impl Into<String>,
11046 date: impl Into<String>,
11047 author_name: impl Into<String>,
11048 author_email: impl Into<String>,
11049 opts: GitRefWithCommitOpts<'a>,
11050 ) -> GitRef {
11051 let mut query = self.selection.select("withCommit");
11052 query = query.arg_lazy(
11053 "changes",
11054 Box::new(move || {
11055 let changes = changes.clone();
11056 Box::pin(async move { changes.into_id().await.unwrap().quote() })
11057 }),
11058 );
11059 query = query.arg("message", message.into());
11060 query = query.arg("date", date.into());
11061 query = query.arg("authorName", author_name.into());
11062 query = query.arg("authorEmail", author_email.into());
11063 if let Some(committer_name) = opts.committer_name {
11064 query = query.arg("committerName", committer_name);
11065 }
11066 if let Some(committer_email) = opts.committer_email {
11067 query = query.arg("committerEmail", committer_email);
11068 }
11069 if let Some(committer_date) = opts.committer_date {
11070 query = query.arg("committerDate", committer_date);
11071 }
11072 if let Some(allow_empty) = opts.allow_empty {
11073 query = query.arg("allowEmpty", allow_empty);
11074 }
11075 if let Some(signoff) = opts.signoff {
11076 query = query.arg("signoff", signoff);
11077 }
11078 GitRef {
11079 proc: self.proc.clone(),
11080 selection: query,
11081 graphql_client: self.graphql_client.clone(),
11082 }
11083 }
11084 pub fn as_repository(&self) -> GitRepository {
11087 let query = self.selection.select("asRepository");
11088 GitRepository {
11089 proc: self.proc.clone(),
11090 selection: query,
11091 graphql_client: self.graphql_client.clone(),
11092 }
11093 }
11094 pub fn as_workspace(&self) -> Workspace {
11100 let query = self.selection.select("asWorkspace");
11101 Workspace {
11102 proc: self.proc.clone(),
11103 selection: query,
11104 graphql_client: self.graphql_client.clone(),
11105 }
11106 }
11107 pub fn as_workspace_opts<'a>(&self, opts: GitRefAsWorkspaceOpts<'a>) -> Workspace {
11113 let mut query = self.selection.select("asWorkspace");
11114 if let Some(cwd) = opts.cwd {
11115 query = query.arg("cwd", cwd);
11116 }
11117 Workspace {
11118 proc: self.proc.clone(),
11119 selection: query,
11120 graphql_client: self.graphql_client.clone(),
11121 }
11122 }
11123}
11124impl Node for GitRef {
11125 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
11126 let query = self.selection.select("id");
11127 let graphql_client = self.graphql_client.clone();
11128 async move { query.execute(graphql_client).await }
11129 }
11130}
11131#[derive(Clone)]
11132pub struct GitRemote {
11133 pub proc: Option<Arc<DaggerSessionProc>>,
11134 pub selection: Selection,
11135 pub graphql_client: DynGraphQLClient,
11136}
11137impl IntoID<Id> for GitRemote {
11138 fn into_id(
11139 self,
11140 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
11141 Box::pin(async move { self.id().await })
11142 }
11143}
11144impl Loadable for GitRemote {
11145 fn graphql_type() -> &'static str {
11146 "GitRemote"
11147 }
11148 fn from_query(
11149 proc: Option<Arc<DaggerSessionProc>>,
11150 selection: Selection,
11151 graphql_client: DynGraphQLClient,
11152 ) -> Self {
11153 Self {
11154 proc,
11155 selection,
11156 graphql_client,
11157 }
11158 }
11159}
11160impl GitRemote {
11161 pub async fn id(&self) -> Result<Id, DaggerError> {
11163 let query = self.selection.select("id");
11164 query.execute(self.graphql_client.clone()).await
11165 }
11166 pub fn repository(&self) -> GitRepository {
11169 let query = self.selection.select("repository");
11170 GitRepository {
11171 proc: self.proc.clone(),
11172 selection: query,
11173 graphql_client: self.graphql_client.clone(),
11174 }
11175 }
11176 pub async fn name(&self) -> Result<String, DaggerError> {
11178 let query = self.selection.select("name");
11179 query.execute(self.graphql_client.clone()).await
11180 }
11181}
11182impl Node for GitRemote {
11183 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
11184 let query = self.selection.select("id");
11185 let graphql_client = self.graphql_client.clone();
11186 async move { query.execute(graphql_client).await }
11187 }
11188}
11189#[derive(Clone)]
11190pub struct GitRepository {
11191 pub proc: Option<Arc<DaggerSessionProc>>,
11192 pub selection: Selection,
11193 pub graphql_client: DynGraphQLClient,
11194}
11195#[derive(Builder, Debug, PartialEq)]
11196pub struct GitRepositoryHeadOpts {
11197 #[builder(setter(into, strip_option), default)]
11199 pub no_lock: Option<bool>,
11200}
11201#[derive(Builder, Debug, PartialEq)]
11202pub struct GitRepositoryRefOpts {
11203 #[builder(setter(into, strip_option), default)]
11205 pub no_lock: Option<bool>,
11206}
11207#[derive(Builder, Debug, PartialEq)]
11208pub struct GitRepositoryBranchOpts {
11209 #[builder(setter(into, strip_option), default)]
11211 pub no_lock: Option<bool>,
11212}
11213#[derive(Builder, Debug, PartialEq)]
11214pub struct GitRepositoryTagOpts {
11215 #[builder(setter(into, strip_option), default)]
11217 pub no_lock: Option<bool>,
11218}
11219#[derive(Builder, Debug, PartialEq)]
11220pub struct GitRepositoryLatestOpts<'a> {
11221 #[builder(setter(into, strip_option), default)]
11223 pub no_lock: Option<bool>,
11224 #[builder(setter(into, strip_option), default)]
11226 pub version: Option<&'a str>,
11227}
11228#[derive(Builder, Debug, PartialEq)]
11229pub struct GitRepositoryTagsOpts<'a> {
11230 #[builder(setter(into, strip_option), default)]
11232 pub patterns: Option<Vec<&'a str>>,
11233}
11234#[derive(Builder, Debug, PartialEq)]
11235pub struct GitRepositoryBranchesOpts<'a> {
11236 #[builder(setter(into, strip_option), default)]
11238 pub patterns: Option<Vec<&'a str>>,
11239}
11240#[derive(Builder, Debug, PartialEq)]
11241pub struct GitRepositoryBundleOpts {
11242 #[builder(setter(into, strip_option), default)]
11244 pub base: Option<Id>,
11245}
11246#[derive(Builder, Debug, PartialEq)]
11247pub struct GitRepositoryWithBundleOpts<'a> {
11248 #[builder(setter(into, strip_option), default)]
11250 pub prerequisite_ref: Option<&'a str>,
11251}
11252#[derive(Builder, Debug, PartialEq)]
11253pub struct GitRepositoryWithRemoteOpts<'a> {
11254 #[builder(setter(into, strip_option), default)]
11256 pub push_url: Option<&'a str>,
11257}
11258#[derive(Builder, Debug, PartialEq)]
11259pub struct GitRepositoryAsWorkspaceOpts<'a> {
11260 #[builder(setter(into, strip_option), default)]
11262 pub cwd: Option<&'a str>,
11263}
11264impl IntoID<Id> for GitRepository {
11265 fn into_id(
11266 self,
11267 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
11268 Box::pin(async move { self.id().await })
11269 }
11270}
11271impl Loadable for GitRepository {
11272 fn graphql_type() -> &'static str {
11273 "GitRepository"
11274 }
11275 fn from_query(
11276 proc: Option<Arc<DaggerSessionProc>>,
11277 selection: Selection,
11278 graphql_client: DynGraphQLClient,
11279 ) -> Self {
11280 Self {
11281 proc,
11282 selection,
11283 graphql_client,
11284 }
11285 }
11286}
11287impl GitRepository {
11288 pub async fn id(&self) -> Result<Id, DaggerError> {
11290 let query = self.selection.select("id");
11291 query.execute(self.graphql_client.clone()).await
11292 }
11293 pub fn head(&self) -> GitRef {
11299 let query = self.selection.select("head");
11300 GitRef {
11301 proc: self.proc.clone(),
11302 selection: query,
11303 graphql_client: self.graphql_client.clone(),
11304 }
11305 }
11306 pub fn head_opts(&self, opts: GitRepositoryHeadOpts) -> GitRef {
11312 let mut query = self.selection.select("head");
11313 if let Some(no_lock) = opts.no_lock {
11314 query = query.arg("noLock", no_lock);
11315 }
11316 GitRef {
11317 proc: self.proc.clone(),
11318 selection: query,
11319 graphql_client: self.graphql_client.clone(),
11320 }
11321 }
11322 pub fn r#ref(&self, name: impl Into<String>) -> GitRef {
11335 let mut query = self.selection.select("ref");
11336 query = query.arg("name", name.into());
11337 GitRef {
11338 proc: self.proc.clone(),
11339 selection: query,
11340 graphql_client: self.graphql_client.clone(),
11341 }
11342 }
11343 pub fn r#ref_opts(&self, name: impl Into<String>, opts: GitRepositoryRefOpts) -> GitRef {
11356 let mut query = self.selection.select("ref");
11357 query = query.arg("name", name.into());
11358 if let Some(no_lock) = opts.no_lock {
11359 query = query.arg("noLock", no_lock);
11360 }
11361 GitRef {
11362 proc: self.proc.clone(),
11363 selection: query,
11364 graphql_client: self.graphql_client.clone(),
11365 }
11366 }
11367 pub fn branch(&self, name: impl Into<String>) -> GitRef {
11374 let mut query = self.selection.select("branch");
11375 query = query.arg("name", name.into());
11376 GitRef {
11377 proc: self.proc.clone(),
11378 selection: query,
11379 graphql_client: self.graphql_client.clone(),
11380 }
11381 }
11382 pub fn branch_opts(&self, name: impl Into<String>, opts: GitRepositoryBranchOpts) -> GitRef {
11389 let mut query = self.selection.select("branch");
11390 query = query.arg("name", name.into());
11391 if let Some(no_lock) = opts.no_lock {
11392 query = query.arg("noLock", no_lock);
11393 }
11394 GitRef {
11395 proc: self.proc.clone(),
11396 selection: query,
11397 graphql_client: self.graphql_client.clone(),
11398 }
11399 }
11400 pub fn tag(&self, name: impl Into<String>) -> GitRef {
11407 let mut query = self.selection.select("tag");
11408 query = query.arg("name", name.into());
11409 GitRef {
11410 proc: self.proc.clone(),
11411 selection: query,
11412 graphql_client: self.graphql_client.clone(),
11413 }
11414 }
11415 pub fn tag_opts(&self, name: impl Into<String>, opts: GitRepositoryTagOpts) -> GitRef {
11422 let mut query = self.selection.select("tag");
11423 query = query.arg("name", name.into());
11424 if let Some(no_lock) = opts.no_lock {
11425 query = query.arg("noLock", no_lock);
11426 }
11427 GitRef {
11428 proc: self.proc.clone(),
11429 selection: query,
11430 graphql_client: self.graphql_client.clone(),
11431 }
11432 }
11433 pub fn commit(&self, id: impl Into<String>) -> GitCommit {
11441 let mut query = self.selection.select("commit");
11442 query = query.arg("id", id.into());
11443 GitCommit {
11444 proc: self.proc.clone(),
11445 selection: query,
11446 graphql_client: self.graphql_client.clone(),
11447 }
11448 }
11449 pub fn latest(&self) -> GitRef {
11456 let query = self.selection.select("latest");
11457 GitRef {
11458 proc: self.proc.clone(),
11459 selection: query,
11460 graphql_client: self.graphql_client.clone(),
11461 }
11462 }
11463 pub fn latest_opts<'a>(&self, opts: GitRepositoryLatestOpts<'a>) -> GitRef {
11470 let mut query = self.selection.select("latest");
11471 if let Some(version) = opts.version {
11472 query = query.arg("version", version);
11473 }
11474 if let Some(no_lock) = opts.no_lock {
11475 query = query.arg("noLock", no_lock);
11476 }
11477 GitRef {
11478 proc: self.proc.clone(),
11479 selection: query,
11480 graphql_client: self.graphql_client.clone(),
11481 }
11482 }
11483 pub async fn tags(&self) -> Result<Vec<String>, DaggerError> {
11489 let query = self.selection.select("tags");
11490 query.execute(self.graphql_client.clone()).await
11491 }
11492 pub async fn tags_opts<'a>(
11498 &self,
11499 opts: GitRepositoryTagsOpts<'a>,
11500 ) -> Result<Vec<String>, DaggerError> {
11501 let mut query = self.selection.select("tags");
11502 if let Some(patterns) = opts.patterns {
11503 query = query.arg("patterns", patterns);
11504 }
11505 query.execute(self.graphql_client.clone()).await
11506 }
11507 pub async fn branches(&self) -> Result<Vec<String>, DaggerError> {
11513 let query = self.selection.select("branches");
11514 query.execute(self.graphql_client.clone()).await
11515 }
11516 pub async fn branches_opts<'a>(
11522 &self,
11523 opts: GitRepositoryBranchesOpts<'a>,
11524 ) -> Result<Vec<String>, DaggerError> {
11525 let mut query = self.selection.select("branches");
11526 if let Some(patterns) = opts.patterns {
11527 query = query.arg("patterns", patterns);
11528 }
11529 query.execute(self.graphql_client.clone()).await
11530 }
11531 pub fn bundle(&self, refs: Vec<impl Into<String>>) -> GitBundle {
11538 let mut query = self.selection.select("bundle");
11539 query = query.arg(
11540 "refs",
11541 refs.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
11542 );
11543 GitBundle {
11544 proc: self.proc.clone(),
11545 selection: query,
11546 graphql_client: self.graphql_client.clone(),
11547 }
11548 }
11549 pub fn bundle_opts(
11556 &self,
11557 refs: Vec<impl Into<String>>,
11558 opts: GitRepositoryBundleOpts,
11559 ) -> GitBundle {
11560 let mut query = self.selection.select("bundle");
11561 query = query.arg(
11562 "refs",
11563 refs.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
11564 );
11565 if let Some(base) = opts.base {
11566 query = query.arg("base", base);
11567 }
11568 GitBundle {
11569 proc: self.proc.clone(),
11570 selection: query,
11571 graphql_client: self.graphql_client.clone(),
11572 }
11573 }
11574 pub fn with_bundle(&self, bundle: impl IntoID<Id>) -> GitRepository {
11581 let mut query = self.selection.select("withBundle");
11582 query = query.arg_lazy(
11583 "bundle",
11584 Box::new(move || {
11585 let bundle = bundle.clone();
11586 Box::pin(async move { bundle.into_id().await.unwrap().quote() })
11587 }),
11588 );
11589 GitRepository {
11590 proc: self.proc.clone(),
11591 selection: query,
11592 graphql_client: self.graphql_client.clone(),
11593 }
11594 }
11595 pub fn with_bundle_opts<'a>(
11602 &self,
11603 bundle: impl IntoID<Id>,
11604 opts: GitRepositoryWithBundleOpts<'a>,
11605 ) -> GitRepository {
11606 let mut query = self.selection.select("withBundle");
11607 query = query.arg_lazy(
11608 "bundle",
11609 Box::new(move || {
11610 let bundle = bundle.clone();
11611 Box::pin(async move { bundle.into_id().await.unwrap().quote() })
11612 }),
11613 );
11614 if let Some(prerequisite_ref) = opts.prerequisite_ref {
11615 query = query.arg("prerequisiteRef", prerequisite_ref);
11616 }
11617 GitRepository {
11618 proc: self.proc.clone(),
11619 selection: query,
11620 graphql_client: self.graphql_client.clone(),
11621 }
11622 }
11623 pub fn with_remote(&self, name: impl Into<String>, url: impl Into<String>) -> GitRepository {
11633 let mut query = self.selection.select("withRemote");
11634 query = query.arg("name", name.into());
11635 query = query.arg("url", url.into());
11636 GitRepository {
11637 proc: self.proc.clone(),
11638 selection: query,
11639 graphql_client: self.graphql_client.clone(),
11640 }
11641 }
11642 pub fn with_remote_opts<'a>(
11652 &self,
11653 name: impl Into<String>,
11654 url: impl Into<String>,
11655 opts: GitRepositoryWithRemoteOpts<'a>,
11656 ) -> GitRepository {
11657 let mut query = self.selection.select("withRemote");
11658 query = query.arg("name", name.into());
11659 query = query.arg("url", url.into());
11660 if let Some(push_url) = opts.push_url {
11661 query = query.arg("pushUrl", push_url);
11662 }
11663 GitRepository {
11664 proc: self.proc.clone(),
11665 selection: query,
11666 graphql_client: self.graphql_client.clone(),
11667 }
11668 }
11669 pub async fn remotes(&self) -> Result<Vec<GitRemote>, DaggerError> {
11671 let query = self.selection.select("remotes");
11672 let query = query.select("id");
11673 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
11674 Ok(ids
11675 .into_iter()
11676 .map(|id| GitRemote {
11677 proc: self.proc.clone(),
11678 selection: crate::querybuilder::query()
11679 .select("node")
11680 .arg("id", &id.0)
11681 .inline_fragment("GitRemote"),
11682 graphql_client: self.graphql_client.clone(),
11683 })
11684 .collect())
11685 }
11686 pub fn remote(&self, name: impl Into<String>) -> GitRemote {
11692 let mut query = self.selection.select("remote");
11693 query = query.arg("name", name.into());
11694 GitRemote {
11695 proc: self.proc.clone(),
11696 selection: query,
11697 graphql_client: self.graphql_client.clone(),
11698 }
11699 }
11700 pub async fn default_remote(&self) -> Result<Option<GitRemote>, DaggerError> {
11703 let query = self.selection.select("defaultRemote");
11704 let query = query.select("id");
11705 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
11706 Ok(id.map(|id| GitRemote {
11707 proc: self.proc.clone(),
11708 selection: query
11709 .root()
11710 .select("node")
11711 .arg("id", &id.0)
11712 .inline_fragment("GitRemote"),
11713 graphql_client: self.graphql_client.clone(),
11714 }))
11715 }
11716 pub fn with_contents(&self, directory: impl IntoID<Id>) -> GitRepository {
11725 let mut query = self.selection.select("withContents");
11726 query = query.arg_lazy(
11727 "directory",
11728 Box::new(move || {
11729 let directory = directory.clone();
11730 Box::pin(async move { directory.into_id().await.unwrap().quote() })
11731 }),
11732 );
11733 GitRepository {
11734 proc: self.proc.clone(),
11735 selection: query,
11736 graphql_client: self.graphql_client.clone(),
11737 }
11738 }
11739 pub fn uncommitted(&self) -> Changeset {
11741 let query = self.selection.select("uncommitted");
11742 Changeset {
11743 proc: self.proc.clone(),
11744 selection: query,
11745 graphql_client: self.graphql_client.clone(),
11746 }
11747 }
11748 pub fn as_workspace(&self) -> Workspace {
11755 let query = self.selection.select("asWorkspace");
11756 Workspace {
11757 proc: self.proc.clone(),
11758 selection: query,
11759 graphql_client: self.graphql_client.clone(),
11760 }
11761 }
11762 pub fn as_workspace_opts<'a>(&self, opts: GitRepositoryAsWorkspaceOpts<'a>) -> Workspace {
11769 let mut query = self.selection.select("asWorkspace");
11770 if let Some(cwd) = opts.cwd {
11771 query = query.arg("cwd", cwd);
11772 }
11773 Workspace {
11774 proc: self.proc.clone(),
11775 selection: query,
11776 graphql_client: self.graphql_client.clone(),
11777 }
11778 }
11779 pub async fn url(&self) -> Result<String, DaggerError> {
11781 let query = self.selection.select("url");
11782 query.execute(self.graphql_client.clone()).await
11783 }
11784}
11785impl Node for GitRepository {
11786 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
11787 let query = self.selection.select("id");
11788 let graphql_client = self.graphql_client.clone();
11789 async move { query.execute(graphql_client).await }
11790 }
11791}
11792#[derive(Clone)]
11793pub struct HttpState {
11794 pub proc: Option<Arc<DaggerSessionProc>>,
11795 pub selection: Selection,
11796 pub graphql_client: DynGraphQLClient,
11797}
11798impl IntoID<Id> for HttpState {
11799 fn into_id(
11800 self,
11801 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
11802 Box::pin(async move { self.id().await })
11803 }
11804}
11805impl Loadable for HttpState {
11806 fn graphql_type() -> &'static str {
11807 "HTTPState"
11808 }
11809 fn from_query(
11810 proc: Option<Arc<DaggerSessionProc>>,
11811 selection: Selection,
11812 graphql_client: DynGraphQLClient,
11813 ) -> Self {
11814 Self {
11815 proc,
11816 selection,
11817 graphql_client,
11818 }
11819 }
11820}
11821impl HttpState {
11822 pub async fn id(&self) -> Result<Id, DaggerError> {
11824 let query = self.selection.select("id");
11825 query.execute(self.graphql_client.clone()).await
11826 }
11827}
11828impl Node for HttpState {
11829 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
11830 let query = self.selection.select("id");
11831 let graphql_client = self.graphql_client.clone();
11832 async move { query.execute(graphql_client).await }
11833 }
11834}
11835#[derive(Clone)]
11836pub struct HealthcheckConfig {
11837 pub proc: Option<Arc<DaggerSessionProc>>,
11838 pub selection: Selection,
11839 pub graphql_client: DynGraphQLClient,
11840}
11841impl IntoID<Id> for HealthcheckConfig {
11842 fn into_id(
11843 self,
11844 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
11845 Box::pin(async move { self.id().await })
11846 }
11847}
11848impl Loadable for HealthcheckConfig {
11849 fn graphql_type() -> &'static str {
11850 "HealthcheckConfig"
11851 }
11852 fn from_query(
11853 proc: Option<Arc<DaggerSessionProc>>,
11854 selection: Selection,
11855 graphql_client: DynGraphQLClient,
11856 ) -> Self {
11857 Self {
11858 proc,
11859 selection,
11860 graphql_client,
11861 }
11862 }
11863}
11864impl HealthcheckConfig {
11865 pub async fn id(&self) -> Result<Id, DaggerError> {
11867 let query = self.selection.select("id");
11868 query.execute(self.graphql_client.clone()).await
11869 }
11870 pub async fn args(&self) -> Result<Vec<String>, DaggerError> {
11872 let query = self.selection.select("args");
11873 query.execute(self.graphql_client.clone()).await
11874 }
11875 pub async fn shell(&self) -> Result<bool, DaggerError> {
11877 let query = self.selection.select("shell");
11878 query.execute(self.graphql_client.clone()).await
11879 }
11880 pub async fn timeout(&self) -> Result<String, DaggerError> {
11882 let query = self.selection.select("timeout");
11883 query.execute(self.graphql_client.clone()).await
11884 }
11885 pub async fn interval(&self) -> Result<String, DaggerError> {
11887 let query = self.selection.select("interval");
11888 query.execute(self.graphql_client.clone()).await
11889 }
11890 pub async fn start_period(&self) -> Result<String, DaggerError> {
11892 let query = self.selection.select("startPeriod");
11893 query.execute(self.graphql_client.clone()).await
11894 }
11895 pub async fn start_interval(&self) -> Result<String, DaggerError> {
11897 let query = self.selection.select("startInterval");
11898 query.execute(self.graphql_client.clone()).await
11899 }
11900 pub async fn retries(&self) -> Result<isize, DaggerError> {
11902 let query = self.selection.select("retries");
11903 query.execute(self.graphql_client.clone()).await
11904 }
11905}
11906impl Node for HealthcheckConfig {
11907 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
11908 let query = self.selection.select("id");
11909 let graphql_client = self.graphql_client.clone();
11910 async move { query.execute(graphql_client).await }
11911 }
11912}
11913#[derive(Clone)]
11914pub struct Host {
11915 pub proc: Option<Arc<DaggerSessionProc>>,
11916 pub selection: Selection,
11917 pub graphql_client: DynGraphQLClient,
11918}
11919#[derive(Builder, Debug, PartialEq)]
11920pub struct HostDirectoryOpts<'a> {
11921 #[builder(setter(into, strip_option), default)]
11923 pub exclude: Option<Vec<&'a str>>,
11924 #[builder(setter(into, strip_option), default)]
11926 pub gitignore: Option<bool>,
11927 #[builder(setter(into, strip_option), default)]
11929 pub include: Option<Vec<&'a str>>,
11930 #[builder(setter(into, strip_option), default)]
11932 pub no_cache: Option<bool>,
11933}
11934#[derive(Builder, Debug, PartialEq)]
11935pub struct HostFileOpts {
11936 #[builder(setter(into, strip_option), default)]
11938 pub no_cache: Option<bool>,
11939}
11940#[derive(Builder, Debug, PartialEq)]
11941pub struct HostFindUpOpts {
11942 #[builder(setter(into, strip_option), default)]
11943 pub no_cache: Option<bool>,
11944}
11945#[derive(Builder, Debug, PartialEq)]
11946pub struct HostTunnelOpts {
11947 #[builder(setter(into, strip_option), default)]
11950 pub native: Option<bool>,
11951 #[builder(setter(into, strip_option), default)]
11956 pub ports: Option<Vec<PortForward>>,
11957}
11958#[derive(Builder, Debug, PartialEq)]
11959pub struct HostServiceOpts<'a> {
11960 #[builder(setter(into, strip_option), default)]
11962 pub host: Option<&'a str>,
11963}
11964impl IntoID<Id> for Host {
11965 fn into_id(
11966 self,
11967 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
11968 Box::pin(async move { self.id().await })
11969 }
11970}
11971impl Loadable for Host {
11972 fn graphql_type() -> &'static str {
11973 "Host"
11974 }
11975 fn from_query(
11976 proc: Option<Arc<DaggerSessionProc>>,
11977 selection: Selection,
11978 graphql_client: DynGraphQLClient,
11979 ) -> Self {
11980 Self {
11981 proc,
11982 selection,
11983 graphql_client,
11984 }
11985 }
11986}
11987impl Host {
11988 pub async fn id(&self) -> Result<Id, DaggerError> {
11990 let query = self.selection.select("id");
11991 query.execute(self.graphql_client.clone()).await
11992 }
11993 pub fn directory(&self, path: impl Into<String>) -> Directory {
12000 let mut query = self.selection.select("directory");
12001 query = query.arg("path", path.into());
12002 Directory {
12003 proc: self.proc.clone(),
12004 selection: query,
12005 graphql_client: self.graphql_client.clone(),
12006 }
12007 }
12008 pub fn directory_opts<'a>(
12015 &self,
12016 path: impl Into<String>,
12017 opts: HostDirectoryOpts<'a>,
12018 ) -> Directory {
12019 let mut query = self.selection.select("directory");
12020 query = query.arg("path", path.into());
12021 if let Some(exclude) = opts.exclude {
12022 query = query.arg("exclude", exclude);
12023 }
12024 if let Some(include) = opts.include {
12025 query = query.arg("include", include);
12026 }
12027 if let Some(no_cache) = opts.no_cache {
12028 query = query.arg("noCache", no_cache);
12029 }
12030 if let Some(gitignore) = opts.gitignore {
12031 query = query.arg("gitignore", gitignore);
12032 }
12033 Directory {
12034 proc: self.proc.clone(),
12035 selection: query,
12036 graphql_client: self.graphql_client.clone(),
12037 }
12038 }
12039 pub fn file(&self, path: impl Into<String>) -> File {
12046 let mut query = self.selection.select("file");
12047 query = query.arg("path", path.into());
12048 File {
12049 proc: self.proc.clone(),
12050 selection: query,
12051 graphql_client: self.graphql_client.clone(),
12052 }
12053 }
12054 pub fn file_opts(&self, path: impl Into<String>, opts: HostFileOpts) -> File {
12061 let mut query = self.selection.select("file");
12062 query = query.arg("path", path.into());
12063 if let Some(no_cache) = opts.no_cache {
12064 query = query.arg("noCache", no_cache);
12065 }
12066 File {
12067 proc: self.proc.clone(),
12068 selection: query,
12069 graphql_client: self.graphql_client.clone(),
12070 }
12071 }
12072 pub async fn find_up(&self, name: impl Into<String>) -> Result<String, DaggerError> {
12079 let mut query = self.selection.select("findUp");
12080 query = query.arg("name", name.into());
12081 query.execute(self.graphql_client.clone()).await
12082 }
12083 pub async fn find_up_opts(
12090 &self,
12091 name: impl Into<String>,
12092 opts: HostFindUpOpts,
12093 ) -> Result<String, DaggerError> {
12094 let mut query = self.selection.select("findUp");
12095 query = query.arg("name", name.into());
12096 if let Some(no_cache) = opts.no_cache {
12097 query = query.arg("noCache", no_cache);
12098 }
12099 query.execute(self.graphql_client.clone()).await
12100 }
12101 pub fn unix_socket(&self, path: impl Into<String>) -> Socket {
12107 let mut query = self.selection.select("unixSocket");
12108 query = query.arg("path", path.into());
12109 Socket {
12110 proc: self.proc.clone(),
12111 selection: query,
12112 graphql_client: self.graphql_client.clone(),
12113 }
12114 }
12115 pub fn tunnel(&self, service: impl IntoID<Id>) -> Service {
12122 let mut query = self.selection.select("tunnel");
12123 query = query.arg_lazy(
12124 "service",
12125 Box::new(move || {
12126 let service = service.clone();
12127 Box::pin(async move { service.into_id().await.unwrap().quote() })
12128 }),
12129 );
12130 Service {
12131 proc: self.proc.clone(),
12132 selection: query,
12133 graphql_client: self.graphql_client.clone(),
12134 }
12135 }
12136 pub fn tunnel_opts(&self, service: impl IntoID<Id>, opts: HostTunnelOpts) -> Service {
12143 let mut query = self.selection.select("tunnel");
12144 query = query.arg_lazy(
12145 "service",
12146 Box::new(move || {
12147 let service = service.clone();
12148 Box::pin(async move { service.into_id().await.unwrap().quote() })
12149 }),
12150 );
12151 if let Some(native) = opts.native {
12152 query = query.arg("native", native);
12153 }
12154 if let Some(ports) = opts.ports {
12155 query = query.arg("ports", ports);
12156 }
12157 Service {
12158 proc: self.proc.clone(),
12159 selection: query,
12160 graphql_client: self.graphql_client.clone(),
12161 }
12162 }
12163 pub fn service(&self, ports: Vec<PortForward>) -> Service {
12174 let mut query = self.selection.select("service");
12175 query = query.arg("ports", ports);
12176 Service {
12177 proc: self.proc.clone(),
12178 selection: query,
12179 graphql_client: self.graphql_client.clone(),
12180 }
12181 }
12182 pub fn service_opts<'a>(&self, ports: Vec<PortForward>, opts: HostServiceOpts<'a>) -> Service {
12193 let mut query = self.selection.select("service");
12194 query = query.arg("ports", ports);
12195 if let Some(host) = opts.host {
12196 query = query.arg("host", host);
12197 }
12198 Service {
12199 proc: self.proc.clone(),
12200 selection: query,
12201 graphql_client: self.graphql_client.clone(),
12202 }
12203 }
12204 pub fn container_image(&self, name: impl Into<String>) -> Container {
12210 let mut query = self.selection.select("containerImage");
12211 query = query.arg("name", name.into());
12212 Container {
12213 proc: self.proc.clone(),
12214 selection: query,
12215 graphql_client: self.graphql_client.clone(),
12216 }
12217 }
12218}
12219impl Node for Host {
12220 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
12221 let query = self.selection.select("id");
12222 let graphql_client = self.graphql_client.clone();
12223 async move { query.execute(graphql_client).await }
12224 }
12225}
12226#[derive(Clone)]
12227pub struct InputTypeDef {
12228 pub proc: Option<Arc<DaggerSessionProc>>,
12229 pub selection: Selection,
12230 pub graphql_client: DynGraphQLClient,
12231}
12232impl IntoID<Id> for InputTypeDef {
12233 fn into_id(
12234 self,
12235 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
12236 Box::pin(async move { self.id().await })
12237 }
12238}
12239impl Loadable for InputTypeDef {
12240 fn graphql_type() -> &'static str {
12241 "InputTypeDef"
12242 }
12243 fn from_query(
12244 proc: Option<Arc<DaggerSessionProc>>,
12245 selection: Selection,
12246 graphql_client: DynGraphQLClient,
12247 ) -> Self {
12248 Self {
12249 proc,
12250 selection,
12251 graphql_client,
12252 }
12253 }
12254}
12255impl InputTypeDef {
12256 pub async fn id(&self) -> Result<Id, DaggerError> {
12258 let query = self.selection.select("id");
12259 query.execute(self.graphql_client.clone()).await
12260 }
12261 pub async fn fields(&self) -> Result<Vec<FieldTypeDef>, DaggerError> {
12263 let query = self.selection.select("fields");
12264 let query = query.select("id");
12265 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
12266 Ok(ids
12267 .into_iter()
12268 .map(|id| FieldTypeDef {
12269 proc: self.proc.clone(),
12270 selection: crate::querybuilder::query()
12271 .select("node")
12272 .arg("id", &id.0)
12273 .inline_fragment("FieldTypeDef"),
12274 graphql_client: self.graphql_client.clone(),
12275 })
12276 .collect())
12277 }
12278 pub async fn name(&self) -> Result<String, DaggerError> {
12280 let query = self.selection.select("name");
12281 query.execute(self.graphql_client.clone()).await
12282 }
12283}
12284impl Node for InputTypeDef {
12285 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
12286 let query = self.selection.select("id");
12287 let graphql_client = self.graphql_client.clone();
12288 async move { query.execute(graphql_client).await }
12289 }
12290}
12291#[derive(Clone)]
12292pub struct InterfaceTypeDef {
12293 pub proc: Option<Arc<DaggerSessionProc>>,
12294 pub selection: Selection,
12295 pub graphql_client: DynGraphQLClient,
12296}
12297impl IntoID<Id> for InterfaceTypeDef {
12298 fn into_id(
12299 self,
12300 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
12301 Box::pin(async move { self.id().await })
12302 }
12303}
12304impl Loadable for InterfaceTypeDef {
12305 fn graphql_type() -> &'static str {
12306 "InterfaceTypeDef"
12307 }
12308 fn from_query(
12309 proc: Option<Arc<DaggerSessionProc>>,
12310 selection: Selection,
12311 graphql_client: DynGraphQLClient,
12312 ) -> Self {
12313 Self {
12314 proc,
12315 selection,
12316 graphql_client,
12317 }
12318 }
12319}
12320impl InterfaceTypeDef {
12321 pub async fn id(&self) -> Result<Id, DaggerError> {
12323 let query = self.selection.select("id");
12324 query.execute(self.graphql_client.clone()).await
12325 }
12326 pub async fn functions(&self) -> Result<Vec<Function>, DaggerError> {
12328 let query = self.selection.select("functions");
12329 let query = query.select("id");
12330 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
12331 Ok(ids
12332 .into_iter()
12333 .map(|id| Function {
12334 proc: self.proc.clone(),
12335 selection: crate::querybuilder::query()
12336 .select("node")
12337 .arg("id", &id.0)
12338 .inline_fragment("Function"),
12339 graphql_client: self.graphql_client.clone(),
12340 })
12341 .collect())
12342 }
12343 pub async fn name(&self) -> Result<String, DaggerError> {
12345 let query = self.selection.select("name");
12346 query.execute(self.graphql_client.clone()).await
12347 }
12348 pub async fn description(&self) -> Result<String, DaggerError> {
12350 let query = self.selection.select("description");
12351 query.execute(self.graphql_client.clone()).await
12352 }
12353 pub async fn source_map(&self) -> Result<Option<SourceMap>, DaggerError> {
12355 let query = self.selection.select("sourceMap");
12356 let query = query.select("id");
12357 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
12358 Ok(id.map(|id| SourceMap {
12359 proc: self.proc.clone(),
12360 selection: query
12361 .root()
12362 .select("node")
12363 .arg("id", &id.0)
12364 .inline_fragment("SourceMap"),
12365 graphql_client: self.graphql_client.clone(),
12366 }))
12367 }
12368 pub async fn source_module_name(&self) -> Result<String, DaggerError> {
12370 let query = self.selection.select("sourceModuleName");
12371 query.execute(self.graphql_client.clone()).await
12372 }
12373}
12374impl Node for InterfaceTypeDef {
12375 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
12376 let query = self.selection.select("id");
12377 let graphql_client = self.graphql_client.clone();
12378 async move { query.execute(graphql_client).await }
12379 }
12380}
12381#[derive(Clone)]
12382pub struct JsonValue {
12383 pub proc: Option<Arc<DaggerSessionProc>>,
12384 pub selection: Selection,
12385 pub graphql_client: DynGraphQLClient,
12386}
12387#[derive(Builder, Debug, PartialEq)]
12388pub struct JsonValueContentsOpts<'a> {
12389 #[builder(setter(into, strip_option), default)]
12391 pub indent: Option<&'a str>,
12392 #[builder(setter(into, strip_option), default)]
12394 pub pretty: Option<bool>,
12395}
12396impl IntoID<Id> for JsonValue {
12397 fn into_id(
12398 self,
12399 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
12400 Box::pin(async move { self.id().await })
12401 }
12402}
12403impl Loadable for JsonValue {
12404 fn graphql_type() -> &'static str {
12405 "JSONValue"
12406 }
12407 fn from_query(
12408 proc: Option<Arc<DaggerSessionProc>>,
12409 selection: Selection,
12410 graphql_client: DynGraphQLClient,
12411 ) -> Self {
12412 Self {
12413 proc,
12414 selection,
12415 graphql_client,
12416 }
12417 }
12418}
12419impl JsonValue {
12420 pub async fn id(&self) -> Result<Id, DaggerError> {
12422 let query = self.selection.select("id");
12423 query.execute(self.graphql_client.clone()).await
12424 }
12425 pub async fn contents(&self) -> Result<Json, DaggerError> {
12431 let query = self.selection.select("contents");
12432 query.execute(self.graphql_client.clone()).await
12433 }
12434 pub async fn contents_opts<'a>(
12440 &self,
12441 opts: JsonValueContentsOpts<'a>,
12442 ) -> Result<Json, DaggerError> {
12443 let mut query = self.selection.select("contents");
12444 if let Some(pretty) = opts.pretty {
12445 query = query.arg("pretty", pretty);
12446 }
12447 if let Some(indent) = opts.indent {
12448 query = query.arg("indent", indent);
12449 }
12450 query.execute(self.graphql_client.clone()).await
12451 }
12452 pub fn with_contents(&self, contents: Json) -> JsonValue {
12458 let mut query = self.selection.select("withContents");
12459 query = query.arg("contents", contents);
12460 JsonValue {
12461 proc: self.proc.clone(),
12462 selection: query,
12463 graphql_client: self.graphql_client.clone(),
12464 }
12465 }
12466 pub fn new_integer(&self, value: isize) -> JsonValue {
12472 let mut query = self.selection.select("newInteger");
12473 query = query.arg("value", value);
12474 JsonValue {
12475 proc: self.proc.clone(),
12476 selection: query,
12477 graphql_client: self.graphql_client.clone(),
12478 }
12479 }
12480 pub async fn as_integer(&self) -> Result<isize, DaggerError> {
12482 let query = self.selection.select("asInteger");
12483 query.execute(self.graphql_client.clone()).await
12484 }
12485 pub fn new_string(&self, value: impl Into<String>) -> JsonValue {
12491 let mut query = self.selection.select("newString");
12492 query = query.arg("value", value.into());
12493 JsonValue {
12494 proc: self.proc.clone(),
12495 selection: query,
12496 graphql_client: self.graphql_client.clone(),
12497 }
12498 }
12499 pub async fn as_string(&self) -> Result<String, DaggerError> {
12501 let query = self.selection.select("asString");
12502 query.execute(self.graphql_client.clone()).await
12503 }
12504 pub fn new_boolean(&self, value: bool) -> JsonValue {
12510 let mut query = self.selection.select("newBoolean");
12511 query = query.arg("value", value);
12512 JsonValue {
12513 proc: self.proc.clone(),
12514 selection: query,
12515 graphql_client: self.graphql_client.clone(),
12516 }
12517 }
12518 pub async fn as_boolean(&self) -> Result<bool, DaggerError> {
12520 let query = self.selection.select("asBoolean");
12521 query.execute(self.graphql_client.clone()).await
12522 }
12523 pub async fn as_array(&self) -> Result<Vec<JsonValue>, DaggerError> {
12525 let query = self.selection.select("asArray");
12526 let query = query.select("id");
12527 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
12528 Ok(ids
12529 .into_iter()
12530 .map(|id| JsonValue {
12531 proc: self.proc.clone(),
12532 selection: crate::querybuilder::query()
12533 .select("node")
12534 .arg("id", &id.0)
12535 .inline_fragment("JSONValue"),
12536 graphql_client: self.graphql_client.clone(),
12537 })
12538 .collect())
12539 }
12540 pub async fn fields(&self) -> Result<Vec<String>, DaggerError> {
12542 let query = self.selection.select("fields");
12543 query.execute(self.graphql_client.clone()).await
12544 }
12545 pub fn field(&self, path: Vec<impl Into<String>>) -> JsonValue {
12551 let mut query = self.selection.select("field");
12552 query = query.arg(
12553 "path",
12554 path.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
12555 );
12556 JsonValue {
12557 proc: self.proc.clone(),
12558 selection: query,
12559 graphql_client: self.graphql_client.clone(),
12560 }
12561 }
12562 pub fn with_field(&self, path: Vec<impl Into<String>>, value: impl IntoID<Id>) -> JsonValue {
12569 let mut query = self.selection.select("withField");
12570 query = query.arg(
12571 "path",
12572 path.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
12573 );
12574 query = query.arg_lazy(
12575 "value",
12576 Box::new(move || {
12577 let value = value.clone();
12578 Box::pin(async move { value.into_id().await.unwrap().quote() })
12579 }),
12580 );
12581 JsonValue {
12582 proc: self.proc.clone(),
12583 selection: query,
12584 graphql_client: self.graphql_client.clone(),
12585 }
12586 }
12587}
12588impl Node for JsonValue {
12589 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
12590 let query = self.selection.select("id");
12591 let graphql_client = self.graphql_client.clone();
12592 async move { query.execute(graphql_client).await }
12593 }
12594}
12595#[derive(Clone)]
12596pub struct Llm {
12597 pub proc: Option<Arc<DaggerSessionProc>>,
12598 pub selection: Selection,
12599 pub graphql_client: DynGraphQLClient,
12600}
12601#[derive(Builder, Debug, PartialEq)]
12602pub struct LlmArtifactsOpts<'a> {
12603 #[builder(setter(into, strip_option), default)]
12605 pub include: Option<Vec<&'a str>>,
12606}
12607#[derive(Builder, Debug, PartialEq)]
12608pub struct LlmWithModelOpts<'a> {
12609 #[builder(setter(into, strip_option), default)]
12611 pub provider: Option<&'a str>,
12612}
12613#[derive(Builder, Debug, PartialEq)]
12614pub struct LlmWithPromptOpts {
12615 #[builder(setter(into, strip_option), default)]
12617 pub origin: Option<LlmMessageOriginInput>,
12618}
12619#[derive(Builder, Debug, PartialEq)]
12620pub struct LlmWithContentOpts {
12621 #[builder(setter(into, strip_option), default)]
12623 pub origin: Option<LlmMessageOriginInput>,
12624}
12625#[derive(Builder, Debug, PartialEq)]
12626pub struct LlmWithContentFileOpts<'a> {
12627 #[builder(setter(into, strip_option), default)]
12629 pub mime_type: Option<&'a str>,
12630}
12631#[derive(Builder, Debug, PartialEq)]
12632pub struct LlmWithResponseOpts {
12633 #[builder(setter(into, strip_option), default)]
12635 pub cached_token_reads: Option<isize>,
12636 #[builder(setter(into, strip_option), default)]
12638 pub cached_token_writes: Option<isize>,
12639 #[builder(setter(into, strip_option), default)]
12641 pub input_tokens: Option<isize>,
12642 #[builder(setter(into, strip_option), default)]
12644 pub output_tokens: Option<isize>,
12645 #[builder(setter(into, strip_option), default)]
12647 pub total_tokens: Option<isize>,
12648}
12649#[derive(Builder, Debug, PartialEq)]
12650pub struct LlmWithToolResultOpts {
12651 #[builder(setter(into, strip_option), default)]
12653 pub blocks: Option<Vec<LlmContentBlockInput>>,
12654}
12655#[derive(Builder, Debug, PartialEq)]
12656pub struct LlmWithToolsOpts<'a> {
12657 #[builder(setter(into, strip_option), default)]
12659 pub except: Option<Vec<&'a str>>,
12660 #[builder(setter(into, strip_option), default)]
12662 pub version: Option<isize>,
12663}
12664#[derive(Builder, Debug, PartialEq)]
12665pub struct LlmLoopOpts {
12666 #[builder(setter(into, strip_option), default)]
12668 pub max_steps: Option<isize>,
12669 #[builder(setter(into, strip_option), default)]
12671 pub max_tokens: Option<isize>,
12672}
12673#[derive(Builder, Debug, PartialEq)]
12674pub struct LlmStepOpts {
12675 #[builder(setter(into, strip_option), default)]
12677 pub max_tokens: Option<isize>,
12678}
12679#[derive(Builder, Debug, PartialEq)]
12680pub struct LlmSpawnOpts<'a> {
12681 #[builder(setter(into, strip_option), default)]
12683 pub error: Option<&'a str>,
12684 #[builder(setter(into, strip_option), default)]
12686 pub handle: Option<&'a str>,
12687 #[builder(setter(into, strip_option), default)]
12689 pub name: Option<&'a str>,
12690 #[builder(setter(into, strip_option), default)]
12692 pub parent_handle: Option<&'a str>,
12693 #[builder(setter(into, strip_option), default)]
12696 pub state: Option<AgentState>,
12697}
12698impl IntoID<Id> for Llm {
12699 fn into_id(
12700 self,
12701 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
12702 Box::pin(async move { self.id().await })
12703 }
12704}
12705impl Loadable for Llm {
12706 fn graphql_type() -> &'static str {
12707 "LLM"
12708 }
12709 fn from_query(
12710 proc: Option<Arc<DaggerSessionProc>>,
12711 selection: Selection,
12712 graphql_client: DynGraphQLClient,
12713 ) -> Self {
12714 Self {
12715 proc,
12716 selection,
12717 graphql_client,
12718 }
12719 }
12720}
12721impl Llm {
12722 pub async fn id(&self) -> Result<Id, DaggerError> {
12724 let query = self.selection.select("id");
12725 query.execute(self.graphql_client.clone()).await
12726 }
12727 pub fn compose(&self, expertise: Vec<Id>) -> Llm {
12733 let mut query = self.selection.select("compose");
12734 query = query.arg("expertise", expertise);
12735 Llm {
12736 proc: self.proc.clone(),
12737 selection: query,
12738 graphql_client: self.graphql_client.clone(),
12739 }
12740 }
12741 pub fn recompose(&self, expertise: Vec<Id>) -> Llm {
12749 let mut query = self.selection.select("recompose");
12750 query = query.arg("expertise", expertise);
12751 Llm {
12752 proc: self.proc.clone(),
12753 selection: query,
12754 graphql_client: self.graphql_client.clone(),
12755 }
12756 }
12757 pub async fn model(&self) -> Result<String, DaggerError> {
12759 let query = self.selection.select("model");
12760 query.execute(self.graphql_client.clone()).await
12761 }
12762 pub async fn provider(&self) -> Result<String, DaggerError> {
12764 let query = self.selection.select("provider");
12765 query.execute(self.graphql_client.clone()).await
12766 }
12767 pub async fn context_window(&self) -> Result<isize, DaggerError> {
12769 let query = self.selection.select("contextWindow");
12770 query.execute(self.graphql_client.clone()).await
12771 }
12772 pub async fn messages(&self) -> Result<Vec<LlmMessage>, DaggerError> {
12774 let query = self.selection.select("messages");
12775 let query = query.select("id");
12776 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
12777 Ok(ids
12778 .into_iter()
12779 .map(|id| LlmMessage {
12780 proc: self.proc.clone(),
12781 selection: crate::querybuilder::query()
12782 .select("node")
12783 .arg("id", &id.0)
12784 .inline_fragment("LLMMessage"),
12785 graphql_client: self.graphql_client.clone(),
12786 })
12787 .collect())
12788 }
12789 pub async fn transcript(&self) -> Result<String, DaggerError> {
12791 let query = self.selection.select("transcript");
12792 query.execute(self.graphql_client.clone()).await
12793 }
12794 pub fn without_message_history(&self) -> Llm {
12796 let query = self.selection.select("withoutMessageHistory");
12797 Llm {
12798 proc: self.proc.clone(),
12799 selection: query,
12800 graphql_client: self.graphql_client.clone(),
12801 }
12802 }
12803 pub fn without_system_prompts(&self) -> Llm {
12805 let query = self.selection.select("withoutSystemPrompts");
12806 Llm {
12807 proc: self.proc.clone(),
12808 selection: query,
12809 graphql_client: self.graphql_client.clone(),
12810 }
12811 }
12812 pub async fn last_reply(&self) -> Result<String, DaggerError> {
12814 let query = self.selection.select("lastReply");
12815 query.execute(self.graphql_client.clone()).await
12816 }
12817 pub fn with_workspace(&self, workspace: impl IntoID<Id>) -> Llm {
12823 let mut query = self.selection.select("withWorkspace");
12824 query = query.arg_lazy(
12825 "workspace",
12826 Box::new(move || {
12827 let workspace = workspace.clone();
12828 Box::pin(async move { workspace.into_id().await.unwrap().quote() })
12829 }),
12830 );
12831 Llm {
12832 proc: self.proc.clone(),
12833 selection: query,
12834 graphql_client: self.graphql_client.clone(),
12835 }
12836 }
12837 pub fn workspace(&self) -> Workspace {
12839 let query = self.selection.select("workspace");
12840 Workspace {
12841 proc: self.proc.clone(),
12842 selection: query,
12843 graphql_client: self.graphql_client.clone(),
12844 }
12845 }
12846 pub fn artifacts(&self) -> Artifacts {
12855 let query = self.selection.select("artifacts");
12856 Artifacts {
12857 proc: self.proc.clone(),
12858 selection: query,
12859 graphql_client: self.graphql_client.clone(),
12860 }
12861 }
12862 pub fn artifacts_opts<'a>(&self, opts: LlmArtifactsOpts<'a>) -> Artifacts {
12871 let mut query = self.selection.select("artifacts");
12872 if let Some(include) = opts.include {
12873 query = query.arg("include", include);
12874 }
12875 Artifacts {
12876 proc: self.proc.clone(),
12877 selection: query,
12878 graphql_client: self.graphql_client.clone(),
12879 }
12880 }
12881 pub fn with_model(&self, model: impl Into<String>) -> Llm {
12888 let mut query = self.selection.select("withModel");
12889 query = query.arg("model", model.into());
12890 Llm {
12891 proc: self.proc.clone(),
12892 selection: query,
12893 graphql_client: self.graphql_client.clone(),
12894 }
12895 }
12896 pub fn with_model_opts<'a>(&self, model: impl Into<String>, opts: LlmWithModelOpts<'a>) -> Llm {
12903 let mut query = self.selection.select("withModel");
12904 query = query.arg("model", model.into());
12905 if let Some(provider) = opts.provider {
12906 query = query.arg("provider", provider);
12907 }
12908 Llm {
12909 proc: self.proc.clone(),
12910 selection: query,
12911 graphql_client: self.graphql_client.clone(),
12912 }
12913 }
12914 pub fn with_small_model(&self) -> Llm {
12916 let query = self.selection.select("withSmallModel");
12917 Llm {
12918 proc: self.proc.clone(),
12919 selection: query,
12920 graphql_client: self.graphql_client.clone(),
12921 }
12922 }
12923 pub async fn reasoning_effort(&self) -> Result<String, DaggerError> {
12925 let query = self.selection.select("reasoningEffort");
12926 query.execute(self.graphql_client.clone()).await
12927 }
12928 pub fn with_reasoning_effort(&self, effort: impl Into<String>) -> Llm {
12934 let mut query = self.selection.select("withReasoningEffort");
12935 query = query.arg("effort", effort.into());
12936 Llm {
12937 proc: self.proc.clone(),
12938 selection: query,
12939 graphql_client: self.graphql_client.clone(),
12940 }
12941 }
12942 pub fn with_prompt(&self, prompt: impl Into<String>) -> Llm {
12949 let mut query = self.selection.select("withPrompt");
12950 query = query.arg("prompt", prompt.into());
12951 Llm {
12952 proc: self.proc.clone(),
12953 selection: query,
12954 graphql_client: self.graphql_client.clone(),
12955 }
12956 }
12957 pub fn with_prompt_opts(&self, prompt: impl Into<String>, opts: LlmWithPromptOpts) -> Llm {
12964 let mut query = self.selection.select("withPrompt");
12965 query = query.arg("prompt", prompt.into());
12966 if let Some(origin) = opts.origin {
12967 query = query.arg("origin", origin);
12968 }
12969 Llm {
12970 proc: self.proc.clone(),
12971 selection: query,
12972 graphql_client: self.graphql_client.clone(),
12973 }
12974 }
12975 pub fn with_content(&self, content: Vec<LlmContentBlockInput>) -> Llm {
12982 let mut query = self.selection.select("withContent");
12983 query = query.arg("content", content);
12984 Llm {
12985 proc: self.proc.clone(),
12986 selection: query,
12987 graphql_client: self.graphql_client.clone(),
12988 }
12989 }
12990 pub fn with_content_opts(
12997 &self,
12998 content: Vec<LlmContentBlockInput>,
12999 opts: LlmWithContentOpts,
13000 ) -> Llm {
13001 let mut query = self.selection.select("withContent");
13002 query = query.arg("content", content);
13003 if let Some(origin) = opts.origin {
13004 query = query.arg("origin", origin);
13005 }
13006 Llm {
13007 proc: self.proc.clone(),
13008 selection: query,
13009 graphql_client: self.graphql_client.clone(),
13010 }
13011 }
13012 pub fn with_content_file(&self, file: impl IntoID<Id>) -> Llm {
13019 let mut query = self.selection.select("withContentFile");
13020 query = query.arg_lazy(
13021 "file",
13022 Box::new(move || {
13023 let file = file.clone();
13024 Box::pin(async move { file.into_id().await.unwrap().quote() })
13025 }),
13026 );
13027 Llm {
13028 proc: self.proc.clone(),
13029 selection: query,
13030 graphql_client: self.graphql_client.clone(),
13031 }
13032 }
13033 pub fn with_content_file_opts<'a>(
13040 &self,
13041 file: impl IntoID<Id>,
13042 opts: LlmWithContentFileOpts<'a>,
13043 ) -> Llm {
13044 let mut query = self.selection.select("withContentFile");
13045 query = query.arg_lazy(
13046 "file",
13047 Box::new(move || {
13048 let file = file.clone();
13049 Box::pin(async move { file.into_id().await.unwrap().quote() })
13050 }),
13051 );
13052 if let Some(mime_type) = opts.mime_type {
13053 query = query.arg("mimeType", mime_type);
13054 }
13055 Llm {
13056 proc: self.proc.clone(),
13057 selection: query,
13058 graphql_client: self.graphql_client.clone(),
13059 }
13060 }
13061 pub fn with_prompt_file(&self, file: impl IntoID<Id>) -> Llm {
13067 let mut query = self.selection.select("withPromptFile");
13068 query = query.arg_lazy(
13069 "file",
13070 Box::new(move || {
13071 let file = file.clone();
13072 Box::pin(async move { file.into_id().await.unwrap().quote() })
13073 }),
13074 );
13075 Llm {
13076 proc: self.proc.clone(),
13077 selection: query,
13078 graphql_client: self.graphql_client.clone(),
13079 }
13080 }
13081 pub fn with_system_prompt(&self, prompt: impl Into<String>) -> Llm {
13087 let mut query = self.selection.select("withSystemPrompt");
13088 query = query.arg("prompt", prompt.into());
13089 Llm {
13090 proc: self.proc.clone(),
13091 selection: query,
13092 graphql_client: self.graphql_client.clone(),
13093 }
13094 }
13095 pub fn with_response(&self, content: Vec<LlmContentBlockInput>) -> Llm {
13102 let mut query = self.selection.select("withResponse");
13103 query = query.arg("content", content);
13104 Llm {
13105 proc: self.proc.clone(),
13106 selection: query,
13107 graphql_client: self.graphql_client.clone(),
13108 }
13109 }
13110 pub fn with_response_opts(
13117 &self,
13118 content: Vec<LlmContentBlockInput>,
13119 opts: LlmWithResponseOpts,
13120 ) -> Llm {
13121 let mut query = self.selection.select("withResponse");
13122 query = query.arg("content", content);
13123 if let Some(input_tokens) = opts.input_tokens {
13124 query = query.arg("inputTokens", input_tokens);
13125 }
13126 if let Some(output_tokens) = opts.output_tokens {
13127 query = query.arg("outputTokens", output_tokens);
13128 }
13129 if let Some(cached_token_reads) = opts.cached_token_reads {
13130 query = query.arg("cachedTokenReads", cached_token_reads);
13131 }
13132 if let Some(cached_token_writes) = opts.cached_token_writes {
13133 query = query.arg("cachedTokenWrites", cached_token_writes);
13134 }
13135 if let Some(total_tokens) = opts.total_tokens {
13136 query = query.arg("totalTokens", total_tokens);
13137 }
13138 Llm {
13139 proc: self.proc.clone(),
13140 selection: query,
13141 graphql_client: self.graphql_client.clone(),
13142 }
13143 }
13144 pub fn with_tool_result(
13153 &self,
13154 call_id: impl Into<String>,
13155 content: impl Into<String>,
13156 errored: bool,
13157 ) -> Llm {
13158 let mut query = self.selection.select("withToolResult");
13159 query = query.arg("callId", call_id.into());
13160 query = query.arg("content", content.into());
13161 query = query.arg("errored", errored);
13162 Llm {
13163 proc: self.proc.clone(),
13164 selection: query,
13165 graphql_client: self.graphql_client.clone(),
13166 }
13167 }
13168 pub fn with_tool_result_opts(
13177 &self,
13178 call_id: impl Into<String>,
13179 content: impl Into<String>,
13180 errored: bool,
13181 opts: LlmWithToolResultOpts,
13182 ) -> Llm {
13183 let mut query = self.selection.select("withToolResult");
13184 query = query.arg("callId", call_id.into());
13185 query = query.arg("content", content.into());
13186 query = query.arg("errored", errored);
13187 if let Some(blocks) = opts.blocks {
13188 query = query.arg("blocks", blocks);
13189 }
13190 Llm {
13191 proc: self.proc.clone(),
13192 selection: query,
13193 graphql_client: self.graphql_client.clone(),
13194 }
13195 }
13196 pub fn with_tools(&self, object: impl IntoID<Id>) -> Llm {
13203 let mut query = self.selection.select("withTools");
13204 query = query.arg_lazy(
13205 "object",
13206 Box::new(move || {
13207 let object = object.clone();
13208 Box::pin(async move { object.into_id().await.unwrap().quote() })
13209 }),
13210 );
13211 Llm {
13212 proc: self.proc.clone(),
13213 selection: query,
13214 graphql_client: self.graphql_client.clone(),
13215 }
13216 }
13217 pub fn with_tools_opts<'a>(&self, object: impl IntoID<Id>, opts: LlmWithToolsOpts<'a>) -> Llm {
13224 let mut query = self.selection.select("withTools");
13225 query = query.arg_lazy(
13226 "object",
13227 Box::new(move || {
13228 let object = object.clone();
13229 Box::pin(async move { object.into_id().await.unwrap().quote() })
13230 }),
13231 );
13232 if let Some(except) = opts.except {
13233 query = query.arg("except", except);
13234 }
13235 if let Some(version) = opts.version {
13236 query = query.arg("version", version);
13237 }
13238 Llm {
13239 proc: self.proc.clone(),
13240 selection: query,
13241 graphql_client: self.graphql_client.clone(),
13242 }
13243 }
13244 pub fn without_default_system_prompt(&self) -> Llm {
13246 let query = self.selection.select("withoutDefaultSystemPrompt");
13247 Llm {
13248 proc: self.proc.clone(),
13249 selection: query,
13250 graphql_client: self.graphql_client.clone(),
13251 }
13252 }
13253 pub fn with_mcp_server(&self, name: impl Into<String>, service: impl IntoID<Id>) -> Llm {
13260 let mut query = self.selection.select("withMCPServer");
13261 query = query.arg("name", name.into());
13262 query = query.arg_lazy(
13263 "service",
13264 Box::new(move || {
13265 let service = service.clone();
13266 Box::pin(async move { service.into_id().await.unwrap().quote() })
13267 }),
13268 );
13269 Llm {
13270 proc: self.proc.clone(),
13271 selection: query,
13272 graphql_client: self.graphql_client.clone(),
13273 }
13274 }
13275 pub fn with_skills(&self, directory: impl IntoID<Id>) -> Llm {
13281 let mut query = self.selection.select("withSkills");
13282 query = query.arg_lazy(
13283 "directory",
13284 Box::new(move || {
13285 let directory = directory.clone();
13286 Box::pin(async move { directory.into_id().await.unwrap().quote() })
13287 }),
13288 );
13289 Llm {
13290 proc: self.proc.clone(),
13291 selection: query,
13292 graphql_client: self.graphql_client.clone(),
13293 }
13294 }
13295 pub async fn skills(&self) -> Result<Vec<LlmSkill>, DaggerError> {
13297 let query = self.selection.select("skills");
13298 let query = query.select("id");
13299 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
13300 Ok(ids
13301 .into_iter()
13302 .map(|id| LlmSkill {
13303 proc: self.proc.clone(),
13304 selection: crate::querybuilder::query()
13305 .select("node")
13306 .arg("id", &id.0)
13307 .inline_fragment("LLMSkill"),
13308 graphql_client: self.graphql_client.clone(),
13309 })
13310 .collect())
13311 }
13312 pub async fn sync(&self) -> Result<Llm, DaggerError> {
13314 let query = self.selection.select("sync");
13315 let id: Id = query.execute(self.graphql_client.clone()).await?;
13316 Ok(Llm {
13317 proc: self.proc.clone(),
13318 selection: query
13319 .root()
13320 .select("node")
13321 .arg("id", &id.0)
13322 .inline_fragment("LLM"),
13323 graphql_client: self.graphql_client.clone(),
13324 })
13325 }
13326 pub fn r#loop(&self) -> Llm {
13332 let query = self.selection.select("loop");
13333 Llm {
13334 proc: self.proc.clone(),
13335 selection: query,
13336 graphql_client: self.graphql_client.clone(),
13337 }
13338 }
13339 pub fn r#loop_opts(&self, opts: LlmLoopOpts) -> Llm {
13345 let mut query = self.selection.select("loop");
13346 if let Some(max_steps) = opts.max_steps {
13347 query = query.arg("maxSteps", max_steps);
13348 }
13349 if let Some(max_tokens) = opts.max_tokens {
13350 query = query.arg("maxTokens", max_tokens);
13351 }
13352 Llm {
13353 proc: self.proc.clone(),
13354 selection: query,
13355 graphql_client: self.graphql_client.clone(),
13356 }
13357 }
13358 pub fn step(&self) -> Llm {
13364 let query = self.selection.select("step");
13365 Llm {
13366 proc: self.proc.clone(),
13367 selection: query,
13368 graphql_client: self.graphql_client.clone(),
13369 }
13370 }
13371 pub fn step_opts(&self, opts: LlmStepOpts) -> Llm {
13377 let mut query = self.selection.select("step");
13378 if let Some(max_tokens) = opts.max_tokens {
13379 query = query.arg("maxTokens", max_tokens);
13380 }
13381 Llm {
13382 proc: self.proc.clone(),
13383 selection: query,
13384 graphql_client: self.graphql_client.clone(),
13385 }
13386 }
13387 pub async fn spawn(&self) -> Result<Agent, DaggerError> {
13396 let query = self.selection.select("spawn");
13397 let id: Id = query.execute(self.graphql_client.clone()).await?;
13398 Ok(Agent {
13399 proc: self.proc.clone(),
13400 selection: query
13401 .root()
13402 .select("node")
13403 .arg("id", &id.0)
13404 .inline_fragment("Agent"),
13405 graphql_client: self.graphql_client.clone(),
13406 })
13407 }
13408 pub async fn spawn_opts<'a>(&self, opts: LlmSpawnOpts<'a>) -> Result<Agent, DaggerError> {
13417 let mut query = self.selection.select("spawn");
13418 if let Some(name) = opts.name {
13419 query = query.arg("name", name);
13420 }
13421 if let Some(handle) = opts.handle {
13422 query = query.arg("handle", handle);
13423 }
13424 if let Some(state) = opts.state {
13425 query = query.arg("state", state);
13426 }
13427 if let Some(parent_handle) = opts.parent_handle {
13428 query = query.arg("parentHandle", parent_handle);
13429 }
13430 if let Some(error) = opts.error {
13431 query = query.arg("error", error);
13432 }
13433 let id: Id = query.execute(self.graphql_client.clone()).await?;
13434 Ok(Agent {
13435 proc: self.proc.clone(),
13436 selection: query
13437 .root()
13438 .select("node")
13439 .arg("id", &id.0)
13440 .inline_fragment("Agent"),
13441 graphql_client: self.graphql_client.clone(),
13442 })
13443 }
13444 pub fn agent(&self, handle: impl Into<String>, name: impl Into<String>) -> Agent {
13452 let mut query = self.selection.select("agent");
13453 query = query.arg("handle", handle.into());
13454 query = query.arg("name", name.into());
13455 Agent {
13456 proc: self.proc.clone(),
13457 selection: query,
13458 graphql_client: self.graphql_client.clone(),
13459 }
13460 }
13461 pub async fn has_pending(&self) -> Result<bool, DaggerError> {
13463 let query = self.selection.select("hasPending");
13464 query.execute(self.graphql_client.clone()).await
13465 }
13466 pub fn fork(&self, label: impl Into<String>) -> Llm {
13472 let mut query = self.selection.select("fork");
13473 query = query.arg("label", label.into());
13474 Llm {
13475 proc: self.proc.clone(),
13476 selection: query,
13477 graphql_client: self.graphql_client.clone(),
13478 }
13479 }
13480 pub async fn tools(&self) -> Result<String, DaggerError> {
13482 let query = self.selection.select("tools");
13483 query.execute(self.graphql_client.clone()).await
13484 }
13485 pub fn token_usage(&self) -> LlmTokenUsage {
13487 let query = self.selection.select("tokenUsage");
13488 LlmTokenUsage {
13489 proc: self.proc.clone(),
13490 selection: query,
13491 graphql_client: self.graphql_client.clone(),
13492 }
13493 }
13494 pub async fn context_tokens(&self) -> Result<isize, DaggerError> {
13496 let query = self.selection.select("contextTokens");
13497 query.execute(self.graphql_client.clone()).await
13498 }
13499}
13500impl Node for Llm {
13501 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
13502 let query = self.selection.select("id");
13503 let graphql_client = self.graphql_client.clone();
13504 async move { query.execute(graphql_client).await }
13505 }
13506}
13507impl Syncer for Llm {
13508 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
13509 let query = self.selection.select("id");
13510 let graphql_client = self.graphql_client.clone();
13511 async move { query.execute(graphql_client).await }
13512 }
13513 fn sync(&self) -> impl core::future::Future<Output = Result<Self, DaggerError>> + Send {
13514 let query = self.selection.select("sync");
13515 let proc = self.proc.clone();
13516 let graphql_client = self.graphql_client.clone();
13517 async move {
13518 let id: Id = query.execute(graphql_client.clone()).await?;
13519 Ok(Self {
13520 proc,
13521 selection: query
13522 .root()
13523 .select("node")
13524 .arg("id", &id.0)
13525 .inline_fragment("LLM"),
13526 graphql_client,
13527 })
13528 }
13529 }
13530}
13531#[derive(Clone)]
13532pub struct LlmContent {
13533 pub proc: Option<Arc<DaggerSessionProc>>,
13534 pub selection: Selection,
13535 pub graphql_client: DynGraphQLClient,
13536}
13537#[derive(Builder, Debug, PartialEq)]
13538pub struct LlmContentWithFileOpts<'a> {
13539 #[builder(setter(into, strip_option), default)]
13541 pub mime_type: Option<&'a str>,
13542}
13543impl IntoID<Id> for LlmContent {
13544 fn into_id(
13545 self,
13546 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
13547 Box::pin(async move { self.id().await })
13548 }
13549}
13550impl Loadable for LlmContent {
13551 fn graphql_type() -> &'static str {
13552 "LLMContent"
13553 }
13554 fn from_query(
13555 proc: Option<Arc<DaggerSessionProc>>,
13556 selection: Selection,
13557 graphql_client: DynGraphQLClient,
13558 ) -> Self {
13559 Self {
13560 proc,
13561 selection,
13562 graphql_client,
13563 }
13564 }
13565}
13566impl LlmContent {
13567 pub async fn id(&self) -> Result<Id, DaggerError> {
13569 let query = self.selection.select("id");
13570 query.execute(self.graphql_client.clone()).await
13571 }
13572 pub fn with_text(&self, text: impl Into<String>) -> LlmContent {
13578 let mut query = self.selection.select("withText");
13579 query = query.arg("text", text.into());
13580 LlmContent {
13581 proc: self.proc.clone(),
13582 selection: query,
13583 graphql_client: self.graphql_client.clone(),
13584 }
13585 }
13586 pub fn with_file(&self, file: impl IntoID<Id>) -> LlmContent {
13593 let mut query = self.selection.select("withFile");
13594 query = query.arg_lazy(
13595 "file",
13596 Box::new(move || {
13597 let file = file.clone();
13598 Box::pin(async move { file.into_id().await.unwrap().quote() })
13599 }),
13600 );
13601 LlmContent {
13602 proc: self.proc.clone(),
13603 selection: query,
13604 graphql_client: self.graphql_client.clone(),
13605 }
13606 }
13607 pub fn with_file_opts<'a>(
13614 &self,
13615 file: impl IntoID<Id>,
13616 opts: LlmContentWithFileOpts<'a>,
13617 ) -> LlmContent {
13618 let mut query = self.selection.select("withFile");
13619 query = query.arg_lazy(
13620 "file",
13621 Box::new(move || {
13622 let file = file.clone();
13623 Box::pin(async move { file.into_id().await.unwrap().quote() })
13624 }),
13625 );
13626 if let Some(mime_type) = opts.mime_type {
13627 query = query.arg("mimeType", mime_type);
13628 }
13629 LlmContent {
13630 proc: self.proc.clone(),
13631 selection: query,
13632 graphql_client: self.graphql_client.clone(),
13633 }
13634 }
13635 pub fn with_data(&self, data: Bytes, mime_type: impl Into<String>) -> LlmContent {
13643 let mut query = self.selection.select("withData");
13644 query = query.arg("data", data);
13645 query = query.arg("mimeType", mime_type.into());
13646 LlmContent {
13647 proc: self.proc.clone(),
13648 selection: query,
13649 graphql_client: self.graphql_client.clone(),
13650 }
13651 }
13652 pub async fn blocks(&self) -> Result<Vec<LlmContentBlock>, DaggerError> {
13654 let query = self.selection.select("blocks");
13655 let query = query.select("id");
13656 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
13657 Ok(ids
13658 .into_iter()
13659 .map(|id| LlmContentBlock {
13660 proc: self.proc.clone(),
13661 selection: crate::querybuilder::query()
13662 .select("node")
13663 .arg("id", &id.0)
13664 .inline_fragment("LLMContentBlock"),
13665 graphql_client: self.graphql_client.clone(),
13666 })
13667 .collect())
13668 }
13669}
13670impl Node for LlmContent {
13671 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
13672 let query = self.selection.select("id");
13673 let graphql_client = self.graphql_client.clone();
13674 async move { query.execute(graphql_client).await }
13675 }
13676}
13677#[derive(Clone)]
13678pub struct LlmContentBlock {
13679 pub proc: Option<Arc<DaggerSessionProc>>,
13680 pub selection: Selection,
13681 pub graphql_client: DynGraphQLClient,
13682}
13683impl IntoID<Id> for LlmContentBlock {
13684 fn into_id(
13685 self,
13686 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
13687 Box::pin(async move { self.id().await })
13688 }
13689}
13690impl Loadable for LlmContentBlock {
13691 fn graphql_type() -> &'static str {
13692 "LLMContentBlock"
13693 }
13694 fn from_query(
13695 proc: Option<Arc<DaggerSessionProc>>,
13696 selection: Selection,
13697 graphql_client: DynGraphQLClient,
13698 ) -> Self {
13699 Self {
13700 proc,
13701 selection,
13702 graphql_client,
13703 }
13704 }
13705}
13706impl LlmContentBlock {
13707 pub async fn id(&self) -> Result<Id, DaggerError> {
13709 let query = self.selection.select("id");
13710 query.execute(self.graphql_client.clone()).await
13711 }
13712 pub async fn kind(&self) -> Result<LlmContentBlockKind, DaggerError> {
13714 let query = self.selection.select("kind");
13715 query.execute(self.graphql_client.clone()).await
13716 }
13717 pub async fn text(&self) -> Result<String, DaggerError> {
13719 let query = self.selection.select("text");
13720 query.execute(self.graphql_client.clone()).await
13721 }
13722 pub async fn call_id(&self) -> Result<String, DaggerError> {
13724 let query = self.selection.select("callId");
13725 query.execute(self.graphql_client.clone()).await
13726 }
13727 pub async fn tool_name(&self) -> Result<String, DaggerError> {
13729 let query = self.selection.select("toolName");
13730 query.execute(self.graphql_client.clone()).await
13731 }
13732 pub async fn arguments(&self) -> Result<Json, DaggerError> {
13734 let query = self.selection.select("arguments");
13735 query.execute(self.graphql_client.clone()).await
13736 }
13737 pub async fn errored(&self) -> Result<bool, DaggerError> {
13739 let query = self.selection.select("errored");
13740 query.execute(self.graphql_client.clone()).await
13741 }
13742 pub async fn mime_type(&self) -> Result<String, DaggerError> {
13744 let query = self.selection.select("mimeType");
13745 query.execute(self.graphql_client.clone()).await
13746 }
13747 pub async fn data(&self) -> Result<Bytes, DaggerError> {
13749 let query = self.selection.select("data");
13750 query.execute(self.graphql_client.clone()).await
13751 }
13752 pub async fn content(&self) -> Result<Vec<LlmContentBlock>, DaggerError> {
13754 let query = self.selection.select("content");
13755 let query = query.select("id");
13756 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
13757 Ok(ids
13758 .into_iter()
13759 .map(|id| LlmContentBlock {
13760 proc: self.proc.clone(),
13761 selection: crate::querybuilder::query()
13762 .select("node")
13763 .arg("id", &id.0)
13764 .inline_fragment("LLMContentBlock"),
13765 graphql_client: self.graphql_client.clone(),
13766 })
13767 .collect())
13768 }
13769 pub async fn signature(&self) -> Result<String, DaggerError> {
13771 let query = self.selection.select("signature");
13772 query.execute(self.graphql_client.clone()).await
13773 }
13774}
13775impl Node for LlmContentBlock {
13776 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
13777 let query = self.selection.select("id");
13778 let graphql_client = self.graphql_client.clone();
13779 async move { query.execute(graphql_client).await }
13780 }
13781}
13782#[derive(Clone)]
13783pub struct LlmMessage {
13784 pub proc: Option<Arc<DaggerSessionProc>>,
13785 pub selection: Selection,
13786 pub graphql_client: DynGraphQLClient,
13787}
13788impl IntoID<Id> for LlmMessage {
13789 fn into_id(
13790 self,
13791 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
13792 Box::pin(async move { self.id().await })
13793 }
13794}
13795impl Loadable for LlmMessage {
13796 fn graphql_type() -> &'static str {
13797 "LLMMessage"
13798 }
13799 fn from_query(
13800 proc: Option<Arc<DaggerSessionProc>>,
13801 selection: Selection,
13802 graphql_client: DynGraphQLClient,
13803 ) -> Self {
13804 Self {
13805 proc,
13806 selection,
13807 graphql_client,
13808 }
13809 }
13810}
13811impl LlmMessage {
13812 pub async fn id(&self) -> Result<Id, DaggerError> {
13814 let query = self.selection.select("id");
13815 query.execute(self.graphql_client.clone()).await
13816 }
13817 pub async fn origin(&self) -> Result<Option<LlmMessageOrigin>, DaggerError> {
13820 let query = self.selection.select("origin");
13821 let query = query.select("id");
13822 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
13823 Ok(id.map(|id| LlmMessageOrigin {
13824 proc: self.proc.clone(),
13825 selection: query
13826 .root()
13827 .select("node")
13828 .arg("id", &id.0)
13829 .inline_fragment("LLMMessageOrigin"),
13830 graphql_client: self.graphql_client.clone(),
13831 }))
13832 }
13833 pub async fn role(&self) -> Result<LlmMessageRole, DaggerError> {
13835 let query = self.selection.select("role");
13836 query.execute(self.graphql_client.clone()).await
13837 }
13838 pub async fn content(&self) -> Result<Vec<LlmContentBlock>, DaggerError> {
13840 let query = self.selection.select("content");
13841 let query = query.select("id");
13842 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
13843 Ok(ids
13844 .into_iter()
13845 .map(|id| LlmContentBlock {
13846 proc: self.proc.clone(),
13847 selection: crate::querybuilder::query()
13848 .select("node")
13849 .arg("id", &id.0)
13850 .inline_fragment("LLMContentBlock"),
13851 graphql_client: self.graphql_client.clone(),
13852 })
13853 .collect())
13854 }
13855 pub fn token_usage(&self) -> LlmTokenUsage {
13857 let query = self.selection.select("tokenUsage");
13858 LlmTokenUsage {
13859 proc: self.proc.clone(),
13860 selection: query,
13861 graphql_client: self.graphql_client.clone(),
13862 }
13863 }
13864}
13865impl Node for LlmMessage {
13866 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
13867 let query = self.selection.select("id");
13868 let graphql_client = self.graphql_client.clone();
13869 async move { query.execute(graphql_client).await }
13870 }
13871}
13872#[derive(Clone)]
13873pub struct LlmMessageOrigin {
13874 pub proc: Option<Arc<DaggerSessionProc>>,
13875 pub selection: Selection,
13876 pub graphql_client: DynGraphQLClient,
13877}
13878impl IntoID<Id> for LlmMessageOrigin {
13879 fn into_id(
13880 self,
13881 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
13882 Box::pin(async move { self.id().await })
13883 }
13884}
13885impl Loadable for LlmMessageOrigin {
13886 fn graphql_type() -> &'static str {
13887 "LLMMessageOrigin"
13888 }
13889 fn from_query(
13890 proc: Option<Arc<DaggerSessionProc>>,
13891 selection: Selection,
13892 graphql_client: DynGraphQLClient,
13893 ) -> Self {
13894 Self {
13895 proc,
13896 selection,
13897 graphql_client,
13898 }
13899 }
13900}
13901impl LlmMessageOrigin {
13902 pub async fn id(&self) -> Result<Id, DaggerError> {
13904 let query = self.selection.select("id");
13905 query.execute(self.graphql_client.clone()).await
13906 }
13907 pub async fn kind(&self) -> Result<LlmMessageOriginKind, DaggerError> {
13909 let query = self.selection.select("kind");
13910 query.execute(self.graphql_client.clone()).await
13911 }
13912 pub async fn agent_name(&self) -> Result<String, DaggerError> {
13914 let query = self.selection.select("agentName");
13915 query.execute(self.graphql_client.clone()).await
13916 }
13917 pub async fn r#ref(&self) -> Result<String, DaggerError> {
13919 let query = self.selection.select("ref");
13920 query.execute(self.graphql_client.clone()).await
13921 }
13922 pub async fn reply_to(&self) -> Result<String, DaggerError> {
13924 let query = self.selection.select("replyTo");
13925 query.execute(self.graphql_client.clone()).await
13926 }
13927}
13928impl Node for LlmMessageOrigin {
13929 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
13930 let query = self.selection.select("id");
13931 let graphql_client = self.graphql_client.clone();
13932 async move { query.execute(graphql_client).await }
13933 }
13934}
13935#[derive(Clone)]
13936pub struct LlmSkill {
13937 pub proc: Option<Arc<DaggerSessionProc>>,
13938 pub selection: Selection,
13939 pub graphql_client: DynGraphQLClient,
13940}
13941impl IntoID<Id> for LlmSkill {
13942 fn into_id(
13943 self,
13944 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
13945 Box::pin(async move { self.id().await })
13946 }
13947}
13948impl Loadable for LlmSkill {
13949 fn graphql_type() -> &'static str {
13950 "LLMSkill"
13951 }
13952 fn from_query(
13953 proc: Option<Arc<DaggerSessionProc>>,
13954 selection: Selection,
13955 graphql_client: DynGraphQLClient,
13956 ) -> Self {
13957 Self {
13958 proc,
13959 selection,
13960 graphql_client,
13961 }
13962 }
13963}
13964impl LlmSkill {
13965 pub async fn id(&self) -> Result<Id, DaggerError> {
13967 let query = self.selection.select("id");
13968 query.execute(self.graphql_client.clone()).await
13969 }
13970 pub async fn name(&self) -> Result<String, DaggerError> {
13972 let query = self.selection.select("name");
13973 query.execute(self.graphql_client.clone()).await
13974 }
13975 pub async fn description(&self) -> Result<String, DaggerError> {
13977 let query = self.selection.select("description");
13978 query.execute(self.graphql_client.clone()).await
13979 }
13980}
13981impl Node for LlmSkill {
13982 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
13983 let query = self.selection.select("id");
13984 let graphql_client = self.graphql_client.clone();
13985 async move { query.execute(graphql_client).await }
13986 }
13987}
13988#[derive(Clone)]
13989pub struct LlmTokenUsage {
13990 pub proc: Option<Arc<DaggerSessionProc>>,
13991 pub selection: Selection,
13992 pub graphql_client: DynGraphQLClient,
13993}
13994impl IntoID<Id> for LlmTokenUsage {
13995 fn into_id(
13996 self,
13997 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
13998 Box::pin(async move { self.id().await })
13999 }
14000}
14001impl Loadable for LlmTokenUsage {
14002 fn graphql_type() -> &'static str {
14003 "LLMTokenUsage"
14004 }
14005 fn from_query(
14006 proc: Option<Arc<DaggerSessionProc>>,
14007 selection: Selection,
14008 graphql_client: DynGraphQLClient,
14009 ) -> Self {
14010 Self {
14011 proc,
14012 selection,
14013 graphql_client,
14014 }
14015 }
14016}
14017impl LlmTokenUsage {
14018 pub async fn id(&self) -> Result<Id, DaggerError> {
14020 let query = self.selection.select("id");
14021 query.execute(self.graphql_client.clone()).await
14022 }
14023 pub async fn input_tokens(&self) -> Result<isize, DaggerError> {
14025 let query = self.selection.select("inputTokens");
14026 query.execute(self.graphql_client.clone()).await
14027 }
14028 pub async fn output_tokens(&self) -> Result<isize, DaggerError> {
14030 let query = self.selection.select("outputTokens");
14031 query.execute(self.graphql_client.clone()).await
14032 }
14033 pub async fn cached_token_reads(&self) -> Result<isize, DaggerError> {
14035 let query = self.selection.select("cachedTokenReads");
14036 query.execute(self.graphql_client.clone()).await
14037 }
14038 pub async fn cached_token_writes(&self) -> Result<isize, DaggerError> {
14040 let query = self.selection.select("cachedTokenWrites");
14041 query.execute(self.graphql_client.clone()).await
14042 }
14043 pub async fn total_tokens(&self) -> Result<isize, DaggerError> {
14045 let query = self.selection.select("totalTokens");
14046 query.execute(self.graphql_client.clone()).await
14047 }
14048}
14049impl Node for LlmTokenUsage {
14050 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
14051 let query = self.selection.select("id");
14052 let graphql_client = self.graphql_client.clone();
14053 async move { query.execute(graphql_client).await }
14054 }
14055}
14056#[derive(Clone)]
14057pub struct Label {
14058 pub proc: Option<Arc<DaggerSessionProc>>,
14059 pub selection: Selection,
14060 pub graphql_client: DynGraphQLClient,
14061}
14062impl IntoID<Id> for Label {
14063 fn into_id(
14064 self,
14065 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
14066 Box::pin(async move { self.id().await })
14067 }
14068}
14069impl Loadable for Label {
14070 fn graphql_type() -> &'static str {
14071 "Label"
14072 }
14073 fn from_query(
14074 proc: Option<Arc<DaggerSessionProc>>,
14075 selection: Selection,
14076 graphql_client: DynGraphQLClient,
14077 ) -> Self {
14078 Self {
14079 proc,
14080 selection,
14081 graphql_client,
14082 }
14083 }
14084}
14085impl Label {
14086 pub async fn id(&self) -> Result<Id, DaggerError> {
14088 let query = self.selection.select("id");
14089 query.execute(self.graphql_client.clone()).await
14090 }
14091 pub async fn name(&self) -> Result<String, DaggerError> {
14093 let query = self.selection.select("name");
14094 query.execute(self.graphql_client.clone()).await
14095 }
14096 pub async fn value(&self) -> Result<String, DaggerError> {
14098 let query = self.selection.select("value");
14099 query.execute(self.graphql_client.clone()).await
14100 }
14101}
14102impl Node for Label {
14103 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
14104 let query = self.selection.select("id");
14105 let graphql_client = self.graphql_client.clone();
14106 async move { query.execute(graphql_client).await }
14107 }
14108}
14109#[derive(Clone)]
14110pub struct ListTypeDef {
14111 pub proc: Option<Arc<DaggerSessionProc>>,
14112 pub selection: Selection,
14113 pub graphql_client: DynGraphQLClient,
14114}
14115impl IntoID<Id> for ListTypeDef {
14116 fn into_id(
14117 self,
14118 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
14119 Box::pin(async move { self.id().await })
14120 }
14121}
14122impl Loadable for ListTypeDef {
14123 fn graphql_type() -> &'static str {
14124 "ListTypeDef"
14125 }
14126 fn from_query(
14127 proc: Option<Arc<DaggerSessionProc>>,
14128 selection: Selection,
14129 graphql_client: DynGraphQLClient,
14130 ) -> Self {
14131 Self {
14132 proc,
14133 selection,
14134 graphql_client,
14135 }
14136 }
14137}
14138impl ListTypeDef {
14139 pub async fn id(&self) -> Result<Id, DaggerError> {
14141 let query = self.selection.select("id");
14142 query.execute(self.graphql_client.clone()).await
14143 }
14144 pub fn element_type_def(&self) -> TypeDef {
14146 let query = self.selection.select("elementTypeDef");
14147 TypeDef {
14148 proc: self.proc.clone(),
14149 selection: query,
14150 graphql_client: self.graphql_client.clone(),
14151 }
14152 }
14153}
14154impl Node for ListTypeDef {
14155 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
14156 let query = self.selection.select("id");
14157 let graphql_client = self.graphql_client.clone();
14158 async move { query.execute(graphql_client).await }
14159 }
14160}
14161#[derive(Clone)]
14162pub struct Module {
14163 pub proc: Option<Arc<DaggerSessionProc>>,
14164 pub selection: Selection,
14165 pub graphql_client: DynGraphQLClient,
14166}
14167#[derive(Builder, Debug, PartialEq)]
14168pub struct ModuleServeOpts {
14169 #[builder(setter(into, strip_option), default)]
14171 pub entrypoint: Option<bool>,
14172 #[builder(setter(into, strip_option), default)]
14174 pub include_dependencies: Option<bool>,
14175}
14176impl IntoID<Id> for Module {
14177 fn into_id(
14178 self,
14179 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
14180 Box::pin(async move { self.id().await })
14181 }
14182}
14183impl Loadable for Module {
14184 fn graphql_type() -> &'static str {
14185 "Module"
14186 }
14187 fn from_query(
14188 proc: Option<Arc<DaggerSessionProc>>,
14189 selection: Selection,
14190 graphql_client: DynGraphQLClient,
14191 ) -> Self {
14192 Self {
14193 proc,
14194 selection,
14195 graphql_client,
14196 }
14197 }
14198}
14199impl Module {
14200 pub async fn id(&self) -> Result<Id, DaggerError> {
14202 let query = self.selection.select("id");
14203 query.execute(self.graphql_client.clone()).await
14204 }
14205 pub async fn context_source(&self) -> Result<Option<ModuleSource>, DaggerError> {
14207 let query = self.selection.select("contextSource");
14208 let query = query.select("id");
14209 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
14210 Ok(id.map(|id| ModuleSource {
14211 proc: self.proc.clone(),
14212 selection: query
14213 .root()
14214 .select("node")
14215 .arg("id", &id.0)
14216 .inline_fragment("ModuleSource"),
14217 graphql_client: self.graphql_client.clone(),
14218 }))
14219 }
14220 pub async fn sync(&self) -> Result<Module, DaggerError> {
14222 let query = self.selection.select("sync");
14223 let id: Id = query.execute(self.graphql_client.clone()).await?;
14224 Ok(Module {
14225 proc: self.proc.clone(),
14226 selection: query
14227 .root()
14228 .select("node")
14229 .arg("id", &id.0)
14230 .inline_fragment("Module"),
14231 graphql_client: self.graphql_client.clone(),
14232 })
14233 }
14234 pub async fn dependencies(&self) -> Result<Vec<Module>, DaggerError> {
14236 let query = self.selection.select("dependencies");
14237 let query = query.select("id");
14238 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
14239 Ok(ids
14240 .into_iter()
14241 .map(|id| Module {
14242 proc: self.proc.clone(),
14243 selection: crate::querybuilder::query()
14244 .select("node")
14245 .arg("id", &id.0)
14246 .inline_fragment("Module"),
14247 graphql_client: self.graphql_client.clone(),
14248 })
14249 .collect())
14250 }
14251 pub fn introspection_schema_json(&self) -> File {
14255 let query = self.selection.select("introspectionSchemaJSON");
14256 File {
14257 proc: self.proc.clone(),
14258 selection: query,
14259 graphql_client: self.graphql_client.clone(),
14260 }
14261 }
14262 pub fn generated_context_directory(&self) -> Directory {
14264 let query = self.selection.select("generatedContextDirectory");
14265 Directory {
14266 proc: self.proc.clone(),
14267 selection: query,
14268 graphql_client: self.graphql_client.clone(),
14269 }
14270 }
14271 pub fn user_defaults(&self) -> EnvFile {
14273 let query = self.selection.select("userDefaults");
14274 EnvFile {
14275 proc: self.proc.clone(),
14276 selection: query,
14277 graphql_client: self.graphql_client.clone(),
14278 }
14279 }
14280 pub fn with_description(&self, description: impl Into<String>) -> Module {
14286 let mut query = self.selection.select("withDescription");
14287 query = query.arg("description", description.into());
14288 Module {
14289 proc: self.proc.clone(),
14290 selection: query,
14291 graphql_client: self.graphql_client.clone(),
14292 }
14293 }
14294 pub fn with_object(&self, object: impl IntoID<Id>) -> Module {
14296 let mut query = self.selection.select("withObject");
14297 query = query.arg_lazy(
14298 "object",
14299 Box::new(move || {
14300 let object = object.clone();
14301 Box::pin(async move { object.into_id().await.unwrap().quote() })
14302 }),
14303 );
14304 Module {
14305 proc: self.proc.clone(),
14306 selection: query,
14307 graphql_client: self.graphql_client.clone(),
14308 }
14309 }
14310 pub fn with_interface(&self, iface: impl IntoID<Id>) -> Module {
14312 let mut query = self.selection.select("withInterface");
14313 query = query.arg_lazy(
14314 "iface",
14315 Box::new(move || {
14316 let iface = iface.clone();
14317 Box::pin(async move { iface.into_id().await.unwrap().quote() })
14318 }),
14319 );
14320 Module {
14321 proc: self.proc.clone(),
14322 selection: query,
14323 graphql_client: self.graphql_client.clone(),
14324 }
14325 }
14326 pub fn with_enum(&self, r#enum: impl IntoID<Id>) -> Module {
14328 let mut query = self.selection.select("withEnum");
14329 query = query.arg_lazy(
14330 "enum",
14331 Box::new(move || {
14332 let r#enum = r#enum.clone();
14333 Box::pin(async move { r#enum.into_id().await.unwrap().quote() })
14334 }),
14335 );
14336 Module {
14337 proc: self.proc.clone(),
14338 selection: query,
14339 graphql_client: self.graphql_client.clone(),
14340 }
14341 }
14342 pub async fn runtime(&self) -> Result<Option<Container>, DaggerError> {
14344 let query = self.selection.select("runtime");
14345 let query = query.select("id");
14346 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
14347 Ok(id.map(|id| Container {
14348 proc: self.proc.clone(),
14349 selection: query
14350 .root()
14351 .select("node")
14352 .arg("id", &id.0)
14353 .inline_fragment("Container"),
14354 graphql_client: self.graphql_client.clone(),
14355 }))
14356 }
14357 pub async fn serve(&self) -> Result<Void, DaggerError> {
14364 let query = self.selection.select("serve");
14365 query.execute(self.graphql_client.clone()).await
14366 }
14367 pub async fn serve_opts(&self, opts: ModuleServeOpts) -> Result<Void, DaggerError> {
14374 let mut query = self.selection.select("serve");
14375 if let Some(include_dependencies) = opts.include_dependencies {
14376 query = query.arg("includeDependencies", include_dependencies);
14377 }
14378 if let Some(entrypoint) = opts.entrypoint {
14379 query = query.arg("entrypoint", entrypoint);
14380 }
14381 query.execute(self.graphql_client.clone()).await
14382 }
14383 pub async fn source(&self) -> Result<Option<ModuleSource>, DaggerError> {
14385 let query = self.selection.select("source");
14386 let query = query.select("id");
14387 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
14388 Ok(id.map(|id| ModuleSource {
14389 proc: self.proc.clone(),
14390 selection: query
14391 .root()
14392 .select("node")
14393 .arg("id", &id.0)
14394 .inline_fragment("ModuleSource"),
14395 graphql_client: self.graphql_client.clone(),
14396 }))
14397 }
14398 pub async fn name(&self) -> Result<String, DaggerError> {
14400 let query = self.selection.select("name");
14401 query.execute(self.graphql_client.clone()).await
14402 }
14403 pub async fn sdk(&self) -> Result<Option<SdkConfig>, DaggerError> {
14405 let query = self.selection.select("sdk");
14406 let query = query.select("id");
14407 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
14408 Ok(id.map(|id| SdkConfig {
14409 proc: self.proc.clone(),
14410 selection: query
14411 .root()
14412 .select("node")
14413 .arg("id", &id.0)
14414 .inline_fragment("SDKConfig"),
14415 graphql_client: self.graphql_client.clone(),
14416 }))
14417 }
14418 pub async fn description(&self) -> Result<String, DaggerError> {
14420 let query = self.selection.select("description");
14421 query.execute(self.graphql_client.clone()).await
14422 }
14423 pub async fn objects(&self) -> Result<Vec<TypeDef>, DaggerError> {
14425 let query = self.selection.select("objects");
14426 let query = query.select("id");
14427 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
14428 Ok(ids
14429 .into_iter()
14430 .map(|id| TypeDef {
14431 proc: self.proc.clone(),
14432 selection: crate::querybuilder::query()
14433 .select("node")
14434 .arg("id", &id.0)
14435 .inline_fragment("TypeDef"),
14436 graphql_client: self.graphql_client.clone(),
14437 })
14438 .collect())
14439 }
14440 pub async fn interfaces(&self) -> Result<Vec<TypeDef>, DaggerError> {
14442 let query = self.selection.select("interfaces");
14443 let query = query.select("id");
14444 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
14445 Ok(ids
14446 .into_iter()
14447 .map(|id| TypeDef {
14448 proc: self.proc.clone(),
14449 selection: crate::querybuilder::query()
14450 .select("node")
14451 .arg("id", &id.0)
14452 .inline_fragment("TypeDef"),
14453 graphql_client: self.graphql_client.clone(),
14454 })
14455 .collect())
14456 }
14457 pub async fn enums(&self) -> Result<Vec<TypeDef>, DaggerError> {
14459 let query = self.selection.select("enums");
14460 let query = query.select("id");
14461 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
14462 Ok(ids
14463 .into_iter()
14464 .map(|id| TypeDef {
14465 proc: self.proc.clone(),
14466 selection: crate::querybuilder::query()
14467 .select("node")
14468 .arg("id", &id.0)
14469 .inline_fragment("TypeDef"),
14470 graphql_client: self.graphql_client.clone(),
14471 })
14472 .collect())
14473 }
14474}
14475impl Node for Module {
14476 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
14477 let query = self.selection.select("id");
14478 let graphql_client = self.graphql_client.clone();
14479 async move { query.execute(graphql_client).await }
14480 }
14481}
14482impl Syncer for Module {
14483 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
14484 let query = self.selection.select("id");
14485 let graphql_client = self.graphql_client.clone();
14486 async move { query.execute(graphql_client).await }
14487 }
14488 fn sync(&self) -> impl core::future::Future<Output = Result<Self, DaggerError>> + Send {
14489 let query = self.selection.select("sync");
14490 let proc = self.proc.clone();
14491 let graphql_client = self.graphql_client.clone();
14492 async move {
14493 let id: Id = query.execute(graphql_client.clone()).await?;
14494 Ok(Self {
14495 proc,
14496 selection: query
14497 .root()
14498 .select("node")
14499 .arg("id", &id.0)
14500 .inline_fragment("Module"),
14501 graphql_client,
14502 })
14503 }
14504 }
14505}
14506#[derive(Clone)]
14507pub struct ModuleConfigClient {
14508 pub proc: Option<Arc<DaggerSessionProc>>,
14509 pub selection: Selection,
14510 pub graphql_client: DynGraphQLClient,
14511}
14512impl IntoID<Id> for ModuleConfigClient {
14513 fn into_id(
14514 self,
14515 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
14516 Box::pin(async move { self.id().await })
14517 }
14518}
14519impl Loadable for ModuleConfigClient {
14520 fn graphql_type() -> &'static str {
14521 "ModuleConfigClient"
14522 }
14523 fn from_query(
14524 proc: Option<Arc<DaggerSessionProc>>,
14525 selection: Selection,
14526 graphql_client: DynGraphQLClient,
14527 ) -> Self {
14528 Self {
14529 proc,
14530 selection,
14531 graphql_client,
14532 }
14533 }
14534}
14535impl ModuleConfigClient {
14536 pub async fn id(&self) -> Result<Id, DaggerError> {
14538 let query = self.selection.select("id");
14539 query.execute(self.graphql_client.clone()).await
14540 }
14541 pub async fn generator(&self) -> Result<String, DaggerError> {
14543 let query = self.selection.select("generator");
14544 query.execute(self.graphql_client.clone()).await
14545 }
14546 pub async fn directory(&self) -> Result<String, DaggerError> {
14548 let query = self.selection.select("directory");
14549 query.execute(self.graphql_client.clone()).await
14550 }
14551}
14552impl Node for ModuleConfigClient {
14553 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
14554 let query = self.selection.select("id");
14555 let graphql_client = self.graphql_client.clone();
14556 async move { query.execute(graphql_client).await }
14557 }
14558}
14559#[derive(Clone)]
14560pub struct ModuleSource {
14561 pub proc: Option<Arc<DaggerSessionProc>>,
14562 pub selection: Selection,
14563 pub graphql_client: DynGraphQLClient,
14564}
14565impl IntoID<Id> for ModuleSource {
14566 fn into_id(
14567 self,
14568 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
14569 Box::pin(async move { self.id().await })
14570 }
14571}
14572impl Loadable for ModuleSource {
14573 fn graphql_type() -> &'static str {
14574 "ModuleSource"
14575 }
14576 fn from_query(
14577 proc: Option<Arc<DaggerSessionProc>>,
14578 selection: Selection,
14579 graphql_client: DynGraphQLClient,
14580 ) -> Self {
14581 Self {
14582 proc,
14583 selection,
14584 graphql_client,
14585 }
14586 }
14587}
14588impl ModuleSource {
14589 pub async fn id(&self) -> Result<Id, DaggerError> {
14591 let query = self.selection.select("id");
14592 query.execute(self.graphql_client.clone()).await
14593 }
14594 pub async fn sync(&self) -> Result<ModuleSource, DaggerError> {
14596 let query = self.selection.select("sync");
14597 let id: Id = query.execute(self.graphql_client.clone()).await?;
14598 Ok(ModuleSource {
14599 proc: self.proc.clone(),
14600 selection: query
14601 .root()
14602 .select("node")
14603 .arg("id", &id.0)
14604 .inline_fragment("ModuleSource"),
14605 graphql_client: self.graphql_client.clone(),
14606 })
14607 }
14608 pub async fn source_subpath(&self) -> Result<String, DaggerError> {
14610 let query = self.selection.select("sourceSubpath");
14611 query.execute(self.graphql_client.clone()).await
14612 }
14613 pub async fn original_subpath(&self) -> Result<String, DaggerError> {
14615 let query = self.selection.select("originalSubpath");
14616 query.execute(self.graphql_client.clone()).await
14617 }
14618 pub async fn digest(&self) -> Result<String, DaggerError> {
14620 let query = self.selection.select("digest");
14621 query.execute(self.graphql_client.clone()).await
14622 }
14623 pub fn with_source_subpath(&self, path: impl Into<String>) -> ModuleSource {
14629 let mut query = self.selection.select("withSourceSubpath");
14630 query = query.arg("path", path.into());
14631 ModuleSource {
14632 proc: self.proc.clone(),
14633 selection: query,
14634 graphql_client: self.graphql_client.clone(),
14635 }
14636 }
14637 pub fn with_name(&self, name: impl Into<String>) -> ModuleSource {
14643 let mut query = self.selection.select("withName");
14644 query = query.arg("name", name.into());
14645 ModuleSource {
14646 proc: self.proc.clone(),
14647 selection: query,
14648 graphql_client: self.graphql_client.clone(),
14649 }
14650 }
14651 pub fn with_includes(&self, patterns: Vec<impl Into<String>>) -> ModuleSource {
14657 let mut query = self.selection.select("withIncludes");
14658 query = query.arg(
14659 "patterns",
14660 patterns
14661 .into_iter()
14662 .map(|i| i.into())
14663 .collect::<Vec<String>>(),
14664 );
14665 ModuleSource {
14666 proc: self.proc.clone(),
14667 selection: query,
14668 graphql_client: self.graphql_client.clone(),
14669 }
14670 }
14671 pub fn with_sdk(&self, source: impl Into<String>) -> ModuleSource {
14677 let mut query = self.selection.select("withSDK");
14678 query = query.arg("source", source.into());
14679 ModuleSource {
14680 proc: self.proc.clone(),
14681 selection: query,
14682 graphql_client: self.graphql_client.clone(),
14683 }
14684 }
14685 pub fn with_engine_version(&self, version: impl Into<String>) -> ModuleSource {
14691 let mut query = self.selection.select("withEngineVersion");
14692 query = query.arg("version", version.into());
14693 ModuleSource {
14694 proc: self.proc.clone(),
14695 selection: query,
14696 graphql_client: self.graphql_client.clone(),
14697 }
14698 }
14699 pub fn with_dependencies(&self, dependencies: Vec<Id>) -> ModuleSource {
14705 let mut query = self.selection.select("withDependencies");
14706 query = query.arg("dependencies", dependencies);
14707 ModuleSource {
14708 proc: self.proc.clone(),
14709 selection: query,
14710 graphql_client: self.graphql_client.clone(),
14711 }
14712 }
14713 pub fn with_update_dependencies(&self, dependencies: Vec<impl Into<String>>) -> ModuleSource {
14719 let mut query = self.selection.select("withUpdateDependencies");
14720 query = query.arg(
14721 "dependencies",
14722 dependencies
14723 .into_iter()
14724 .map(|i| i.into())
14725 .collect::<Vec<String>>(),
14726 );
14727 ModuleSource {
14728 proc: self.proc.clone(),
14729 selection: query,
14730 graphql_client: self.graphql_client.clone(),
14731 }
14732 }
14733 pub fn without_dependencies(&self, dependencies: Vec<impl Into<String>>) -> ModuleSource {
14739 let mut query = self.selection.select("withoutDependencies");
14740 query = query.arg(
14741 "dependencies",
14742 dependencies
14743 .into_iter()
14744 .map(|i| i.into())
14745 .collect::<Vec<String>>(),
14746 );
14747 ModuleSource {
14748 proc: self.proc.clone(),
14749 selection: query,
14750 graphql_client: self.graphql_client.clone(),
14751 }
14752 }
14753 pub fn with_blueprint(&self, blueprint: impl IntoID<Id>) -> ModuleSource {
14759 let mut query = self.selection.select("withBlueprint");
14760 query = query.arg_lazy(
14761 "blueprint",
14762 Box::new(move || {
14763 let blueprint = blueprint.clone();
14764 Box::pin(async move { blueprint.into_id().await.unwrap().quote() })
14765 }),
14766 );
14767 ModuleSource {
14768 proc: self.proc.clone(),
14769 selection: query,
14770 graphql_client: self.graphql_client.clone(),
14771 }
14772 }
14773 pub fn with_toolchains(&self, toolchains: Vec<Id>) -> ModuleSource {
14779 let mut query = self.selection.select("withToolchains");
14780 query = query.arg("toolchains", toolchains);
14781 ModuleSource {
14782 proc: self.proc.clone(),
14783 selection: query,
14784 graphql_client: self.graphql_client.clone(),
14785 }
14786 }
14787 pub fn with_update_toolchains(&self, toolchains: Vec<impl Into<String>>) -> ModuleSource {
14793 let mut query = self.selection.select("withUpdateToolchains");
14794 query = query.arg(
14795 "toolchains",
14796 toolchains
14797 .into_iter()
14798 .map(|i| i.into())
14799 .collect::<Vec<String>>(),
14800 );
14801 ModuleSource {
14802 proc: self.proc.clone(),
14803 selection: query,
14804 graphql_client: self.graphql_client.clone(),
14805 }
14806 }
14807 pub fn without_toolchains(&self, toolchains: Vec<impl Into<String>>) -> ModuleSource {
14813 let mut query = self.selection.select("withoutToolchains");
14814 query = query.arg(
14815 "toolchains",
14816 toolchains
14817 .into_iter()
14818 .map(|i| i.into())
14819 .collect::<Vec<String>>(),
14820 );
14821 ModuleSource {
14822 proc: self.proc.clone(),
14823 selection: query,
14824 graphql_client: self.graphql_client.clone(),
14825 }
14826 }
14827 pub fn with_update_blueprint(&self) -> ModuleSource {
14829 let query = self.selection.select("withUpdateBlueprint");
14830 ModuleSource {
14831 proc: self.proc.clone(),
14832 selection: query,
14833 graphql_client: self.graphql_client.clone(),
14834 }
14835 }
14836 pub fn without_blueprint(&self) -> ModuleSource {
14838 let query = self.selection.select("withoutBlueprint");
14839 ModuleSource {
14840 proc: self.proc.clone(),
14841 selection: query,
14842 graphql_client: self.graphql_client.clone(),
14843 }
14844 }
14845 pub fn with_experimental_features(
14851 &self,
14852 features: Vec<ModuleSourceExperimentalFeature>,
14853 ) -> ModuleSource {
14854 let mut query = self.selection.select("withExperimentalFeatures");
14855 query = query.arg("features", features);
14856 ModuleSource {
14857 proc: self.proc.clone(),
14858 selection: query,
14859 graphql_client: self.graphql_client.clone(),
14860 }
14861 }
14862 pub fn without_experimental_features(
14868 &self,
14869 features: Vec<ModuleSourceExperimentalFeature>,
14870 ) -> ModuleSource {
14871 let mut query = self.selection.select("withoutExperimentalFeatures");
14872 query = query.arg("features", features);
14873 ModuleSource {
14874 proc: self.proc.clone(),
14875 selection: query,
14876 graphql_client: self.graphql_client.clone(),
14877 }
14878 }
14879 pub fn generated_context_directory(&self) -> Directory {
14881 let query = self.selection.select("generatedContextDirectory");
14882 Directory {
14883 proc: self.proc.clone(),
14884 selection: query,
14885 graphql_client: self.graphql_client.clone(),
14886 }
14887 }
14888 pub fn updated_config_directory(&self) -> Directory {
14891 let query = self.selection.select("updatedConfigDirectory");
14892 Directory {
14893 proc: self.proc.clone(),
14894 selection: query,
14895 graphql_client: self.graphql_client.clone(),
14896 }
14897 }
14898 pub fn generated_context_changeset(&self) -> Changeset {
14900 let query = self.selection.select("generatedContextChangeset");
14901 Changeset {
14902 proc: self.proc.clone(),
14903 selection: query,
14904 graphql_client: self.graphql_client.clone(),
14905 }
14906 }
14907 pub fn generate(&self, workspace: impl IntoID<Id>) -> Workspace {
14914 let mut query = self.selection.select("generate");
14915 query = query.arg_lazy(
14916 "workspace",
14917 Box::new(move || {
14918 let workspace = workspace.clone();
14919 Box::pin(async move { workspace.into_id().await.unwrap().quote() })
14920 }),
14921 );
14922 Workspace {
14923 proc: self.proc.clone(),
14924 selection: query,
14925 graphql_client: self.graphql_client.clone(),
14926 }
14927 }
14928 pub async fn as_string(&self) -> Result<String, DaggerError> {
14930 let query = self.selection.select("asString");
14931 query.execute(self.graphql_client.clone()).await
14932 }
14933 pub async fn pin(&self) -> Result<String, DaggerError> {
14935 let query = self.selection.select("pin");
14936 query.execute(self.graphql_client.clone()).await
14937 }
14938 pub async fn local_context_directory_path(&self) -> Result<String, DaggerError> {
14940 let query = self.selection.select("localContextDirectoryPath");
14941 query.execute(self.graphql_client.clone()).await
14942 }
14943 pub fn as_module(&self) -> Module {
14945 let query = self.selection.select("asModule");
14946 Module {
14947 proc: self.proc.clone(),
14948 selection: query,
14949 graphql_client: self.graphql_client.clone(),
14950 }
14951 }
14952 pub fn introspection_schema_json(&self) -> File {
14956 let query = self.selection.select("introspectionSchemaJSON");
14957 File {
14958 proc: self.proc.clone(),
14959 selection: query,
14960 graphql_client: self.graphql_client.clone(),
14961 }
14962 }
14963 pub fn client_schema_introspection_json(&self) -> File {
14966 let query = self.selection.select("clientSchemaIntrospectionJSON");
14967 File {
14968 proc: self.proc.clone(),
14969 selection: query,
14970 graphql_client: self.graphql_client.clone(),
14971 }
14972 }
14973 pub fn directory(&self, path: impl Into<String>) -> Directory {
14979 let mut query = self.selection.select("directory");
14980 query = query.arg("path", path.into());
14981 Directory {
14982 proc: self.proc.clone(),
14983 selection: query,
14984 graphql_client: self.graphql_client.clone(),
14985 }
14986 }
14987 pub async fn clone_ref(&self) -> Result<String, DaggerError> {
14989 let query = self.selection.select("cloneRef");
14990 query.execute(self.graphql_client.clone()).await
14991 }
14992 pub async fn html_url(&self) -> Result<String, DaggerError> {
14994 let query = self.selection.select("htmlURL");
14995 query.execute(self.graphql_client.clone()).await
14996 }
14997 pub async fn html_repo_url(&self) -> Result<String, DaggerError> {
14999 let query = self.selection.select("htmlRepoURL");
15000 query.execute(self.graphql_client.clone()).await
15001 }
15002 pub async fn version(&self) -> Result<String, DaggerError> {
15004 let query = self.selection.select("version");
15005 query.execute(self.graphql_client.clone()).await
15006 }
15007 pub async fn commit(&self) -> Result<String, DaggerError> {
15009 let query = self.selection.select("commit");
15010 query.execute(self.graphql_client.clone()).await
15011 }
15012 pub async fn repo_root_path(&self) -> Result<String, DaggerError> {
15014 let query = self.selection.select("repoRootPath");
15015 query.execute(self.graphql_client.clone()).await
15016 }
15017 pub fn with_client(
15024 &self,
15025 generator: impl Into<String>,
15026 output_dir: impl Into<String>,
15027 ) -> ModuleSource {
15028 let mut query = self.selection.select("withClient");
15029 query = query.arg("generator", generator.into());
15030 query = query.arg("outputDir", output_dir.into());
15031 ModuleSource {
15032 proc: self.proc.clone(),
15033 selection: query,
15034 graphql_client: self.graphql_client.clone(),
15035 }
15036 }
15037 pub fn with_updated_clients(&self, clients: Vec<impl Into<String>>) -> ModuleSource {
15043 let mut query = self.selection.select("withUpdatedClients");
15044 query = query.arg(
15045 "clients",
15046 clients
15047 .into_iter()
15048 .map(|i| i.into())
15049 .collect::<Vec<String>>(),
15050 );
15051 ModuleSource {
15052 proc: self.proc.clone(),
15053 selection: query,
15054 graphql_client: self.graphql_client.clone(),
15055 }
15056 }
15057 pub fn without_client(&self, path: impl Into<String>) -> ModuleSource {
15063 let mut query = self.selection.select("withoutClient");
15064 query = query.arg("path", path.into());
15065 ModuleSource {
15066 proc: self.proc.clone(),
15067 selection: query,
15068 graphql_client: self.graphql_client.clone(),
15069 }
15070 }
15071 pub async fn config_exists(&self) -> Result<bool, DaggerError> {
15073 let query = self.selection.select("configExists");
15074 query.execute(self.graphql_client.clone()).await
15075 }
15076 pub async fn module_name(&self) -> Result<String, DaggerError> {
15078 let query = self.selection.select("moduleName");
15079 query.execute(self.graphql_client.clone()).await
15080 }
15081 pub async fn module_original_name(&self) -> Result<String, DaggerError> {
15083 let query = self.selection.select("moduleOriginalName");
15084 query.execute(self.graphql_client.clone()).await
15085 }
15086 pub async fn engine_version(&self) -> Result<String, DaggerError> {
15088 let query = self.selection.select("engineVersion");
15089 query.execute(self.graphql_client.clone()).await
15090 }
15091 pub async fn sdk(&self) -> Result<Option<SdkConfig>, DaggerError> {
15093 let query = self.selection.select("sdk");
15094 let query = query.select("id");
15095 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
15096 Ok(id.map(|id| SdkConfig {
15097 proc: self.proc.clone(),
15098 selection: query
15099 .root()
15100 .select("node")
15101 .arg("id", &id.0)
15102 .inline_fragment("SDKConfig"),
15103 graphql_client: self.graphql_client.clone(),
15104 }))
15105 }
15106 pub async fn dependencies(&self) -> Result<Vec<ModuleSource>, DaggerError> {
15108 let query = self.selection.select("dependencies");
15109 let query = query.select("id");
15110 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
15111 Ok(ids
15112 .into_iter()
15113 .map(|id| ModuleSource {
15114 proc: self.proc.clone(),
15115 selection: crate::querybuilder::query()
15116 .select("node")
15117 .arg("id", &id.0)
15118 .inline_fragment("ModuleSource"),
15119 graphql_client: self.graphql_client.clone(),
15120 })
15121 .collect())
15122 }
15123 pub fn blueprint(&self) -> ModuleSource {
15125 let query = self.selection.select("blueprint");
15126 ModuleSource {
15127 proc: self.proc.clone(),
15128 selection: query,
15129 graphql_client: self.graphql_client.clone(),
15130 }
15131 }
15132 pub async fn toolchains(&self) -> Result<Vec<ModuleSource>, DaggerError> {
15134 let query = self.selection.select("toolchains");
15135 let query = query.select("id");
15136 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
15137 Ok(ids
15138 .into_iter()
15139 .map(|id| ModuleSource {
15140 proc: self.proc.clone(),
15141 selection: crate::querybuilder::query()
15142 .select("node")
15143 .arg("id", &id.0)
15144 .inline_fragment("ModuleSource"),
15145 graphql_client: self.graphql_client.clone(),
15146 })
15147 .collect())
15148 }
15149 pub fn user_defaults(&self) -> EnvFile {
15151 let query = self.selection.select("userDefaults");
15152 EnvFile {
15153 proc: self.proc.clone(),
15154 selection: query,
15155 graphql_client: self.graphql_client.clone(),
15156 }
15157 }
15158 pub async fn config_clients(&self) -> Result<Vec<ModuleConfigClient>, DaggerError> {
15160 let query = self.selection.select("configClients");
15161 let query = query.select("id");
15162 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
15163 Ok(ids
15164 .into_iter()
15165 .map(|id| ModuleConfigClient {
15166 proc: self.proc.clone(),
15167 selection: crate::querybuilder::query()
15168 .select("node")
15169 .arg("id", &id.0)
15170 .inline_fragment("ModuleConfigClient"),
15171 graphql_client: self.graphql_client.clone(),
15172 })
15173 .collect())
15174 }
15175 pub async fn source_root_subpath(&self) -> Result<String, DaggerError> {
15177 let query = self.selection.select("sourceRootSubpath");
15178 query.execute(self.graphql_client.clone()).await
15179 }
15180 pub fn context_directory(&self) -> Directory {
15182 let query = self.selection.select("contextDirectory");
15183 Directory {
15184 proc: self.proc.clone(),
15185 selection: query,
15186 graphql_client: self.graphql_client.clone(),
15187 }
15188 }
15189 pub async fn kind(&self) -> Result<ModuleSourceKind, DaggerError> {
15191 let query = self.selection.select("kind");
15192 query.execute(self.graphql_client.clone()).await
15193 }
15194}
15195impl Node for ModuleSource {
15196 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
15197 let query = self.selection.select("id");
15198 let graphql_client = self.graphql_client.clone();
15199 async move { query.execute(graphql_client).await }
15200 }
15201}
15202impl Syncer for ModuleSource {
15203 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
15204 let query = self.selection.select("id");
15205 let graphql_client = self.graphql_client.clone();
15206 async move { query.execute(graphql_client).await }
15207 }
15208 fn sync(&self) -> impl core::future::Future<Output = Result<Self, DaggerError>> + Send {
15209 let query = self.selection.select("sync");
15210 let proc = self.proc.clone();
15211 let graphql_client = self.graphql_client.clone();
15212 async move {
15213 let id: Id = query.execute(graphql_client.clone()).await?;
15214 Ok(Self {
15215 proc,
15216 selection: query
15217 .root()
15218 .select("node")
15219 .arg("id", &id.0)
15220 .inline_fragment("ModuleSource"),
15221 graphql_client,
15222 })
15223 }
15224 }
15225}
15226#[derive(Clone)]
15227pub struct ObjectTypeDef {
15228 pub proc: Option<Arc<DaggerSessionProc>>,
15229 pub selection: Selection,
15230 pub graphql_client: DynGraphQLClient,
15231}
15232impl IntoID<Id> for ObjectTypeDef {
15233 fn into_id(
15234 self,
15235 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
15236 Box::pin(async move { self.id().await })
15237 }
15238}
15239impl Loadable for ObjectTypeDef {
15240 fn graphql_type() -> &'static str {
15241 "ObjectTypeDef"
15242 }
15243 fn from_query(
15244 proc: Option<Arc<DaggerSessionProc>>,
15245 selection: Selection,
15246 graphql_client: DynGraphQLClient,
15247 ) -> Self {
15248 Self {
15249 proc,
15250 selection,
15251 graphql_client,
15252 }
15253 }
15254}
15255impl ObjectTypeDef {
15256 pub async fn id(&self) -> Result<Id, DaggerError> {
15258 let query = self.selection.select("id");
15259 query.execute(self.graphql_client.clone()).await
15260 }
15261 pub async fn name(&self) -> Result<String, DaggerError> {
15263 let query = self.selection.select("name");
15264 query.execute(self.graphql_client.clone()).await
15265 }
15266 pub async fn description(&self) -> Result<String, DaggerError> {
15268 let query = self.selection.select("description");
15269 query.execute(self.graphql_client.clone()).await
15270 }
15271 pub async fn source_map(&self) -> Result<Option<SourceMap>, DaggerError> {
15273 let query = self.selection.select("sourceMap");
15274 let query = query.select("id");
15275 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
15276 Ok(id.map(|id| SourceMap {
15277 proc: self.proc.clone(),
15278 selection: query
15279 .root()
15280 .select("node")
15281 .arg("id", &id.0)
15282 .inline_fragment("SourceMap"),
15283 graphql_client: self.graphql_client.clone(),
15284 }))
15285 }
15286 pub async fn deprecated(&self) -> Result<String, DaggerError> {
15288 let query = self.selection.select("deprecated");
15289 query.execute(self.graphql_client.clone()).await
15290 }
15291 pub async fn source_module_name(&self) -> Result<String, DaggerError> {
15293 let query = self.selection.select("sourceModuleName");
15294 query.execute(self.graphql_client.clone()).await
15295 }
15296 pub async fn fields(&self) -> Result<Vec<FieldTypeDef>, DaggerError> {
15298 let query = self.selection.select("fields");
15299 let query = query.select("id");
15300 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
15301 Ok(ids
15302 .into_iter()
15303 .map(|id| FieldTypeDef {
15304 proc: self.proc.clone(),
15305 selection: crate::querybuilder::query()
15306 .select("node")
15307 .arg("id", &id.0)
15308 .inline_fragment("FieldTypeDef"),
15309 graphql_client: self.graphql_client.clone(),
15310 })
15311 .collect())
15312 }
15313 pub async fn functions(&self) -> Result<Vec<Function>, DaggerError> {
15315 let query = self.selection.select("functions");
15316 let query = query.select("id");
15317 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
15318 Ok(ids
15319 .into_iter()
15320 .map(|id| Function {
15321 proc: self.proc.clone(),
15322 selection: crate::querybuilder::query()
15323 .select("node")
15324 .arg("id", &id.0)
15325 .inline_fragment("Function"),
15326 graphql_client: self.graphql_client.clone(),
15327 })
15328 .collect())
15329 }
15330 pub async fn constructor(&self) -> Result<Option<Function>, DaggerError> {
15332 let query = self.selection.select("constructor");
15333 let query = query.select("id");
15334 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
15335 Ok(id.map(|id| Function {
15336 proc: self.proc.clone(),
15337 selection: query
15338 .root()
15339 .select("node")
15340 .arg("id", &id.0)
15341 .inline_fragment("Function"),
15342 graphql_client: self.graphql_client.clone(),
15343 }))
15344 }
15345}
15346impl Node for ObjectTypeDef {
15347 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
15348 let query = self.selection.select("id");
15349 let graphql_client = self.graphql_client.clone();
15350 async move { query.execute(graphql_client).await }
15351 }
15352}
15353#[derive(Clone)]
15354pub struct Port {
15355 pub proc: Option<Arc<DaggerSessionProc>>,
15356 pub selection: Selection,
15357 pub graphql_client: DynGraphQLClient,
15358}
15359impl IntoID<Id> for Port {
15360 fn into_id(
15361 self,
15362 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
15363 Box::pin(async move { self.id().await })
15364 }
15365}
15366impl Loadable for Port {
15367 fn graphql_type() -> &'static str {
15368 "Port"
15369 }
15370 fn from_query(
15371 proc: Option<Arc<DaggerSessionProc>>,
15372 selection: Selection,
15373 graphql_client: DynGraphQLClient,
15374 ) -> Self {
15375 Self {
15376 proc,
15377 selection,
15378 graphql_client,
15379 }
15380 }
15381}
15382impl Port {
15383 pub async fn id(&self) -> Result<Id, DaggerError> {
15385 let query = self.selection.select("id");
15386 query.execute(self.graphql_client.clone()).await
15387 }
15388 pub async fn port(&self) -> Result<isize, DaggerError> {
15390 let query = self.selection.select("port");
15391 query.execute(self.graphql_client.clone()).await
15392 }
15393 pub async fn protocol(&self) -> Result<NetworkProtocol, DaggerError> {
15395 let query = self.selection.select("protocol");
15396 query.execute(self.graphql_client.clone()).await
15397 }
15398 pub async fn description(&self) -> Result<String, DaggerError> {
15400 let query = self.selection.select("description");
15401 query.execute(self.graphql_client.clone()).await
15402 }
15403 pub async fn experimental_skip_healthcheck(&self) -> Result<bool, DaggerError> {
15405 let query = self.selection.select("experimentalSkipHealthcheck");
15406 query.execute(self.graphql_client.clone()).await
15407 }
15408}
15409impl Node for Port {
15410 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
15411 let query = self.selection.select("id");
15412 let graphql_client = self.graphql_client.clone();
15413 async move { query.execute(graphql_client).await }
15414 }
15415}
15416#[derive(Clone)]
15417pub struct Query {
15418 pub proc: Option<Arc<DaggerSessionProc>>,
15419 pub selection: Selection,
15420 pub graphql_client: DynGraphQLClient,
15421}
15422#[derive(Builder, Debug, PartialEq)]
15423pub struct QueryFileOpts {
15424 #[builder(setter(into, strip_option), default)]
15426 pub permissions: Option<isize>,
15427}
15428#[derive(Builder, Debug, PartialEq)]
15429pub struct QueryBlobOpts {
15430 #[builder(setter(into, strip_option), default)]
15432 pub permissions: Option<isize>,
15433}
15434#[derive(Builder, Debug, PartialEq)]
15435pub struct QueryGitOpts<'a> {
15436 #[builder(setter(into, strip_option), default)]
15438 pub experimental_service_host: Option<Id>,
15439 #[builder(setter(into, strip_option), default)]
15441 pub http_auth_header: Option<Id>,
15442 #[builder(setter(into, strip_option), default)]
15444 pub http_auth_token: Option<Id>,
15445 #[builder(setter(into, strip_option), default)]
15447 pub http_auth_username: Option<&'a str>,
15448 #[builder(setter(into, strip_option), default)]
15450 pub keep_git_dir: Option<bool>,
15451 #[builder(setter(into, strip_option), default)]
15453 pub ssh_auth_socket: Option<Id>,
15454 #[builder(setter(into, strip_option), default)]
15456 pub ssh_known_hosts: Option<&'a str>,
15457}
15458#[derive(Builder, Debug, PartialEq)]
15459pub struct QueryContainerOpts {
15460 #[builder(setter(into, strip_option), default)]
15462 pub platform: Option<Platform>,
15463}
15464#[derive(Builder, Debug, PartialEq)]
15465pub struct QueryCacheVolumeOpts<'a> {
15466 #[builder(setter(into, strip_option), default)]
15470 pub owner: Option<&'a str>,
15471 #[builder(setter(into, strip_option), default)]
15473 pub sharing: Option<CacheSharingMode>,
15474 #[builder(setter(into, strip_option), default)]
15476 pub source: Option<Id>,
15477}
15478#[derive(Builder, Debug, PartialEq)]
15479pub struct QueryEngineVolumeOpts<'a> {
15480 #[builder(setter(into, strip_option), default)]
15482 pub subdir: Option<&'a str>,
15483}
15484#[derive(Builder, Debug, PartialEq)]
15485pub struct QuerySshfsVolumeOpts<'a> {
15486 #[builder(setter(into, strip_option), default)]
15488 pub cache_key: Option<&'a str>,
15489 #[builder(setter(into, strip_option), default)]
15491 pub experimental_service_host: Option<Id>,
15492 #[builder(setter(into, strip_option), default)]
15494 pub insecure_skip_host_key_check: Option<bool>,
15495 #[builder(setter(into, strip_option), default)]
15497 pub known_hosts: Option<Id>,
15498}
15499#[derive(Builder, Debug, PartialEq)]
15500pub struct QuerySecretOpts<'a> {
15501 #[builder(setter(into, strip_option), default)]
15505 pub cache_key: Option<&'a str>,
15506}
15507#[derive(Builder, Debug, PartialEq)]
15508pub struct QueryHttpOpts<'a> {
15509 #[builder(setter(into, strip_option), default)]
15511 pub auth_header: Option<Id>,
15512 #[builder(setter(into, strip_option), default)]
15514 pub checksum: Option<&'a str>,
15515 #[builder(setter(into, strip_option), default)]
15517 pub experimental_service_host: Option<Id>,
15518 #[builder(setter(into, strip_option), default)]
15520 pub name: Option<&'a str>,
15521 #[builder(setter(into, strip_option), default)]
15523 pub permissions: Option<isize>,
15524}
15525#[derive(Builder, Debug, PartialEq)]
15526pub struct QueryModuleSourceOpts<'a> {
15527 #[builder(setter(into, strip_option), default)]
15529 pub allow_not_exists: Option<bool>,
15530 #[builder(setter(into, strip_option), default)]
15532 pub disable_find_up: Option<bool>,
15533 #[builder(setter(into, strip_option), default)]
15535 pub ref_pin: Option<&'a str>,
15536 #[builder(setter(into, strip_option), default)]
15538 pub require_kind: Option<ModuleSourceKind>,
15539 #[builder(setter(into, strip_option), default)]
15541 pub version: Option<&'a str>,
15542}
15543#[derive(Builder, Debug, PartialEq)]
15544pub struct QueryCurrentTypeDefsOpts {
15545 #[builder(setter(into, strip_option), default)]
15548 pub hide_core: Option<bool>,
15549 #[builder(setter(into, strip_option), default)]
15551 pub return_all_types: Option<bool>,
15552}
15553#[derive(Builder, Debug, PartialEq)]
15554pub struct QueryServeModuleOpts<'a> {
15555 #[builder(setter(into, strip_option), default)]
15557 pub ref_pin: Option<&'a str>,
15558}
15559#[derive(Builder, Debug, PartialEq)]
15560pub struct QueryLlmOpts<'a> {
15561 #[builder(setter(into, strip_option), default)]
15563 pub model: Option<&'a str>,
15564 #[builder(setter(into, strip_option), default)]
15566 pub provider: Option<&'a str>,
15567}
15568#[derive(Builder, Debug, PartialEq)]
15569pub struct QueryEnvFileOpts {
15570 #[builder(setter(into, strip_option), default)]
15572 pub expand: Option<bool>,
15573}
15574impl IntoID<Id> for Query {
15575 fn into_id(
15576 self,
15577 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
15578 Box::pin(async move { self.id().await })
15579 }
15580}
15581impl Loadable for Query {
15582 fn graphql_type() -> &'static str {
15583 "Query"
15584 }
15585 fn from_query(
15586 proc: Option<Arc<DaggerSessionProc>>,
15587 selection: Selection,
15588 graphql_client: DynGraphQLClient,
15589 ) -> Self {
15590 Self {
15591 proc,
15592 selection,
15593 graphql_client,
15594 }
15595 }
15596}
15597impl Query {
15598 pub async fn id(&self) -> Result<Id, DaggerError> {
15600 let query = self.selection.select("id");
15601 query.execute(self.graphql_client.clone()).await
15602 }
15603 pub async fn node(&self, id: impl IntoID<Id>) -> Result<Option<NodeClient>, DaggerError> {
15605 let mut query = self.selection.select("node");
15606 query = query.arg_lazy(
15607 "id",
15608 Box::new(move || {
15609 let id = id.clone();
15610 Box::pin(async move { id.into_id().await.unwrap().quote() })
15611 }),
15612 );
15613 let query = query.select("id");
15614 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
15615 Ok(id.map(|id| NodeClient {
15616 proc: self.proc.clone(),
15617 selection: query
15618 .root()
15619 .select("node")
15620 .arg("id", &id.0)
15621 .inline_fragment("Node"),
15622 graphql_client: self.graphql_client.clone(),
15623 }))
15624 }
15625 pub async fn version(&self) -> Result<String, DaggerError> {
15627 let query = self.selection.select("version");
15628 query.execute(self.graphql_client.clone()).await
15629 }
15630 pub async fn current_timestamp(&self) -> Result<String, DaggerError> {
15632 let query = self.selection.select("currentTimestamp");
15633 query.execute(self.graphql_client.clone()).await
15634 }
15635 pub async fn set_session_title(&self, title: impl Into<String>) -> Result<Void, DaggerError> {
15642 let mut query = self.selection.select("setSessionTitle");
15643 query = query.arg("title", title.into());
15644 query.execute(self.graphql_client.clone()).await
15645 }
15646 pub fn directory(&self) -> Directory {
15648 let query = self.selection.select("directory");
15649 Directory {
15650 proc: self.proc.clone(),
15651 selection: query,
15652 graphql_client: self.graphql_client.clone(),
15653 }
15654 }
15655 pub fn changeset(&self) -> Changeset {
15657 let query = self.selection.select("changeset");
15658 Changeset {
15659 proc: self.proc.clone(),
15660 selection: query,
15661 graphql_client: self.graphql_client.clone(),
15662 }
15663 }
15664 pub fn file(&self, name: impl Into<String>, contents: impl Into<String>) -> File {
15672 let mut query = self.selection.select("file");
15673 query = query.arg("name", name.into());
15674 query = query.arg("contents", contents.into());
15675 File {
15676 proc: self.proc.clone(),
15677 selection: query,
15678 graphql_client: self.graphql_client.clone(),
15679 }
15680 }
15681 pub fn file_opts(
15689 &self,
15690 name: impl Into<String>,
15691 contents: impl Into<String>,
15692 opts: QueryFileOpts,
15693 ) -> File {
15694 let mut query = self.selection.select("file");
15695 query = query.arg("name", name.into());
15696 query = query.arg("contents", contents.into());
15697 if let Some(permissions) = opts.permissions {
15698 query = query.arg("permissions", permissions);
15699 }
15700 File {
15701 proc: self.proc.clone(),
15702 selection: query,
15703 graphql_client: self.graphql_client.clone(),
15704 }
15705 }
15706 pub fn blob(&self, name: impl Into<String>, contents: Bytes) -> File {
15714 let mut query = self.selection.select("blob");
15715 query = query.arg("name", name.into());
15716 query = query.arg("contents", contents);
15717 File {
15718 proc: self.proc.clone(),
15719 selection: query,
15720 graphql_client: self.graphql_client.clone(),
15721 }
15722 }
15723 pub fn blob_opts(&self, name: impl Into<String>, contents: Bytes, opts: QueryBlobOpts) -> File {
15731 let mut query = self.selection.select("blob");
15732 query = query.arg("name", name.into());
15733 query = query.arg("contents", contents);
15734 if let Some(permissions) = opts.permissions {
15735 query = query.arg("permissions", permissions);
15736 }
15737 File {
15738 proc: self.proc.clone(),
15739 selection: query,
15740 graphql_client: self.graphql_client.clone(),
15741 }
15742 }
15743 pub fn git(&self, url: impl Into<String>) -> GitRepository {
15754 let mut query = self.selection.select("git");
15755 query = query.arg("url", url.into());
15756 GitRepository {
15757 proc: self.proc.clone(),
15758 selection: query,
15759 graphql_client: self.graphql_client.clone(),
15760 }
15761 }
15762 pub fn git_opts<'a>(&self, url: impl Into<String>, opts: QueryGitOpts<'a>) -> GitRepository {
15773 let mut query = self.selection.select("git");
15774 query = query.arg("url", url.into());
15775 if let Some(keep_git_dir) = opts.keep_git_dir {
15776 query = query.arg("keepGitDir", keep_git_dir);
15777 }
15778 if let Some(ssh_known_hosts) = opts.ssh_known_hosts {
15779 query = query.arg("sshKnownHosts", ssh_known_hosts);
15780 }
15781 if let Some(ssh_auth_socket) = opts.ssh_auth_socket {
15782 query = query.arg("sshAuthSocket", ssh_auth_socket);
15783 }
15784 if let Some(http_auth_username) = opts.http_auth_username {
15785 query = query.arg("httpAuthUsername", http_auth_username);
15786 }
15787 if let Some(http_auth_token) = opts.http_auth_token {
15788 query = query.arg("httpAuthToken", http_auth_token);
15789 }
15790 if let Some(http_auth_header) = opts.http_auth_header {
15791 query = query.arg("httpAuthHeader", http_auth_header);
15792 }
15793 if let Some(experimental_service_host) = opts.experimental_service_host {
15794 query = query.arg("experimentalServiceHost", experimental_service_host);
15795 }
15796 GitRepository {
15797 proc: self.proc.clone(),
15798 selection: query,
15799 graphql_client: self.graphql_client.clone(),
15800 }
15801 }
15802 pub fn container(&self) -> Container {
15809 let query = self.selection.select("container");
15810 Container {
15811 proc: self.proc.clone(),
15812 selection: query,
15813 graphql_client: self.graphql_client.clone(),
15814 }
15815 }
15816 pub fn container_opts(&self, opts: QueryContainerOpts) -> Container {
15823 let mut query = self.selection.select("container");
15824 if let Some(platform) = opts.platform {
15825 query = query.arg("platform", platform);
15826 }
15827 Container {
15828 proc: self.proc.clone(),
15829 selection: query,
15830 graphql_client: self.graphql_client.clone(),
15831 }
15832 }
15833 pub fn cache_volume(&self, key: impl Into<String>) -> CacheVolume {
15840 let mut query = self.selection.select("cacheVolume");
15841 query = query.arg("key", key.into());
15842 CacheVolume {
15843 proc: self.proc.clone(),
15844 selection: query,
15845 graphql_client: self.graphql_client.clone(),
15846 }
15847 }
15848 pub fn cache_volume_opts<'a>(
15855 &self,
15856 key: impl Into<String>,
15857 opts: QueryCacheVolumeOpts<'a>,
15858 ) -> CacheVolume {
15859 let mut query = self.selection.select("cacheVolume");
15860 query = query.arg("key", key.into());
15861 if let Some(source) = opts.source {
15862 query = query.arg("source", source);
15863 }
15864 if let Some(sharing) = opts.sharing {
15865 query = query.arg("sharing", sharing);
15866 }
15867 if let Some(owner) = opts.owner {
15868 query = query.arg("owner", owner);
15869 }
15870 CacheVolume {
15871 proc: self.proc.clone(),
15872 selection: query,
15873 graphql_client: self.graphql_client.clone(),
15874 }
15875 }
15876 pub fn engine_volume(&self, name: impl Into<String>) -> Volume {
15883 let mut query = self.selection.select("engineVolume");
15884 query = query.arg("name", name.into());
15885 Volume {
15886 proc: self.proc.clone(),
15887 selection: query,
15888 graphql_client: self.graphql_client.clone(),
15889 }
15890 }
15891 pub fn engine_volume_opts<'a>(
15898 &self,
15899 name: impl Into<String>,
15900 opts: QueryEngineVolumeOpts<'a>,
15901 ) -> Volume {
15902 let mut query = self.selection.select("engineVolume");
15903 query = query.arg("name", name.into());
15904 if let Some(subdir) = opts.subdir {
15905 query = query.arg("subdir", subdir);
15906 }
15907 Volume {
15908 proc: self.proc.clone(),
15909 selection: query,
15910 graphql_client: self.graphql_client.clone(),
15911 }
15912 }
15913 pub fn sshfs_volume(
15921 &self,
15922 endpoint: impl Into<String>,
15923 private_key: impl IntoID<Id>,
15924 ) -> Volume {
15925 let mut query = self.selection.select("sshfsVolume");
15926 query = query.arg("endpoint", endpoint.into());
15927 query = query.arg_lazy(
15928 "privateKey",
15929 Box::new(move || {
15930 let private_key = private_key.clone();
15931 Box::pin(async move { private_key.into_id().await.unwrap().quote() })
15932 }),
15933 );
15934 Volume {
15935 proc: self.proc.clone(),
15936 selection: query,
15937 graphql_client: self.graphql_client.clone(),
15938 }
15939 }
15940 pub fn sshfs_volume_opts<'a>(
15948 &self,
15949 endpoint: impl Into<String>,
15950 private_key: impl IntoID<Id>,
15951 opts: QuerySshfsVolumeOpts<'a>,
15952 ) -> Volume {
15953 let mut query = self.selection.select("sshfsVolume");
15954 query = query.arg("endpoint", endpoint.into());
15955 query = query.arg_lazy(
15956 "privateKey",
15957 Box::new(move || {
15958 let private_key = private_key.clone();
15959 Box::pin(async move { private_key.into_id().await.unwrap().quote() })
15960 }),
15961 );
15962 if let Some(known_hosts) = opts.known_hosts {
15963 query = query.arg("knownHosts", known_hosts);
15964 }
15965 if let Some(cache_key) = opts.cache_key {
15966 query = query.arg("cacheKey", cache_key);
15967 }
15968 if let Some(insecure_skip_host_key_check) = opts.insecure_skip_host_key_check {
15969 query = query.arg("insecureSkipHostKeyCheck", insecure_skip_host_key_check);
15970 }
15971 if let Some(experimental_service_host) = opts.experimental_service_host {
15972 query = query.arg("experimentalServiceHost", experimental_service_host);
15973 }
15974 Volume {
15975 proc: self.proc.clone(),
15976 selection: query,
15977 graphql_client: self.graphql_client.clone(),
15978 }
15979 }
15980 pub fn secret(&self, uri: impl Into<String>) -> Secret {
15987 let mut query = self.selection.select("secret");
15988 query = query.arg("uri", uri.into());
15989 Secret {
15990 proc: self.proc.clone(),
15991 selection: query,
15992 graphql_client: self.graphql_client.clone(),
15993 }
15994 }
15995 pub fn secret_opts<'a>(&self, uri: impl Into<String>, opts: QuerySecretOpts<'a>) -> Secret {
16002 let mut query = self.selection.select("secret");
16003 query = query.arg("uri", uri.into());
16004 if let Some(cache_key) = opts.cache_key {
16005 query = query.arg("cacheKey", cache_key);
16006 }
16007 Secret {
16008 proc: self.proc.clone(),
16009 selection: query,
16010 graphql_client: self.graphql_client.clone(),
16011 }
16012 }
16013 pub fn set_secret(&self, name: impl Into<String>, plaintext: impl Into<String>) -> Secret {
16021 let mut query = self.selection.select("setSecret");
16022 query = query.arg("name", name.into());
16023 query = query.arg("plaintext", plaintext.into());
16024 Secret {
16025 proc: self.proc.clone(),
16026 selection: query,
16027 graphql_client: self.graphql_client.clone(),
16028 }
16029 }
16030 pub fn host(&self) -> Host {
16032 let query = self.selection.select("host");
16033 Host {
16034 proc: self.proc.clone(),
16035 selection: query,
16036 graphql_client: self.graphql_client.clone(),
16037 }
16038 }
16039 pub fn http(&self, url: impl Into<String>) -> File {
16046 let mut query = self.selection.select("http");
16047 query = query.arg("url", url.into());
16048 File {
16049 proc: self.proc.clone(),
16050 selection: query,
16051 graphql_client: self.graphql_client.clone(),
16052 }
16053 }
16054 pub fn http_opts<'a>(&self, url: impl Into<String>, opts: QueryHttpOpts<'a>) -> File {
16061 let mut query = self.selection.select("http");
16062 query = query.arg("url", url.into());
16063 if let Some(name) = opts.name {
16064 query = query.arg("name", name);
16065 }
16066 if let Some(permissions) = opts.permissions {
16067 query = query.arg("permissions", permissions);
16068 }
16069 if let Some(checksum) = opts.checksum {
16070 query = query.arg("checksum", checksum);
16071 }
16072 if let Some(auth_header) = opts.auth_header {
16073 query = query.arg("authHeader", auth_header);
16074 }
16075 if let Some(experimental_service_host) = opts.experimental_service_host {
16076 query = query.arg("experimentalServiceHost", experimental_service_host);
16077 }
16078 File {
16079 proc: self.proc.clone(),
16080 selection: query,
16081 graphql_client: self.graphql_client.clone(),
16082 }
16083 }
16084 pub async fn default_platform(&self) -> Result<Platform, DaggerError> {
16086 let query = self.selection.select("defaultPlatform");
16087 query.execute(self.graphql_client.clone()).await
16088 }
16089 pub fn module_source(&self, ref_string: impl Into<String>) -> ModuleSource {
16096 let mut query = self.selection.select("moduleSource");
16097 query = query.arg("refString", ref_string.into());
16098 ModuleSource {
16099 proc: self.proc.clone(),
16100 selection: query,
16101 graphql_client: self.graphql_client.clone(),
16102 }
16103 }
16104 pub fn module_source_opts<'a>(
16111 &self,
16112 ref_string: impl Into<String>,
16113 opts: QueryModuleSourceOpts<'a>,
16114 ) -> ModuleSource {
16115 let mut query = self.selection.select("moduleSource");
16116 query = query.arg("refString", ref_string.into());
16117 if let Some(version) = opts.version {
16118 query = query.arg("version", version);
16119 }
16120 if let Some(ref_pin) = opts.ref_pin {
16121 query = query.arg("refPin", ref_pin);
16122 }
16123 if let Some(disable_find_up) = opts.disable_find_up {
16124 query = query.arg("disableFindUp", disable_find_up);
16125 }
16126 if let Some(allow_not_exists) = opts.allow_not_exists {
16127 query = query.arg("allowNotExists", allow_not_exists);
16128 }
16129 if let Some(require_kind) = opts.require_kind {
16130 query = query.arg("requireKind", require_kind);
16131 }
16132 ModuleSource {
16133 proc: self.proc.clone(),
16134 selection: query,
16135 graphql_client: self.graphql_client.clone(),
16136 }
16137 }
16138 pub fn module(&self) -> Module {
16140 let query = self.selection.select("module");
16141 Module {
16142 proc: self.proc.clone(),
16143 selection: query,
16144 graphql_client: self.graphql_client.clone(),
16145 }
16146 }
16147 pub fn type_def(&self) -> TypeDef {
16149 let query = self.selection.select("typeDef");
16150 TypeDef {
16151 proc: self.proc.clone(),
16152 selection: query,
16153 graphql_client: self.graphql_client.clone(),
16154 }
16155 }
16156 pub fn generated_code(&self, code: impl IntoID<Id>) -> GeneratedCode {
16158 let mut query = self.selection.select("generatedCode");
16159 query = query.arg_lazy(
16160 "code",
16161 Box::new(move || {
16162 let code = code.clone();
16163 Box::pin(async move { code.into_id().await.unwrap().quote() })
16164 }),
16165 );
16166 GeneratedCode {
16167 proc: self.proc.clone(),
16168 selection: query,
16169 graphql_client: self.graphql_client.clone(),
16170 }
16171 }
16172 pub fn function(&self, name: impl Into<String>, return_type: impl IntoID<Id>) -> Function {
16179 let mut query = self.selection.select("function");
16180 query = query.arg("name", name.into());
16181 query = query.arg_lazy(
16182 "returnType",
16183 Box::new(move || {
16184 let return_type = return_type.clone();
16185 Box::pin(async move { return_type.into_id().await.unwrap().quote() })
16186 }),
16187 );
16188 Function {
16189 proc: self.proc.clone(),
16190 selection: query,
16191 graphql_client: self.graphql_client.clone(),
16192 }
16193 }
16194 pub fn source_map(&self, filename: impl Into<String>, line: isize, column: isize) -> SourceMap {
16202 let mut query = self.selection.select("sourceMap");
16203 query = query.arg("filename", filename.into());
16204 query = query.arg("line", line);
16205 query = query.arg("column", column);
16206 SourceMap {
16207 proc: self.proc.clone(),
16208 selection: query,
16209 graphql_client: self.graphql_client.clone(),
16210 }
16211 }
16212 pub fn current_module(&self) -> CurrentModule {
16214 let query = self.selection.select("currentModule");
16215 CurrentModule {
16216 proc: self.proc.clone(),
16217 selection: query,
16218 graphql_client: self.graphql_client.clone(),
16219 }
16220 }
16221 pub async fn current_type_defs(&self) -> Result<Vec<TypeDef>, DaggerError> {
16227 let query = self.selection.select("currentTypeDefs");
16228 let query = query.select("id");
16229 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
16230 Ok(ids
16231 .into_iter()
16232 .map(|id| TypeDef {
16233 proc: self.proc.clone(),
16234 selection: crate::querybuilder::query()
16235 .select("node")
16236 .arg("id", &id.0)
16237 .inline_fragment("TypeDef"),
16238 graphql_client: self.graphql_client.clone(),
16239 })
16240 .collect())
16241 }
16242 pub async fn current_type_defs_opts(
16248 &self,
16249 opts: QueryCurrentTypeDefsOpts,
16250 ) -> Result<Vec<TypeDef>, DaggerError> {
16251 let mut query = self.selection.select("currentTypeDefs");
16252 if let Some(return_all_types) = opts.return_all_types {
16253 query = query.arg("returnAllTypes", return_all_types);
16254 }
16255 if let Some(hide_core) = opts.hide_core {
16256 query = query.arg("hideCore", hide_core);
16257 }
16258 let query = query.select("id");
16259 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
16260 Ok(ids
16261 .into_iter()
16262 .map(|id| TypeDef {
16263 proc: self.proc.clone(),
16264 selection: crate::querybuilder::query()
16265 .select("node")
16266 .arg("id", &id.0)
16267 .inline_fragment("TypeDef"),
16268 graphql_client: self.graphql_client.clone(),
16269 })
16270 .collect())
16271 }
16272 pub fn current_function_call(&self) -> FunctionCall {
16275 let query = self.selection.select("currentFunctionCall");
16276 FunctionCall {
16277 proc: self.proc.clone(),
16278 selection: query,
16279 graphql_client: self.graphql_client.clone(),
16280 }
16281 }
16282 pub async fn serve_module(&self, address: impl Into<String>) -> Result<Void, DaggerError> {
16294 let mut query = self.selection.select("serveModule");
16295 query = query.arg("address", address.into());
16296 query.execute(self.graphql_client.clone()).await
16297 }
16298 pub async fn serve_module_opts<'a>(
16310 &self,
16311 address: impl Into<String>,
16312 opts: QueryServeModuleOpts<'a>,
16313 ) -> Result<Void, DaggerError> {
16314 let mut query = self.selection.select("serveModule");
16315 query = query.arg("address", address.into());
16316 if let Some(ref_pin) = opts.ref_pin {
16317 query = query.arg("refPin", ref_pin);
16318 }
16319 query.execute(self.graphql_client.clone()).await
16320 }
16321 pub fn current_node(&self) -> NodeClient {
16323 let query = self.selection.select("currentNode");
16324 NodeClient {
16325 proc: self.proc.clone(),
16326 selection: query,
16327 graphql_client: self.graphql_client.clone(),
16328 }
16329 }
16330 pub fn error(&self, message: impl Into<String>) -> Error {
16336 let mut query = self.selection.select("error");
16337 query = query.arg("message", message.into());
16338 Error {
16339 proc: self.proc.clone(),
16340 selection: query,
16341 graphql_client: self.graphql_client.clone(),
16342 }
16343 }
16344 pub fn engine(&self) -> Engine {
16346 let query = self.selection.select("engine");
16347 Engine {
16348 proc: self.proc.clone(),
16349 selection: query,
16350 graphql_client: self.graphql_client.clone(),
16351 }
16352 }
16353 pub fn cloud(&self) -> Cloud {
16355 let query = self.selection.select("cloud");
16356 Cloud {
16357 proc: self.proc.clone(),
16358 selection: query,
16359 graphql_client: self.graphql_client.clone(),
16360 }
16361 }
16362 pub fn llm(&self) -> Llm {
16368 let query = self.selection.select("llm");
16369 Llm {
16370 proc: self.proc.clone(),
16371 selection: query,
16372 graphql_client: self.graphql_client.clone(),
16373 }
16374 }
16375 pub fn llm_opts<'a>(&self, opts: QueryLlmOpts<'a>) -> Llm {
16381 let mut query = self.selection.select("llm");
16382 if let Some(model) = opts.model {
16383 query = query.arg("model", model);
16384 }
16385 if let Some(provider) = opts.provider {
16386 query = query.arg("provider", provider);
16387 }
16388 Llm {
16389 proc: self.proc.clone(),
16390 selection: query,
16391 graphql_client: self.graphql_client.clone(),
16392 }
16393 }
16394 pub fn llm_content(&self) -> LlmContent {
16397 let query = self.selection.select("llmContent");
16398 LlmContent {
16399 proc: self.proc.clone(),
16400 selection: query,
16401 graphql_client: self.graphql_client.clone(),
16402 }
16403 }
16404 pub fn json(&self) -> JsonValue {
16406 let query = self.selection.select("json");
16407 JsonValue {
16408 proc: self.proc.clone(),
16409 selection: query,
16410 graphql_client: self.graphql_client.clone(),
16411 }
16412 }
16413 pub fn schema(&self, json: Json) -> Schema {
16419 let mut query = self.selection.select("schema");
16420 query = query.arg("json", json);
16421 Schema {
16422 proc: self.proc.clone(),
16423 selection: query,
16424 graphql_client: self.graphql_client.clone(),
16425 }
16426 }
16427 pub fn env_file(&self) -> EnvFile {
16433 let query = self.selection.select("envFile");
16434 EnvFile {
16435 proc: self.proc.clone(),
16436 selection: query,
16437 graphql_client: self.graphql_client.clone(),
16438 }
16439 }
16440 pub fn env_file_opts(&self, opts: QueryEnvFileOpts) -> EnvFile {
16446 let mut query = self.selection.select("envFile");
16447 if let Some(expand) = opts.expand {
16448 query = query.arg("expand", expand);
16449 }
16450 EnvFile {
16451 proc: self.proc.clone(),
16452 selection: query,
16453 graphql_client: self.graphql_client.clone(),
16454 }
16455 }
16456 pub fn address(&self, value: impl Into<String>) -> Address {
16458 let mut query = self.selection.select("address");
16459 query = query.arg("value", value.into());
16460 Address {
16461 proc: self.proc.clone(),
16462 selection: query,
16463 graphql_client: self.graphql_client.clone(),
16464 }
16465 }
16466 pub fn current_workspace(&self) -> Workspace {
16468 let query = self.selection.select("currentWorkspace");
16469 Workspace {
16470 proc: self.proc.clone(),
16471 selection: query,
16472 graphql_client: self.graphql_client.clone(),
16473 }
16474 }
16475}
16476impl Node for Query {
16477 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
16478 let query = self.selection.select("id");
16479 let graphql_client = self.graphql_client.clone();
16480 async move { query.execute(graphql_client).await }
16481 }
16482}
16483#[derive(Clone)]
16484pub struct RemoteGitMirror {
16485 pub proc: Option<Arc<DaggerSessionProc>>,
16486 pub selection: Selection,
16487 pub graphql_client: DynGraphQLClient,
16488}
16489impl IntoID<Id> for RemoteGitMirror {
16490 fn into_id(
16491 self,
16492 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
16493 Box::pin(async move { self.id().await })
16494 }
16495}
16496impl Loadable for RemoteGitMirror {
16497 fn graphql_type() -> &'static str {
16498 "RemoteGitMirror"
16499 }
16500 fn from_query(
16501 proc: Option<Arc<DaggerSessionProc>>,
16502 selection: Selection,
16503 graphql_client: DynGraphQLClient,
16504 ) -> Self {
16505 Self {
16506 proc,
16507 selection,
16508 graphql_client,
16509 }
16510 }
16511}
16512impl RemoteGitMirror {
16513 pub async fn id(&self) -> Result<Id, DaggerError> {
16515 let query = self.selection.select("id");
16516 query.execute(self.graphql_client.clone()).await
16517 }
16518}
16519impl Node for RemoteGitMirror {
16520 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
16521 let query = self.selection.select("id");
16522 let graphql_client = self.graphql_client.clone();
16523 async move { query.execute(graphql_client).await }
16524 }
16525}
16526#[derive(Clone)]
16527pub struct SdkConfig {
16528 pub proc: Option<Arc<DaggerSessionProc>>,
16529 pub selection: Selection,
16530 pub graphql_client: DynGraphQLClient,
16531}
16532impl IntoID<Id> for SdkConfig {
16533 fn into_id(
16534 self,
16535 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
16536 Box::pin(async move { self.id().await })
16537 }
16538}
16539impl Loadable for SdkConfig {
16540 fn graphql_type() -> &'static str {
16541 "SDKConfig"
16542 }
16543 fn from_query(
16544 proc: Option<Arc<DaggerSessionProc>>,
16545 selection: Selection,
16546 graphql_client: DynGraphQLClient,
16547 ) -> Self {
16548 Self {
16549 proc,
16550 selection,
16551 graphql_client,
16552 }
16553 }
16554}
16555impl SdkConfig {
16556 pub async fn id(&self) -> Result<Id, DaggerError> {
16558 let query = self.selection.select("id");
16559 query.execute(self.graphql_client.clone()).await
16560 }
16561 pub async fn source(&self) -> Result<String, DaggerError> {
16563 let query = self.selection.select("source");
16564 query.execute(self.graphql_client.clone()).await
16565 }
16566 pub async fn debug(&self) -> Result<bool, DaggerError> {
16568 let query = self.selection.select("debug");
16569 query.execute(self.graphql_client.clone()).await
16570 }
16571}
16572impl Node for SdkConfig {
16573 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
16574 let query = self.selection.select("id");
16575 let graphql_client = self.graphql_client.clone();
16576 async move { query.execute(graphql_client).await }
16577 }
16578}
16579#[derive(Clone)]
16580pub struct ScalarTypeDef {
16581 pub proc: Option<Arc<DaggerSessionProc>>,
16582 pub selection: Selection,
16583 pub graphql_client: DynGraphQLClient,
16584}
16585impl IntoID<Id> for ScalarTypeDef {
16586 fn into_id(
16587 self,
16588 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
16589 Box::pin(async move { self.id().await })
16590 }
16591}
16592impl Loadable for ScalarTypeDef {
16593 fn graphql_type() -> &'static str {
16594 "ScalarTypeDef"
16595 }
16596 fn from_query(
16597 proc: Option<Arc<DaggerSessionProc>>,
16598 selection: Selection,
16599 graphql_client: DynGraphQLClient,
16600 ) -> Self {
16601 Self {
16602 proc,
16603 selection,
16604 graphql_client,
16605 }
16606 }
16607}
16608impl ScalarTypeDef {
16609 pub async fn id(&self) -> Result<Id, DaggerError> {
16611 let query = self.selection.select("id");
16612 query.execute(self.graphql_client.clone()).await
16613 }
16614 pub async fn name(&self) -> Result<String, DaggerError> {
16616 let query = self.selection.select("name");
16617 query.execute(self.graphql_client.clone()).await
16618 }
16619 pub async fn description(&self) -> Result<String, DaggerError> {
16621 let query = self.selection.select("description");
16622 query.execute(self.graphql_client.clone()).await
16623 }
16624 pub async fn source_module_name(&self) -> Result<String, DaggerError> {
16626 let query = self.selection.select("sourceModuleName");
16627 query.execute(self.graphql_client.clone()).await
16628 }
16629}
16630impl Node for ScalarTypeDef {
16631 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
16632 let query = self.selection.select("id");
16633 let graphql_client = self.graphql_client.clone();
16634 async move { query.execute(graphql_client).await }
16635 }
16636}
16637#[derive(Clone)]
16638pub struct Schema {
16639 pub proc: Option<Arc<DaggerSessionProc>>,
16640 pub selection: Selection,
16641 pub graphql_client: DynGraphQLClient,
16642}
16643impl IntoID<Id> for Schema {
16644 fn into_id(
16645 self,
16646 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
16647 Box::pin(async move { self.id().await })
16648 }
16649}
16650impl Loadable for Schema {
16651 fn graphql_type() -> &'static str {
16652 "Schema"
16653 }
16654 fn from_query(
16655 proc: Option<Arc<DaggerSessionProc>>,
16656 selection: Selection,
16657 graphql_client: DynGraphQLClient,
16658 ) -> Self {
16659 Self {
16660 proc,
16661 selection,
16662 graphql_client,
16663 }
16664 }
16665}
16666impl Schema {
16667 pub async fn id(&self) -> Result<Id, DaggerError> {
16669 let query = self.selection.select("id");
16670 query.execute(self.graphql_client.clone()).await
16671 }
16672 pub async fn contents(&self) -> Result<Json, DaggerError> {
16674 let query = self.selection.select("contents");
16675 query.execute(self.graphql_client.clone()).await
16676 }
16677 pub fn merge(&self, module_types: Json, module_name: impl Into<String>) -> Schema {
16684 let mut query = self.selection.select("merge");
16685 query = query.arg("moduleTypes", module_types);
16686 query = query.arg("moduleName", module_name.into());
16687 Schema {
16688 proc: self.proc.clone(),
16689 selection: query,
16690 graphql_client: self.graphql_client.clone(),
16691 }
16692 }
16693}
16694impl Node for Schema {
16695 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
16696 let query = self.selection.select("id");
16697 let graphql_client = self.graphql_client.clone();
16698 async move { query.execute(graphql_client).await }
16699 }
16700}
16701#[derive(Clone)]
16702pub struct SearchResult {
16703 pub proc: Option<Arc<DaggerSessionProc>>,
16704 pub selection: Selection,
16705 pub graphql_client: DynGraphQLClient,
16706}
16707impl IntoID<Id> for SearchResult {
16708 fn into_id(
16709 self,
16710 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
16711 Box::pin(async move { self.id().await })
16712 }
16713}
16714impl Loadable for SearchResult {
16715 fn graphql_type() -> &'static str {
16716 "SearchResult"
16717 }
16718 fn from_query(
16719 proc: Option<Arc<DaggerSessionProc>>,
16720 selection: Selection,
16721 graphql_client: DynGraphQLClient,
16722 ) -> Self {
16723 Self {
16724 proc,
16725 selection,
16726 graphql_client,
16727 }
16728 }
16729}
16730impl SearchResult {
16731 pub async fn id(&self) -> Result<Id, DaggerError> {
16733 let query = self.selection.select("id");
16734 query.execute(self.graphql_client.clone()).await
16735 }
16736 pub async fn file_path(&self) -> Result<String, DaggerError> {
16738 let query = self.selection.select("filePath");
16739 query.execute(self.graphql_client.clone()).await
16740 }
16741 pub async fn line_number(&self) -> Result<isize, DaggerError> {
16743 let query = self.selection.select("lineNumber");
16744 query.execute(self.graphql_client.clone()).await
16745 }
16746 pub async fn absolute_offset(&self) -> Result<isize, DaggerError> {
16748 let query = self.selection.select("absoluteOffset");
16749 query.execute(self.graphql_client.clone()).await
16750 }
16751 pub async fn matched_lines(&self) -> Result<String, DaggerError> {
16753 let query = self.selection.select("matchedLines");
16754 query.execute(self.graphql_client.clone()).await
16755 }
16756 pub async fn submatches(&self) -> Result<Vec<SearchSubmatch>, DaggerError> {
16758 let query = self.selection.select("submatches");
16759 let query = query.select("id");
16760 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
16761 Ok(ids
16762 .into_iter()
16763 .map(|id| SearchSubmatch {
16764 proc: self.proc.clone(),
16765 selection: crate::querybuilder::query()
16766 .select("node")
16767 .arg("id", &id.0)
16768 .inline_fragment("SearchSubmatch"),
16769 graphql_client: self.graphql_client.clone(),
16770 })
16771 .collect())
16772 }
16773}
16774impl Node for SearchResult {
16775 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
16776 let query = self.selection.select("id");
16777 let graphql_client = self.graphql_client.clone();
16778 async move { query.execute(graphql_client).await }
16779 }
16780}
16781#[derive(Clone)]
16782pub struct SearchSubmatch {
16783 pub proc: Option<Arc<DaggerSessionProc>>,
16784 pub selection: Selection,
16785 pub graphql_client: DynGraphQLClient,
16786}
16787impl IntoID<Id> for SearchSubmatch {
16788 fn into_id(
16789 self,
16790 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
16791 Box::pin(async move { self.id().await })
16792 }
16793}
16794impl Loadable for SearchSubmatch {
16795 fn graphql_type() -> &'static str {
16796 "SearchSubmatch"
16797 }
16798 fn from_query(
16799 proc: Option<Arc<DaggerSessionProc>>,
16800 selection: Selection,
16801 graphql_client: DynGraphQLClient,
16802 ) -> Self {
16803 Self {
16804 proc,
16805 selection,
16806 graphql_client,
16807 }
16808 }
16809}
16810impl SearchSubmatch {
16811 pub async fn id(&self) -> Result<Id, DaggerError> {
16813 let query = self.selection.select("id");
16814 query.execute(self.graphql_client.clone()).await
16815 }
16816 pub async fn text(&self) -> Result<String, DaggerError> {
16818 let query = self.selection.select("text");
16819 query.execute(self.graphql_client.clone()).await
16820 }
16821 pub async fn start(&self) -> Result<isize, DaggerError> {
16823 let query = self.selection.select("start");
16824 query.execute(self.graphql_client.clone()).await
16825 }
16826 pub async fn end(&self) -> Result<isize, DaggerError> {
16828 let query = self.selection.select("end");
16829 query.execute(self.graphql_client.clone()).await
16830 }
16831}
16832impl Node for SearchSubmatch {
16833 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
16834 let query = self.selection.select("id");
16835 let graphql_client = self.graphql_client.clone();
16836 async move { query.execute(graphql_client).await }
16837 }
16838}
16839#[derive(Clone)]
16840pub struct Secret {
16841 pub proc: Option<Arc<DaggerSessionProc>>,
16842 pub selection: Selection,
16843 pub graphql_client: DynGraphQLClient,
16844}
16845impl IntoID<Id> for Secret {
16846 fn into_id(
16847 self,
16848 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
16849 Box::pin(async move { self.id().await })
16850 }
16851}
16852impl Loadable for Secret {
16853 fn graphql_type() -> &'static str {
16854 "Secret"
16855 }
16856 fn from_query(
16857 proc: Option<Arc<DaggerSessionProc>>,
16858 selection: Selection,
16859 graphql_client: DynGraphQLClient,
16860 ) -> Self {
16861 Self {
16862 proc,
16863 selection,
16864 graphql_client,
16865 }
16866 }
16867}
16868impl Secret {
16869 pub async fn id(&self) -> Result<Id, DaggerError> {
16871 let query = self.selection.select("id");
16872 query.execute(self.graphql_client.clone()).await
16873 }
16874 pub async fn name(&self) -> Result<String, DaggerError> {
16876 let query = self.selection.select("name");
16877 query.execute(self.graphql_client.clone()).await
16878 }
16879 pub async fn uri(&self) -> Result<String, DaggerError> {
16881 let query = self.selection.select("uri");
16882 query.execute(self.graphql_client.clone()).await
16883 }
16884 pub async fn plaintext(&self) -> Result<String, DaggerError> {
16886 let query = self.selection.select("plaintext");
16887 query.execute(self.graphql_client.clone()).await
16888 }
16889}
16890impl Node for Secret {
16891 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
16892 let query = self.selection.select("id");
16893 let graphql_client = self.graphql_client.clone();
16894 async move { query.execute(graphql_client).await }
16895 }
16896}
16897#[derive(Clone)]
16898pub struct Service {
16899 pub proc: Option<Arc<DaggerSessionProc>>,
16900 pub selection: Selection,
16901 pub graphql_client: DynGraphQLClient,
16902}
16903#[derive(Builder, Debug, PartialEq)]
16904pub struct ServicePortsOpts {
16905 #[builder(setter(into, strip_option), default)]
16907 pub declared: Option<bool>,
16908}
16909#[derive(Builder, Debug, PartialEq)]
16910pub struct ServiceEndpointOpts<'a> {
16911 #[builder(setter(into, strip_option), default)]
16913 pub port: Option<isize>,
16914 #[builder(setter(into, strip_option), default)]
16916 pub scheme: Option<&'a str>,
16917}
16918#[derive(Builder, Debug, PartialEq)]
16919pub struct ServiceUpOpts {
16920 #[builder(setter(into, strip_option), default)]
16923 pub ports: Option<Vec<PortForward>>,
16924 #[builder(setter(into, strip_option), default)]
16926 pub random: Option<bool>,
16927}
16928#[derive(Builder, Debug, PartialEq)]
16929pub struct ServiceStopOpts {
16930 #[builder(setter(into, strip_option), default)]
16932 pub kill: Option<bool>,
16933}
16934#[derive(Builder, Debug, PartialEq)]
16935pub struct ServiceTerminalOpts<'a> {
16936 #[builder(setter(into, strip_option), default)]
16937 pub cmd: Option<Vec<&'a str>>,
16938}
16939impl IntoID<Id> for Service {
16940 fn into_id(
16941 self,
16942 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
16943 Box::pin(async move { self.id().await })
16944 }
16945}
16946impl Loadable for Service {
16947 fn graphql_type() -> &'static str {
16948 "Service"
16949 }
16950 fn from_query(
16951 proc: Option<Arc<DaggerSessionProc>>,
16952 selection: Selection,
16953 graphql_client: DynGraphQLClient,
16954 ) -> Self {
16955 Self {
16956 proc,
16957 selection,
16958 graphql_client,
16959 }
16960 }
16961}
16962impl Service {
16963 pub async fn id(&self) -> Result<Id, DaggerError> {
16965 let query = self.selection.select("id");
16966 query.execute(self.graphql_client.clone()).await
16967 }
16968 pub async fn sync(&self) -> Result<Service, DaggerError> {
16970 let query = self.selection.select("sync");
16971 let id: Id = query.execute(self.graphql_client.clone()).await?;
16972 Ok(Service {
16973 proc: self.proc.clone(),
16974 selection: query
16975 .root()
16976 .select("node")
16977 .arg("id", &id.0)
16978 .inline_fragment("Service"),
16979 graphql_client: self.graphql_client.clone(),
16980 })
16981 }
16982 pub async fn hostname(&self) -> Result<String, DaggerError> {
16984 let query = self.selection.select("hostname");
16985 query.execute(self.graphql_client.clone()).await
16986 }
16987 pub fn with_hostname(&self, hostname: impl Into<String>) -> Service {
16993 let mut query = self.selection.select("withHostname");
16994 query = query.arg("hostname", hostname.into());
16995 Service {
16996 proc: self.proc.clone(),
16997 selection: query,
16998 graphql_client: self.graphql_client.clone(),
16999 }
17000 }
17001 pub async fn ports(&self) -> Result<Vec<Port>, DaggerError> {
17007 let query = self.selection.select("ports");
17008 let query = query.select("id");
17009 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
17010 Ok(ids
17011 .into_iter()
17012 .map(|id| Port {
17013 proc: self.proc.clone(),
17014 selection: crate::querybuilder::query()
17015 .select("node")
17016 .arg("id", &id.0)
17017 .inline_fragment("Port"),
17018 graphql_client: self.graphql_client.clone(),
17019 })
17020 .collect())
17021 }
17022 pub async fn ports_opts(&self, opts: ServicePortsOpts) -> Result<Vec<Port>, DaggerError> {
17028 let mut query = self.selection.select("ports");
17029 if let Some(declared) = opts.declared {
17030 query = query.arg("declared", declared);
17031 }
17032 let query = query.select("id");
17033 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
17034 Ok(ids
17035 .into_iter()
17036 .map(|id| Port {
17037 proc: self.proc.clone(),
17038 selection: crate::querybuilder::query()
17039 .select("node")
17040 .arg("id", &id.0)
17041 .inline_fragment("Port"),
17042 graphql_client: self.graphql_client.clone(),
17043 })
17044 .collect())
17045 }
17046 pub async fn endpoint(&self) -> Result<String, DaggerError> {
17054 let query = self.selection.select("endpoint");
17055 query.execute(self.graphql_client.clone()).await
17056 }
17057 pub async fn endpoint_opts<'a>(
17065 &self,
17066 opts: ServiceEndpointOpts<'a>,
17067 ) -> Result<String, DaggerError> {
17068 let mut query = self.selection.select("endpoint");
17069 if let Some(port) = opts.port {
17070 query = query.arg("port", port);
17071 }
17072 if let Some(scheme) = opts.scheme {
17073 query = query.arg("scheme", scheme);
17074 }
17075 query.execute(self.graphql_client.clone()).await
17076 }
17077 pub async fn start(&self) -> Result<Service, DaggerError> {
17080 let query = self.selection.select("start");
17081 let id: Id = query.execute(self.graphql_client.clone()).await?;
17082 Ok(Service {
17083 proc: self.proc.clone(),
17084 selection: query
17085 .root()
17086 .select("node")
17087 .arg("id", &id.0)
17088 .inline_fragment("Service"),
17089 graphql_client: self.graphql_client.clone(),
17090 })
17091 }
17092 pub async fn up(&self) -> Result<Void, DaggerError> {
17098 let query = self.selection.select("up");
17099 query.execute(self.graphql_client.clone()).await
17100 }
17101 pub async fn up_opts(&self, opts: ServiceUpOpts) -> Result<Void, DaggerError> {
17107 let mut query = self.selection.select("up");
17108 if let Some(ports) = opts.ports {
17109 query = query.arg("ports", ports);
17110 }
17111 if let Some(random) = opts.random {
17112 query = query.arg("random", random);
17113 }
17114 query.execute(self.graphql_client.clone()).await
17115 }
17116 pub async fn stop(&self) -> Result<Service, DaggerError> {
17122 let query = self.selection.select("stop");
17123 let id: Id = query.execute(self.graphql_client.clone()).await?;
17124 Ok(Service {
17125 proc: self.proc.clone(),
17126 selection: query
17127 .root()
17128 .select("node")
17129 .arg("id", &id.0)
17130 .inline_fragment("Service"),
17131 graphql_client: self.graphql_client.clone(),
17132 })
17133 }
17134 pub async fn stop_opts(&self, opts: ServiceStopOpts) -> Result<Service, DaggerError> {
17140 let mut query = self.selection.select("stop");
17141 if let Some(kill) = opts.kill {
17142 query = query.arg("kill", kill);
17143 }
17144 let id: Id = query.execute(self.graphql_client.clone()).await?;
17145 Ok(Service {
17146 proc: self.proc.clone(),
17147 selection: query
17148 .root()
17149 .select("node")
17150 .arg("id", &id.0)
17151 .inline_fragment("Service"),
17152 graphql_client: self.graphql_client.clone(),
17153 })
17154 }
17155 pub fn terminal(&self) -> Service {
17160 let query = self.selection.select("terminal");
17161 Service {
17162 proc: self.proc.clone(),
17163 selection: query,
17164 graphql_client: self.graphql_client.clone(),
17165 }
17166 }
17167 pub fn terminal_opts<'a>(&self, opts: ServiceTerminalOpts<'a>) -> Service {
17172 let mut query = self.selection.select("terminal");
17173 if let Some(cmd) = opts.cmd {
17174 query = query.arg("cmd", cmd);
17175 }
17176 Service {
17177 proc: self.proc.clone(),
17178 selection: query,
17179 graphql_client: self.graphql_client.clone(),
17180 }
17181 }
17182}
17183impl Node for Service {
17184 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
17185 let query = self.selection.select("id");
17186 let graphql_client = self.graphql_client.clone();
17187 async move { query.execute(graphql_client).await }
17188 }
17189}
17190impl Syncer for Service {
17191 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
17192 let query = self.selection.select("id");
17193 let graphql_client = self.graphql_client.clone();
17194 async move { query.execute(graphql_client).await }
17195 }
17196 fn sync(&self) -> impl core::future::Future<Output = Result<Self, DaggerError>> + Send {
17197 let query = self.selection.select("sync");
17198 let proc = self.proc.clone();
17199 let graphql_client = self.graphql_client.clone();
17200 async move {
17201 let id: Id = query.execute(graphql_client.clone()).await?;
17202 Ok(Self {
17203 proc,
17204 selection: query
17205 .root()
17206 .select("node")
17207 .arg("id", &id.0)
17208 .inline_fragment("Service"),
17209 graphql_client,
17210 })
17211 }
17212 }
17213}
17214#[derive(Clone)]
17215pub struct Socket {
17216 pub proc: Option<Arc<DaggerSessionProc>>,
17217 pub selection: Selection,
17218 pub graphql_client: DynGraphQLClient,
17219}
17220impl IntoID<Id> for Socket {
17221 fn into_id(
17222 self,
17223 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
17224 Box::pin(async move { self.id().await })
17225 }
17226}
17227impl Loadable for Socket {
17228 fn graphql_type() -> &'static str {
17229 "Socket"
17230 }
17231 fn from_query(
17232 proc: Option<Arc<DaggerSessionProc>>,
17233 selection: Selection,
17234 graphql_client: DynGraphQLClient,
17235 ) -> Self {
17236 Self {
17237 proc,
17238 selection,
17239 graphql_client,
17240 }
17241 }
17242}
17243impl Socket {
17244 pub async fn id(&self) -> Result<Id, DaggerError> {
17246 let query = self.selection.select("id");
17247 query.execute(self.graphql_client.clone()).await
17248 }
17249}
17250impl Node for Socket {
17251 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
17252 let query = self.selection.select("id");
17253 let graphql_client = self.graphql_client.clone();
17254 async move { query.execute(graphql_client).await }
17255 }
17256}
17257#[derive(Clone)]
17258pub struct SourceMap {
17259 pub proc: Option<Arc<DaggerSessionProc>>,
17260 pub selection: Selection,
17261 pub graphql_client: DynGraphQLClient,
17262}
17263impl IntoID<Id> for SourceMap {
17264 fn into_id(
17265 self,
17266 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
17267 Box::pin(async move { self.id().await })
17268 }
17269}
17270impl Loadable for SourceMap {
17271 fn graphql_type() -> &'static str {
17272 "SourceMap"
17273 }
17274 fn from_query(
17275 proc: Option<Arc<DaggerSessionProc>>,
17276 selection: Selection,
17277 graphql_client: DynGraphQLClient,
17278 ) -> Self {
17279 Self {
17280 proc,
17281 selection,
17282 graphql_client,
17283 }
17284 }
17285}
17286impl SourceMap {
17287 pub async fn id(&self) -> Result<Id, DaggerError> {
17289 let query = self.selection.select("id");
17290 query.execute(self.graphql_client.clone()).await
17291 }
17292 pub async fn module(&self) -> Result<String, DaggerError> {
17294 let query = self.selection.select("module");
17295 query.execute(self.graphql_client.clone()).await
17296 }
17297 pub async fn filename(&self) -> Result<String, DaggerError> {
17299 let query = self.selection.select("filename");
17300 query.execute(self.graphql_client.clone()).await
17301 }
17302 pub async fn line(&self) -> Result<isize, DaggerError> {
17304 let query = self.selection.select("line");
17305 query.execute(self.graphql_client.clone()).await
17306 }
17307 pub async fn column(&self) -> Result<isize, DaggerError> {
17309 let query = self.selection.select("column");
17310 query.execute(self.graphql_client.clone()).await
17311 }
17312 pub async fn url(&self) -> Result<String, DaggerError> {
17314 let query = self.selection.select("url");
17315 query.execute(self.graphql_client.clone()).await
17316 }
17317}
17318impl Node for SourceMap {
17319 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
17320 let query = self.selection.select("id");
17321 let graphql_client = self.graphql_client.clone();
17322 async move { query.execute(graphql_client).await }
17323 }
17324}
17325#[derive(Clone)]
17326pub struct Stat {
17327 pub proc: Option<Arc<DaggerSessionProc>>,
17328 pub selection: Selection,
17329 pub graphql_client: DynGraphQLClient,
17330}
17331impl IntoID<Id> for Stat {
17332 fn into_id(
17333 self,
17334 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
17335 Box::pin(async move { self.id().await })
17336 }
17337}
17338impl Loadable for Stat {
17339 fn graphql_type() -> &'static str {
17340 "Stat"
17341 }
17342 fn from_query(
17343 proc: Option<Arc<DaggerSessionProc>>,
17344 selection: Selection,
17345 graphql_client: DynGraphQLClient,
17346 ) -> Self {
17347 Self {
17348 proc,
17349 selection,
17350 graphql_client,
17351 }
17352 }
17353}
17354impl Stat {
17355 pub async fn id(&self) -> Result<Id, DaggerError> {
17357 let query = self.selection.select("id");
17358 query.execute(self.graphql_client.clone()).await
17359 }
17360 pub async fn size(&self) -> Result<isize, DaggerError> {
17362 let query = self.selection.select("size");
17363 query.execute(self.graphql_client.clone()).await
17364 }
17365 pub async fn name(&self) -> Result<String, DaggerError> {
17367 let query = self.selection.select("name");
17368 query.execute(self.graphql_client.clone()).await
17369 }
17370 pub async fn file_type(&self) -> Result<FileType, DaggerError> {
17372 let query = self.selection.select("fileType");
17373 query.execute(self.graphql_client.clone()).await
17374 }
17375 pub async fn permissions(&self) -> Result<isize, DaggerError> {
17377 let query = self.selection.select("permissions");
17378 query.execute(self.graphql_client.clone()).await
17379 }
17380}
17381impl Node for Stat {
17382 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
17383 let query = self.selection.select("id");
17384 let graphql_client = self.graphql_client.clone();
17385 async move { query.execute(graphql_client).await }
17386 }
17387}
17388#[derive(Clone)]
17389pub struct Terminal {
17390 pub proc: Option<Arc<DaggerSessionProc>>,
17391 pub selection: Selection,
17392 pub graphql_client: DynGraphQLClient,
17393}
17394impl IntoID<Id> for Terminal {
17395 fn into_id(
17396 self,
17397 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
17398 Box::pin(async move { self.id().await })
17399 }
17400}
17401impl Loadable for Terminal {
17402 fn graphql_type() -> &'static str {
17403 "Terminal"
17404 }
17405 fn from_query(
17406 proc: Option<Arc<DaggerSessionProc>>,
17407 selection: Selection,
17408 graphql_client: DynGraphQLClient,
17409 ) -> Self {
17410 Self {
17411 proc,
17412 selection,
17413 graphql_client,
17414 }
17415 }
17416}
17417impl Terminal {
17418 pub async fn id(&self) -> Result<Id, DaggerError> {
17420 let query = self.selection.select("id");
17421 query.execute(self.graphql_client.clone()).await
17422 }
17423 pub async fn sync(&self) -> Result<Terminal, DaggerError> {
17426 let query = self.selection.select("sync");
17427 let id: Id = query.execute(self.graphql_client.clone()).await?;
17428 Ok(Terminal {
17429 proc: self.proc.clone(),
17430 selection: query
17431 .root()
17432 .select("node")
17433 .arg("id", &id.0)
17434 .inline_fragment("Terminal"),
17435 graphql_client: self.graphql_client.clone(),
17436 })
17437 }
17438}
17439impl Node for Terminal {
17440 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
17441 let query = self.selection.select("id");
17442 let graphql_client = self.graphql_client.clone();
17443 async move { query.execute(graphql_client).await }
17444 }
17445}
17446impl Syncer for Terminal {
17447 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
17448 let query = self.selection.select("id");
17449 let graphql_client = self.graphql_client.clone();
17450 async move { query.execute(graphql_client).await }
17451 }
17452 fn sync(&self) -> impl core::future::Future<Output = Result<Self, DaggerError>> + Send {
17453 let query = self.selection.select("sync");
17454 let proc = self.proc.clone();
17455 let graphql_client = self.graphql_client.clone();
17456 async move {
17457 let id: Id = query.execute(graphql_client.clone()).await?;
17458 Ok(Self {
17459 proc,
17460 selection: query
17461 .root()
17462 .select("node")
17463 .arg("id", &id.0)
17464 .inline_fragment("Terminal"),
17465 graphql_client,
17466 })
17467 }
17468 }
17469}
17470#[derive(Clone)]
17471pub struct TypeDef {
17472 pub proc: Option<Arc<DaggerSessionProc>>,
17473 pub selection: Selection,
17474 pub graphql_client: DynGraphQLClient,
17475}
17476#[derive(Builder, Debug, PartialEq)]
17477pub struct TypeDefWithScalarOpts<'a> {
17478 #[builder(setter(into, strip_option), default)]
17479 pub description: Option<&'a str>,
17480}
17481#[derive(Builder, Debug, PartialEq)]
17482pub struct TypeDefWithObjectOpts<'a> {
17483 #[builder(setter(into, strip_option), default)]
17484 pub deprecated: Option<&'a str>,
17485 #[builder(setter(into, strip_option), default)]
17486 pub description: Option<&'a str>,
17487 #[builder(setter(into, strip_option), default)]
17488 pub source_map: Option<Id>,
17489}
17490#[derive(Builder, Debug, PartialEq)]
17491pub struct TypeDefWithInterfaceOpts<'a> {
17492 #[builder(setter(into, strip_option), default)]
17493 pub description: Option<&'a str>,
17494 #[builder(setter(into, strip_option), default)]
17495 pub source_map: Option<Id>,
17496}
17497#[derive(Builder, Debug, PartialEq)]
17498pub struct TypeDefWithFieldOpts<'a> {
17499 #[builder(setter(into, strip_option), default)]
17501 pub deprecated: Option<&'a str>,
17502 #[builder(setter(into, strip_option), default)]
17504 pub description: Option<&'a str>,
17505 #[builder(setter(into, strip_option), default)]
17507 pub source_map: Option<Id>,
17508}
17509#[derive(Builder, Debug, PartialEq)]
17510pub struct TypeDefWithEnumOpts<'a> {
17511 #[builder(setter(into, strip_option), default)]
17513 pub description: Option<&'a str>,
17514 #[builder(setter(into, strip_option), default)]
17516 pub source_map: Option<Id>,
17517}
17518#[derive(Builder, Debug, PartialEq)]
17519pub struct TypeDefWithEnumValueOpts<'a> {
17520 #[builder(setter(into, strip_option), default)]
17522 pub deprecated: Option<&'a str>,
17523 #[builder(setter(into, strip_option), default)]
17525 pub description: Option<&'a str>,
17526 #[builder(setter(into, strip_option), default)]
17528 pub source_map: Option<Id>,
17529}
17530#[derive(Builder, Debug, PartialEq)]
17531pub struct TypeDefWithEnumMemberOpts<'a> {
17532 #[builder(setter(into, strip_option), default)]
17534 pub deprecated: Option<&'a str>,
17535 #[builder(setter(into, strip_option), default)]
17537 pub description: Option<&'a str>,
17538 #[builder(setter(into, strip_option), default)]
17540 pub source_map: Option<Id>,
17541 #[builder(setter(into, strip_option), default)]
17543 pub value: Option<&'a str>,
17544}
17545impl IntoID<Id> for TypeDef {
17546 fn into_id(
17547 self,
17548 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
17549 Box::pin(async move { self.id().await })
17550 }
17551}
17552impl Loadable for TypeDef {
17553 fn graphql_type() -> &'static str {
17554 "TypeDef"
17555 }
17556 fn from_query(
17557 proc: Option<Arc<DaggerSessionProc>>,
17558 selection: Selection,
17559 graphql_client: DynGraphQLClient,
17560 ) -> Self {
17561 Self {
17562 proc,
17563 selection,
17564 graphql_client,
17565 }
17566 }
17567}
17568impl TypeDef {
17569 pub async fn id(&self) -> Result<Id, DaggerError> {
17571 let query = self.selection.select("id");
17572 query.execute(self.graphql_client.clone()).await
17573 }
17574 pub fn with_collection(&self) -> TypeDef {
17576 let query = self.selection.select("withCollection");
17577 TypeDef {
17578 proc: self.proc.clone(),
17579 selection: query,
17580 graphql_client: self.graphql_client.clone(),
17581 }
17582 }
17583 pub fn with_collection_keys(&self, name: impl Into<String>) -> TypeDef {
17585 let mut query = self.selection.select("withCollectionKeys");
17586 query = query.arg("name", name.into());
17587 TypeDef {
17588 proc: self.proc.clone(),
17589 selection: query,
17590 graphql_client: self.graphql_client.clone(),
17591 }
17592 }
17593 pub fn with_collection_get(&self, name: impl Into<String>) -> TypeDef {
17595 let mut query = self.selection.select("withCollectionGet");
17596 query = query.arg("name", name.into());
17597 TypeDef {
17598 proc: self.proc.clone(),
17599 selection: query,
17600 graphql_client: self.graphql_client.clone(),
17601 }
17602 }
17603 pub fn with_collection_delta(&self, name: impl Into<String>) -> TypeDef {
17605 let mut query = self.selection.select("withCollectionDelta");
17606 query = query.arg("name", name.into());
17607 TypeDef {
17608 proc: self.proc.clone(),
17609 selection: query,
17610 graphql_client: self.graphql_client.clone(),
17611 }
17612 }
17613 pub async fn as_collection(&self) -> Result<Option<CollectionTypeDef>, DaggerError> {
17615 let query = self.selection.select("asCollection");
17616 let query = query.select("id");
17617 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
17618 Ok(id.map(|id| CollectionTypeDef {
17619 proc: self.proc.clone(),
17620 selection: query
17621 .root()
17622 .select("node")
17623 .arg("id", &id.0)
17624 .inline_fragment("CollectionTypeDef"),
17625 graphql_client: self.graphql_client.clone(),
17626 }))
17627 }
17628 pub async fn name(&self) -> Result<String, DaggerError> {
17630 let query = self.selection.select("name");
17631 query.execute(self.graphql_client.clone()).await
17632 }
17633 pub async fn kind(&self) -> Result<TypeDefKind, DaggerError> {
17635 let query = self.selection.select("kind");
17636 query.execute(self.graphql_client.clone()).await
17637 }
17638 pub async fn optional(&self) -> Result<bool, DaggerError> {
17640 let query = self.selection.select("optional");
17641 query.execute(self.graphql_client.clone()).await
17642 }
17643 pub fn with_optional(&self, optional: bool) -> TypeDef {
17645 let mut query = self.selection.select("withOptional");
17646 query = query.arg("optional", optional);
17647 TypeDef {
17648 proc: self.proc.clone(),
17649 selection: query,
17650 graphql_client: self.graphql_client.clone(),
17651 }
17652 }
17653 pub fn with_kind(&self, kind: TypeDefKind) -> TypeDef {
17655 let mut query = self.selection.select("withKind");
17656 query = query.arg("kind", kind);
17657 TypeDef {
17658 proc: self.proc.clone(),
17659 selection: query,
17660 graphql_client: self.graphql_client.clone(),
17661 }
17662 }
17663 pub fn with_scalar(&self, name: impl Into<String>) -> TypeDef {
17669 let mut query = self.selection.select("withScalar");
17670 query = query.arg("name", name.into());
17671 TypeDef {
17672 proc: self.proc.clone(),
17673 selection: query,
17674 graphql_client: self.graphql_client.clone(),
17675 }
17676 }
17677 pub fn with_scalar_opts<'a>(
17683 &self,
17684 name: impl Into<String>,
17685 opts: TypeDefWithScalarOpts<'a>,
17686 ) -> TypeDef {
17687 let mut query = self.selection.select("withScalar");
17688 query = query.arg("name", name.into());
17689 if let Some(description) = opts.description {
17690 query = query.arg("description", description);
17691 }
17692 TypeDef {
17693 proc: self.proc.clone(),
17694 selection: query,
17695 graphql_client: self.graphql_client.clone(),
17696 }
17697 }
17698 pub fn with_list_of(&self, element_type: impl IntoID<Id>) -> TypeDef {
17700 let mut query = self.selection.select("withListOf");
17701 query = query.arg_lazy(
17702 "elementType",
17703 Box::new(move || {
17704 let element_type = element_type.clone();
17705 Box::pin(async move { element_type.into_id().await.unwrap().quote() })
17706 }),
17707 );
17708 TypeDef {
17709 proc: self.proc.clone(),
17710 selection: query,
17711 graphql_client: self.graphql_client.clone(),
17712 }
17713 }
17714 pub fn with_object(&self, name: impl Into<String>) -> TypeDef {
17721 let mut query = self.selection.select("withObject");
17722 query = query.arg("name", name.into());
17723 TypeDef {
17724 proc: self.proc.clone(),
17725 selection: query,
17726 graphql_client: self.graphql_client.clone(),
17727 }
17728 }
17729 pub fn with_object_opts<'a>(
17736 &self,
17737 name: impl Into<String>,
17738 opts: TypeDefWithObjectOpts<'a>,
17739 ) -> TypeDef {
17740 let mut query = self.selection.select("withObject");
17741 query = query.arg("name", name.into());
17742 if let Some(description) = opts.description {
17743 query = query.arg("description", description);
17744 }
17745 if let Some(source_map) = opts.source_map {
17746 query = query.arg("sourceMap", source_map);
17747 }
17748 if let Some(deprecated) = opts.deprecated {
17749 query = query.arg("deprecated", deprecated);
17750 }
17751 TypeDef {
17752 proc: self.proc.clone(),
17753 selection: query,
17754 graphql_client: self.graphql_client.clone(),
17755 }
17756 }
17757 pub fn with_interface(&self, name: impl Into<String>) -> TypeDef {
17763 let mut query = self.selection.select("withInterface");
17764 query = query.arg("name", name.into());
17765 TypeDef {
17766 proc: self.proc.clone(),
17767 selection: query,
17768 graphql_client: self.graphql_client.clone(),
17769 }
17770 }
17771 pub fn with_interface_opts<'a>(
17777 &self,
17778 name: impl Into<String>,
17779 opts: TypeDefWithInterfaceOpts<'a>,
17780 ) -> TypeDef {
17781 let mut query = self.selection.select("withInterface");
17782 query = query.arg("name", name.into());
17783 if let Some(description) = opts.description {
17784 query = query.arg("description", description);
17785 }
17786 if let Some(source_map) = opts.source_map {
17787 query = query.arg("sourceMap", source_map);
17788 }
17789 TypeDef {
17790 proc: self.proc.clone(),
17791 selection: query,
17792 graphql_client: self.graphql_client.clone(),
17793 }
17794 }
17795 pub fn with_field(&self, name: impl Into<String>, type_def: impl IntoID<Id>) -> TypeDef {
17803 let mut query = self.selection.select("withField");
17804 query = query.arg("name", name.into());
17805 query = query.arg_lazy(
17806 "typeDef",
17807 Box::new(move || {
17808 let type_def = type_def.clone();
17809 Box::pin(async move { type_def.into_id().await.unwrap().quote() })
17810 }),
17811 );
17812 TypeDef {
17813 proc: self.proc.clone(),
17814 selection: query,
17815 graphql_client: self.graphql_client.clone(),
17816 }
17817 }
17818 pub fn with_field_opts<'a>(
17826 &self,
17827 name: impl Into<String>,
17828 type_def: impl IntoID<Id>,
17829 opts: TypeDefWithFieldOpts<'a>,
17830 ) -> TypeDef {
17831 let mut query = self.selection.select("withField");
17832 query = query.arg("name", name.into());
17833 query = query.arg_lazy(
17834 "typeDef",
17835 Box::new(move || {
17836 let type_def = type_def.clone();
17837 Box::pin(async move { type_def.into_id().await.unwrap().quote() })
17838 }),
17839 );
17840 if let Some(description) = opts.description {
17841 query = query.arg("description", description);
17842 }
17843 if let Some(source_map) = opts.source_map {
17844 query = query.arg("sourceMap", source_map);
17845 }
17846 if let Some(deprecated) = opts.deprecated {
17847 query = query.arg("deprecated", deprecated);
17848 }
17849 TypeDef {
17850 proc: self.proc.clone(),
17851 selection: query,
17852 graphql_client: self.graphql_client.clone(),
17853 }
17854 }
17855 pub fn with_function(&self, function: impl IntoID<Id>) -> TypeDef {
17857 let mut query = self.selection.select("withFunction");
17858 query = query.arg_lazy(
17859 "function",
17860 Box::new(move || {
17861 let function = function.clone();
17862 Box::pin(async move { function.into_id().await.unwrap().quote() })
17863 }),
17864 );
17865 TypeDef {
17866 proc: self.proc.clone(),
17867 selection: query,
17868 graphql_client: self.graphql_client.clone(),
17869 }
17870 }
17871 pub fn with_constructor(&self, function: impl IntoID<Id>) -> TypeDef {
17873 let mut query = self.selection.select("withConstructor");
17874 query = query.arg_lazy(
17875 "function",
17876 Box::new(move || {
17877 let function = function.clone();
17878 Box::pin(async move { function.into_id().await.unwrap().quote() })
17879 }),
17880 );
17881 TypeDef {
17882 proc: self.proc.clone(),
17883 selection: query,
17884 graphql_client: self.graphql_client.clone(),
17885 }
17886 }
17887 pub fn with_enum(&self, name: impl Into<String>) -> TypeDef {
17895 let mut query = self.selection.select("withEnum");
17896 query = query.arg("name", name.into());
17897 TypeDef {
17898 proc: self.proc.clone(),
17899 selection: query,
17900 graphql_client: self.graphql_client.clone(),
17901 }
17902 }
17903 pub fn with_enum_opts<'a>(
17911 &self,
17912 name: impl Into<String>,
17913 opts: TypeDefWithEnumOpts<'a>,
17914 ) -> TypeDef {
17915 let mut query = self.selection.select("withEnum");
17916 query = query.arg("name", name.into());
17917 if let Some(description) = opts.description {
17918 query = query.arg("description", description);
17919 }
17920 if let Some(source_map) = opts.source_map {
17921 query = query.arg("sourceMap", source_map);
17922 }
17923 TypeDef {
17924 proc: self.proc.clone(),
17925 selection: query,
17926 graphql_client: self.graphql_client.clone(),
17927 }
17928 }
17929 pub fn with_enum_value(&self, value: impl Into<String>) -> TypeDef {
17936 let mut query = self.selection.select("withEnumValue");
17937 query = query.arg("value", value.into());
17938 TypeDef {
17939 proc: self.proc.clone(),
17940 selection: query,
17941 graphql_client: self.graphql_client.clone(),
17942 }
17943 }
17944 pub fn with_enum_value_opts<'a>(
17951 &self,
17952 value: impl Into<String>,
17953 opts: TypeDefWithEnumValueOpts<'a>,
17954 ) -> TypeDef {
17955 let mut query = self.selection.select("withEnumValue");
17956 query = query.arg("value", value.into());
17957 if let Some(description) = opts.description {
17958 query = query.arg("description", description);
17959 }
17960 if let Some(source_map) = opts.source_map {
17961 query = query.arg("sourceMap", source_map);
17962 }
17963 if let Some(deprecated) = opts.deprecated {
17964 query = query.arg("deprecated", deprecated);
17965 }
17966 TypeDef {
17967 proc: self.proc.clone(),
17968 selection: query,
17969 graphql_client: self.graphql_client.clone(),
17970 }
17971 }
17972 pub fn with_enum_member(&self, name: impl Into<String>) -> TypeDef {
17979 let mut query = self.selection.select("withEnumMember");
17980 query = query.arg("name", name.into());
17981 TypeDef {
17982 proc: self.proc.clone(),
17983 selection: query,
17984 graphql_client: self.graphql_client.clone(),
17985 }
17986 }
17987 pub fn with_enum_member_opts<'a>(
17994 &self,
17995 name: impl Into<String>,
17996 opts: TypeDefWithEnumMemberOpts<'a>,
17997 ) -> TypeDef {
17998 let mut query = self.selection.select("withEnumMember");
17999 query = query.arg("name", name.into());
18000 if let Some(value) = opts.value {
18001 query = query.arg("value", value);
18002 }
18003 if let Some(description) = opts.description {
18004 query = query.arg("description", description);
18005 }
18006 if let Some(source_map) = opts.source_map {
18007 query = query.arg("sourceMap", source_map);
18008 }
18009 if let Some(deprecated) = opts.deprecated {
18010 query = query.arg("deprecated", deprecated);
18011 }
18012 TypeDef {
18013 proc: self.proc.clone(),
18014 selection: query,
18015 graphql_client: self.graphql_client.clone(),
18016 }
18017 }
18018 pub async fn as_list(&self) -> Result<Option<ListTypeDef>, DaggerError> {
18020 let query = self.selection.select("asList");
18021 let query = query.select("id");
18022 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
18023 Ok(id.map(|id| ListTypeDef {
18024 proc: self.proc.clone(),
18025 selection: query
18026 .root()
18027 .select("node")
18028 .arg("id", &id.0)
18029 .inline_fragment("ListTypeDef"),
18030 graphql_client: self.graphql_client.clone(),
18031 }))
18032 }
18033 pub async fn as_object(&self) -> Result<Option<ObjectTypeDef>, DaggerError> {
18035 let query = self.selection.select("asObject");
18036 let query = query.select("id");
18037 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
18038 Ok(id.map(|id| ObjectTypeDef {
18039 proc: self.proc.clone(),
18040 selection: query
18041 .root()
18042 .select("node")
18043 .arg("id", &id.0)
18044 .inline_fragment("ObjectTypeDef"),
18045 graphql_client: self.graphql_client.clone(),
18046 }))
18047 }
18048 pub async fn as_interface(&self) -> Result<Option<InterfaceTypeDef>, DaggerError> {
18050 let query = self.selection.select("asInterface");
18051 let query = query.select("id");
18052 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
18053 Ok(id.map(|id| InterfaceTypeDef {
18054 proc: self.proc.clone(),
18055 selection: query
18056 .root()
18057 .select("node")
18058 .arg("id", &id.0)
18059 .inline_fragment("InterfaceTypeDef"),
18060 graphql_client: self.graphql_client.clone(),
18061 }))
18062 }
18063 pub async fn as_input(&self) -> Result<Option<InputTypeDef>, DaggerError> {
18065 let query = self.selection.select("asInput");
18066 let query = query.select("id");
18067 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
18068 Ok(id.map(|id| InputTypeDef {
18069 proc: self.proc.clone(),
18070 selection: query
18071 .root()
18072 .select("node")
18073 .arg("id", &id.0)
18074 .inline_fragment("InputTypeDef"),
18075 graphql_client: self.graphql_client.clone(),
18076 }))
18077 }
18078 pub async fn as_scalar(&self) -> Result<Option<ScalarTypeDef>, DaggerError> {
18080 let query = self.selection.select("asScalar");
18081 let query = query.select("id");
18082 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
18083 Ok(id.map(|id| ScalarTypeDef {
18084 proc: self.proc.clone(),
18085 selection: query
18086 .root()
18087 .select("node")
18088 .arg("id", &id.0)
18089 .inline_fragment("ScalarTypeDef"),
18090 graphql_client: self.graphql_client.clone(),
18091 }))
18092 }
18093 pub async fn as_enum(&self) -> Result<Option<EnumTypeDef>, DaggerError> {
18095 let query = self.selection.select("asEnum");
18096 let query = query.select("id");
18097 let id: Option<Id> = query.execute(self.graphql_client.clone()).await?;
18098 Ok(id.map(|id| EnumTypeDef {
18099 proc: self.proc.clone(),
18100 selection: query
18101 .root()
18102 .select("node")
18103 .arg("id", &id.0)
18104 .inline_fragment("EnumTypeDef"),
18105 graphql_client: self.graphql_client.clone(),
18106 }))
18107 }
18108}
18109impl Node for TypeDef {
18110 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
18111 let query = self.selection.select("id");
18112 let graphql_client = self.graphql_client.clone();
18113 async move { query.execute(graphql_client).await }
18114 }
18115}
18116#[derive(Clone)]
18117pub struct Volume {
18118 pub proc: Option<Arc<DaggerSessionProc>>,
18119 pub selection: Selection,
18120 pub graphql_client: DynGraphQLClient,
18121}
18122impl IntoID<Id> for Volume {
18123 fn into_id(
18124 self,
18125 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
18126 Box::pin(async move { self.id().await })
18127 }
18128}
18129impl Loadable for Volume {
18130 fn graphql_type() -> &'static str {
18131 "Volume"
18132 }
18133 fn from_query(
18134 proc: Option<Arc<DaggerSessionProc>>,
18135 selection: Selection,
18136 graphql_client: DynGraphQLClient,
18137 ) -> Self {
18138 Self {
18139 proc,
18140 selection,
18141 graphql_client,
18142 }
18143 }
18144}
18145impl Volume {
18146 pub async fn id(&self) -> Result<Id, DaggerError> {
18148 let query = self.selection.select("id");
18149 query.execute(self.graphql_client.clone()).await
18150 }
18151}
18152impl Node for Volume {
18153 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
18154 let query = self.selection.select("id");
18155 let graphql_client = self.graphql_client.clone();
18156 async move { query.execute(graphql_client).await }
18157 }
18158}
18159#[derive(Clone)]
18160pub struct Workspace {
18161 pub proc: Option<Arc<DaggerSessionProc>>,
18162 pub selection: Selection,
18163 pub graphql_client: DynGraphQLClient,
18164}
18165#[derive(Builder, Debug, PartialEq)]
18166pub struct WorkspaceMigrateModuleOpts<'a> {
18167 #[builder(setter(into, strip_option), default)]
18169 pub path: Option<&'a str>,
18170}
18171#[derive(Builder, Debug, PartialEq)]
18172pub struct WorkspaceCompareCommitsFromOpts<'a> {
18173 #[builder(setter(into, strip_option), default)]
18175 pub commits: Option<Vec<&'a str>>,
18176 #[builder(setter(into, strip_option), default)]
18178 pub max_commits: Option<isize>,
18179}
18180#[derive(Builder, Debug, PartialEq)]
18181pub struct WorkspaceWithCommitsFromOpts<'a> {
18182 #[builder(setter(into, strip_option), default)]
18184 pub commits: Option<Vec<&'a str>>,
18185 #[builder(setter(into, strip_option), default)]
18187 pub max_commits: Option<isize>,
18188}
18189#[derive(Builder, Debug, PartialEq)]
18190pub struct WorkspaceWithCommitOpts<'a> {
18191 #[builder(setter(into, strip_option), default)]
18193 pub author_email: Option<&'a str>,
18194 #[builder(setter(into, strip_option), default)]
18196 pub author_name: Option<&'a str>,
18197 #[builder(setter(into, strip_option), default)]
18199 pub signoff: Option<bool>,
18200}
18201#[derive(Builder, Debug, PartialEq)]
18202pub struct WorkspaceWithResetOpts {
18203 #[builder(setter(into, strip_option), default)]
18205 pub hard: Option<bool>,
18206}
18207#[derive(Builder, Debug, PartialEq)]
18208pub struct WorkspaceDirectoryOpts<'a> {
18209 #[builder(setter(into, strip_option), default)]
18211 pub exclude: Option<Vec<&'a str>>,
18212 #[builder(setter(into, strip_option), default)]
18214 pub gitignore: Option<bool>,
18215 #[builder(setter(into, strip_option), default)]
18217 pub include: Option<Vec<&'a str>>,
18218}
18219#[derive(Builder, Debug, PartialEq)]
18220pub struct WorkspaceSearchOpts<'a> {
18221 #[builder(setter(into, strip_option), default)]
18223 pub dotall: Option<bool>,
18224 #[builder(setter(into, strip_option), default)]
18226 pub files_only: Option<bool>,
18227 #[builder(setter(into, strip_option), default)]
18229 pub globs: Option<Vec<&'a str>>,
18230 #[builder(setter(into, strip_option), default)]
18232 pub insensitive: Option<bool>,
18233 #[builder(setter(into, strip_option), default)]
18235 pub limit: Option<isize>,
18236 #[builder(setter(into, strip_option), default)]
18238 pub literal: Option<bool>,
18239 #[builder(setter(into, strip_option), default)]
18241 pub multiline: Option<bool>,
18242 #[builder(setter(into, strip_option), default)]
18244 pub paths: Option<Vec<&'a str>>,
18245 #[builder(setter(into, strip_option), default)]
18247 pub skip_hidden: Option<bool>,
18248 #[builder(setter(into, strip_option), default)]
18250 pub skip_ignored: Option<bool>,
18251}
18252#[derive(Builder, Debug, PartialEq)]
18253pub struct WorkspaceFindUpOpts<'a> {
18254 #[builder(setter(into, strip_option), default)]
18256 pub from: Option<&'a str>,
18257}
18258#[derive(Builder, Debug, PartialEq)]
18259pub struct WorkspaceFindRootsOpts<'a> {
18260 #[builder(setter(into, strip_option), default)]
18262 pub exclude: Option<Vec<&'a str>>,
18263 #[builder(setter(into, strip_option), default)]
18265 pub start: Option<&'a str>,
18266}
18267#[derive(Builder, Debug, PartialEq)]
18268pub struct WorkspaceWithNewFileOpts {
18269 #[builder(setter(into, strip_option), default)]
18271 pub permissions: Option<isize>,
18272}
18273#[derive(Builder, Debug, PartialEq)]
18274pub struct WorkspaceWithFileOpts {
18275 #[builder(setter(into, strip_option), default)]
18277 pub permissions: Option<isize>,
18278}
18279#[derive(Builder, Debug, PartialEq)]
18280pub struct WorkspaceWithPatchFileOpts {
18281 #[builder(setter(into, strip_option), default)]
18283 pub on_conflict: Option<PatchConflict>,
18284}
18285#[derive(Builder, Debug, PartialEq)]
18286pub struct WorkspaceWithModuleOpts<'a> {
18287 #[builder(setter(into, strip_option), default)]
18289 pub here: Option<bool>,
18290 #[builder(setter(into, strip_option), default)]
18292 pub name: Option<&'a str>,
18293}
18294#[derive(Builder, Debug, PartialEq)]
18295pub struct WorkspaceWithoutModuleOpts {
18296 #[builder(setter(into, strip_option), default)]
18298 pub here: Option<bool>,
18299}
18300#[derive(Builder, Debug, PartialEq)]
18301pub struct WorkspaceWithSdkOpts<'a> {
18302 #[builder(setter(into, strip_option), default)]
18304 pub as_sdk_name: Option<&'a str>,
18305 #[builder(setter(into, strip_option), default)]
18307 pub here: Option<bool>,
18308 #[builder(setter(into, strip_option), default)]
18310 pub name: Option<&'a str>,
18311}
18312#[derive(Builder, Debug, PartialEq)]
18313pub struct WorkspaceWithoutSdkOpts {
18314 #[builder(setter(into, strip_option), default)]
18316 pub here: Option<bool>,
18317}
18318#[derive(Builder, Debug, PartialEq)]
18319pub struct WorkspaceWithInitModuleOpts<'a> {
18320 #[builder(setter(into, strip_option), default)]
18322 pub entrypoint: Option<bool>,
18323 #[builder(setter(into, strip_option), default)]
18325 pub install: Option<bool>,
18326 #[builder(setter(into, strip_option), default)]
18328 pub name: Option<&'a str>,
18329 #[builder(setter(into, strip_option), default)]
18331 pub path: Option<&'a str>,
18332 #[builder(setter(into, strip_option), default)]
18334 pub settings: Option<Json>,
18335}
18336#[derive(Builder, Debug, PartialEq)]
18337pub struct WorkspaceWithClientOpts<'a> {
18338 #[builder(setter(into, strip_option), default)]
18340 pub sdk: Option<&'a str>,
18341 #[builder(setter(into, strip_option), default)]
18343 pub settings: Option<Json>,
18344}
18345#[derive(Builder, Debug, PartialEq)]
18346pub struct WorkspaceWithoutClientOpts<'a> {
18347 #[builder(setter(into, strip_option), default)]
18349 pub sdk: Option<&'a str>,
18350}
18351#[derive(Builder, Debug, PartialEq)]
18352pub struct WorkspaceWithUpdatedClientsOpts<'a> {
18353 #[builder(setter(into, strip_option), default)]
18355 pub all: Option<bool>,
18356 #[builder(setter(into, strip_option), default)]
18358 pub modules: Option<Vec<&'a str>>,
18359 #[builder(setter(into, strip_option), default)]
18361 pub sdk: Option<&'a str>,
18362}
18363#[derive(Builder, Debug, PartialEq)]
18364pub struct WorkspaceWithConfigValueOpts<'a> {
18365 #[builder(setter(into, strip_option), default)]
18367 pub here: Option<bool>,
18368 #[builder(setter(into, strip_option), default)]
18370 pub values: Option<Vec<&'a str>>,
18371}
18372#[derive(Builder, Debug, PartialEq)]
18373pub struct WorkspaceWithoutConfigValueOpts {
18374 #[builder(setter(into, strip_option), default)]
18376 pub here: Option<bool>,
18377}
18378#[derive(Builder, Debug, PartialEq)]
18379pub struct WorkspaceWithConfigEnvOpts {
18380 #[builder(setter(into, strip_option), default)]
18382 pub here: Option<bool>,
18383}
18384#[derive(Builder, Debug, PartialEq)]
18385pub struct WorkspaceWithoutConfigEnvOpts {
18386 #[builder(setter(into, strip_option), default)]
18388 pub here: Option<bool>,
18389}
18390#[derive(Builder, Debug, PartialEq)]
18391pub struct WorkspaceWithUpdatedLockOpts {
18392 #[builder(setter(into, strip_option), default)]
18394 pub no_generate: Option<bool>,
18395}
18396#[derive(Builder, Debug, PartialEq)]
18397pub struct WorkspaceWithUpdatedModulesOpts<'a> {
18398 #[builder(setter(into, strip_option), default)]
18400 pub names: Option<Vec<&'a str>>,
18401 #[builder(setter(into, strip_option), default)]
18403 pub source: Option<&'a str>,
18404 #[builder(setter(into, strip_option), default)]
18406 pub version: Option<&'a str>,
18407}
18408#[derive(Builder, Debug, PartialEq)]
18409pub struct WorkspaceChangesOpts {
18410 #[builder(setter(into, strip_option), default)]
18412 pub from: Option<Id>,
18413}
18414#[derive(Builder, Debug, PartialEq)]
18415pub struct WorkspaceExportOpts<'a> {
18416 #[builder(setter(into, strip_option), default)]
18418 pub from: Option<Id>,
18419 #[builder(setter(into, strip_option), default)]
18421 pub path: Option<&'a str>,
18422}
18423#[derive(Builder, Debug, PartialEq)]
18424pub struct WorkspaceConfigReadOpts<'a> {
18425 #[builder(setter(into, strip_option), default)]
18427 pub effective: Option<bool>,
18428 #[builder(setter(into, strip_option), default)]
18430 pub key: Option<&'a str>,
18431}
18432#[derive(Builder, Debug, PartialEq)]
18433pub struct WorkspaceArtifactsOpts<'a> {
18434 #[builder(setter(into, strip_option), default)]
18436 pub include: Option<Vec<&'a str>>,
18437}
18438#[derive(Builder, Debug, PartialEq)]
18439pub struct WorkspaceMigrateOpts<'a> {
18440 #[builder(setter(into, strip_option), default)]
18442 pub modules: Option<Vec<&'a str>>,
18443}
18444impl IntoID<Id> for Workspace {
18445 fn into_id(
18446 self,
18447 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
18448 Box::pin(async move { self.id().await })
18449 }
18450}
18451impl Loadable for Workspace {
18452 fn graphql_type() -> &'static str {
18453 "Workspace"
18454 }
18455 fn from_query(
18456 proc: Option<Arc<DaggerSessionProc>>,
18457 selection: Selection,
18458 graphql_client: DynGraphQLClient,
18459 ) -> Self {
18460 Self {
18461 proc,
18462 selection,
18463 graphql_client,
18464 }
18465 }
18466}
18467impl Workspace {
18468 pub async fn id(&self) -> Result<Id, DaggerError> {
18470 let query = self.selection.select("id");
18471 query.execute(self.graphql_client.clone()).await
18472 }
18473 pub fn resolve(&self, value: impl Into<String>) -> Address {
18482 let mut query = self.selection.select("resolve");
18483 query = query.arg("value", value.into());
18484 Address {
18485 proc: self.proc.clone(),
18486 selection: query,
18487 graphql_client: self.graphql_client.clone(),
18488 }
18489 }
18490 pub fn with_initialized(&self) -> Workspace {
18493 let query = self.selection.select("withInitialized");
18494 Workspace {
18495 proc: self.proc.clone(),
18496 selection: query,
18497 graphql_client: self.graphql_client.clone(),
18498 }
18499 }
18500 pub fn migrate_module(&self) -> WorkspaceMigration {
18507 let query = self.selection.select("migrateModule");
18508 WorkspaceMigration {
18509 proc: self.proc.clone(),
18510 selection: query,
18511 graphql_client: self.graphql_client.clone(),
18512 }
18513 }
18514 pub fn migrate_module_opts<'a>(
18521 &self,
18522 opts: WorkspaceMigrateModuleOpts<'a>,
18523 ) -> WorkspaceMigration {
18524 let mut query = self.selection.select("migrateModule");
18525 if let Some(path) = opts.path {
18526 query = query.arg("path", path);
18527 }
18528 WorkspaceMigration {
18529 proc: self.proc.clone(),
18530 selection: query,
18531 graphql_client: self.graphql_client.clone(),
18532 }
18533 }
18534 pub async fn compare_commits_from(
18543 &self,
18544 source: impl IntoID<Id>,
18545 ) -> Result<Vec<WorkspaceCommitPick>, DaggerError> {
18546 let mut query = self.selection.select("compareCommitsFrom");
18547 query = query.arg_lazy(
18548 "source",
18549 Box::new(move || {
18550 let source = source.clone();
18551 Box::pin(async move { source.into_id().await.unwrap().quote() })
18552 }),
18553 );
18554 let query = query.select("id");
18555 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
18556 Ok(ids
18557 .into_iter()
18558 .map(|id| WorkspaceCommitPick {
18559 proc: self.proc.clone(),
18560 selection: crate::querybuilder::query()
18561 .select("node")
18562 .arg("id", &id.0)
18563 .inline_fragment("WorkspaceCommitPick"),
18564 graphql_client: self.graphql_client.clone(),
18565 })
18566 .collect())
18567 }
18568 pub async fn compare_commits_from_opts<'a>(
18577 &self,
18578 source: impl IntoID<Id>,
18579 opts: WorkspaceCompareCommitsFromOpts<'a>,
18580 ) -> Result<Vec<WorkspaceCommitPick>, DaggerError> {
18581 let mut query = self.selection.select("compareCommitsFrom");
18582 query = query.arg_lazy(
18583 "source",
18584 Box::new(move || {
18585 let source = source.clone();
18586 Box::pin(async move { source.into_id().await.unwrap().quote() })
18587 }),
18588 );
18589 if let Some(commits) = opts.commits {
18590 query = query.arg("commits", commits);
18591 }
18592 if let Some(max_commits) = opts.max_commits {
18593 query = query.arg("maxCommits", max_commits);
18594 }
18595 let query = query.select("id");
18596 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
18597 Ok(ids
18598 .into_iter()
18599 .map(|id| WorkspaceCommitPick {
18600 proc: self.proc.clone(),
18601 selection: crate::querybuilder::query()
18602 .select("node")
18603 .arg("id", &id.0)
18604 .inline_fragment("WorkspaceCommitPick"),
18605 graphql_client: self.graphql_client.clone(),
18606 })
18607 .collect())
18608 }
18609 pub fn with_commits_from(&self, source: impl IntoID<Id>) -> Workspace {
18619 let mut query = self.selection.select("withCommitsFrom");
18620 query = query.arg_lazy(
18621 "source",
18622 Box::new(move || {
18623 let source = source.clone();
18624 Box::pin(async move { source.into_id().await.unwrap().quote() })
18625 }),
18626 );
18627 Workspace {
18628 proc: self.proc.clone(),
18629 selection: query,
18630 graphql_client: self.graphql_client.clone(),
18631 }
18632 }
18633 pub fn with_commits_from_opts<'a>(
18643 &self,
18644 source: impl IntoID<Id>,
18645 opts: WorkspaceWithCommitsFromOpts<'a>,
18646 ) -> Workspace {
18647 let mut query = self.selection.select("withCommitsFrom");
18648 query = query.arg_lazy(
18649 "source",
18650 Box::new(move || {
18651 let source = source.clone();
18652 Box::pin(async move { source.into_id().await.unwrap().quote() })
18653 }),
18654 );
18655 if let Some(commits) = opts.commits {
18656 query = query.arg("commits", commits);
18657 }
18658 if let Some(max_commits) = opts.max_commits {
18659 query = query.arg("maxCommits", max_commits);
18660 }
18661 Workspace {
18662 proc: self.proc.clone(),
18663 selection: query,
18664 graphql_client: self.graphql_client.clone(),
18665 }
18666 }
18667 pub fn with_commit(
18679 &self,
18680 changes: impl IntoID<Id>,
18681 message: impl Into<String>,
18682 date: impl Into<String>,
18683 ) -> Workspace {
18684 let mut query = self.selection.select("withCommit");
18685 query = query.arg_lazy(
18686 "changes",
18687 Box::new(move || {
18688 let changes = changes.clone();
18689 Box::pin(async move { changes.into_id().await.unwrap().quote() })
18690 }),
18691 );
18692 query = query.arg("message", message.into());
18693 query = query.arg("date", date.into());
18694 Workspace {
18695 proc: self.proc.clone(),
18696 selection: query,
18697 graphql_client: self.graphql_client.clone(),
18698 }
18699 }
18700 pub fn with_commit_opts<'a>(
18712 &self,
18713 changes: impl IntoID<Id>,
18714 message: impl Into<String>,
18715 date: impl Into<String>,
18716 opts: WorkspaceWithCommitOpts<'a>,
18717 ) -> Workspace {
18718 let mut query = self.selection.select("withCommit");
18719 query = query.arg_lazy(
18720 "changes",
18721 Box::new(move || {
18722 let changes = changes.clone();
18723 Box::pin(async move { changes.into_id().await.unwrap().quote() })
18724 }),
18725 );
18726 query = query.arg("message", message.into());
18727 query = query.arg("date", date.into());
18728 if let Some(author_name) = opts.author_name {
18729 query = query.arg("authorName", author_name);
18730 }
18731 if let Some(author_email) = opts.author_email {
18732 query = query.arg("authorEmail", author_email);
18733 }
18734 if let Some(signoff) = opts.signoff {
18735 query = query.arg("signoff", signoff);
18736 }
18737 Workspace {
18738 proc: self.proc.clone(),
18739 selection: query,
18740 graphql_client: self.graphql_client.clone(),
18741 }
18742 }
18743 pub fn with_reset(&self, commit: impl Into<String>) -> Workspace {
18753 let mut query = self.selection.select("withReset");
18754 query = query.arg("commit", commit.into());
18755 Workspace {
18756 proc: self.proc.clone(),
18757 selection: query,
18758 graphql_client: self.graphql_client.clone(),
18759 }
18760 }
18761 pub fn with_reset_opts(
18771 &self,
18772 commit: impl Into<String>,
18773 opts: WorkspaceWithResetOpts,
18774 ) -> Workspace {
18775 let mut query = self.selection.select("withReset");
18776 query = query.arg("commit", commit.into());
18777 if let Some(hard) = opts.hard {
18778 query = query.arg("hard", hard);
18779 }
18780 Workspace {
18781 proc: self.proc.clone(),
18782 selection: query,
18783 graphql_client: self.graphql_client.clone(),
18784 }
18785 }
18786 pub fn snapshot(&self) -> Workspace {
18792 let query = self.selection.select("snapshot");
18793 Workspace {
18794 proc: self.proc.clone(),
18795 selection: query,
18796 graphql_client: self.graphql_client.clone(),
18797 }
18798 }
18799 pub fn with_config_paths(
18806 &self,
18807 config_file: impl Into<String>,
18808 lock_file: impl Into<String>,
18809 ) -> Workspace {
18810 let mut query = self.selection.select("withConfigPaths");
18811 query = query.arg("configFile", config_file.into());
18812 query = query.arg("lockFile", lock_file.into());
18813 Workspace {
18814 proc: self.proc.clone(),
18815 selection: query,
18816 graphql_client: self.graphql_client.clone(),
18817 }
18818 }
18819 pub fn with_config_environment(&self, name: impl Into<String>) -> Workspace {
18825 let mut query = self.selection.select("withConfigEnvironment");
18826 query = query.arg("name", name.into());
18827 Workspace {
18828 proc: self.proc.clone(),
18829 selection: query,
18830 graphql_client: self.graphql_client.clone(),
18831 }
18832 }
18833 pub fn with_user_config(&self) -> Workspace {
18837 let query = self.selection.select("withUserConfig");
18838 Workspace {
18839 proc: self.proc.clone(),
18840 selection: query,
18841 graphql_client: self.graphql_client.clone(),
18842 }
18843 }
18844 pub async fn config_file(&self) -> Result<String, DaggerError> {
18846 let query = self.selection.select("configFile");
18847 query.execute(self.graphql_client.clone()).await
18848 }
18849 pub fn directory(&self, path: impl Into<String>) -> Directory {
18857 let mut query = self.selection.select("directory");
18858 query = query.arg("path", path.into());
18859 Directory {
18860 proc: self.proc.clone(),
18861 selection: query,
18862 graphql_client: self.graphql_client.clone(),
18863 }
18864 }
18865 pub fn directory_opts<'a>(
18873 &self,
18874 path: impl Into<String>,
18875 opts: WorkspaceDirectoryOpts<'a>,
18876 ) -> Directory {
18877 let mut query = self.selection.select("directory");
18878 query = query.arg("path", path.into());
18879 if let Some(exclude) = opts.exclude {
18880 query = query.arg("exclude", exclude);
18881 }
18882 if let Some(include) = opts.include {
18883 query = query.arg("include", include);
18884 }
18885 if let Some(gitignore) = opts.gitignore {
18886 query = query.arg("gitignore", gitignore);
18887 }
18888 Directory {
18889 proc: self.proc.clone(),
18890 selection: query,
18891 graphql_client: self.graphql_client.clone(),
18892 }
18893 }
18894 pub fn file(&self, path: impl Into<String>) -> File {
18901 let mut query = self.selection.select("file");
18902 query = query.arg("path", path.into());
18903 File {
18904 proc: self.proc.clone(),
18905 selection: query,
18906 graphql_client: self.graphql_client.clone(),
18907 }
18908 }
18909 pub async fn glob(&self, pattern: impl Into<String>) -> Result<Vec<String>, DaggerError> {
18916 let mut query = self.selection.select("glob");
18917 query = query.arg("pattern", pattern.into());
18918 query.execute(self.graphql_client.clone()).await
18919 }
18920 pub async fn search(
18929 &self,
18930 pattern: impl Into<String>,
18931 ) -> Result<Vec<SearchResult>, DaggerError> {
18932 let mut query = self.selection.select("search");
18933 query = query.arg("pattern", pattern.into());
18934 let query = query.select("id");
18935 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
18936 Ok(ids
18937 .into_iter()
18938 .map(|id| SearchResult {
18939 proc: self.proc.clone(),
18940 selection: crate::querybuilder::query()
18941 .select("node")
18942 .arg("id", &id.0)
18943 .inline_fragment("SearchResult"),
18944 graphql_client: self.graphql_client.clone(),
18945 })
18946 .collect())
18947 }
18948 pub async fn search_opts<'a>(
18957 &self,
18958 pattern: impl Into<String>,
18959 opts: WorkspaceSearchOpts<'a>,
18960 ) -> Result<Vec<SearchResult>, DaggerError> {
18961 let mut query = self.selection.select("search");
18962 query = query.arg("pattern", pattern.into());
18963 if let Some(paths) = opts.paths {
18964 query = query.arg("paths", paths);
18965 }
18966 if let Some(globs) = opts.globs {
18967 query = query.arg("globs", globs);
18968 }
18969 if let Some(literal) = opts.literal {
18970 query = query.arg("literal", literal);
18971 }
18972 if let Some(multiline) = opts.multiline {
18973 query = query.arg("multiline", multiline);
18974 }
18975 if let Some(dotall) = opts.dotall {
18976 query = query.arg("dotall", dotall);
18977 }
18978 if let Some(insensitive) = opts.insensitive {
18979 query = query.arg("insensitive", insensitive);
18980 }
18981 if let Some(skip_ignored) = opts.skip_ignored {
18982 query = query.arg("skipIgnored", skip_ignored);
18983 }
18984 if let Some(skip_hidden) = opts.skip_hidden {
18985 query = query.arg("skipHidden", skip_hidden);
18986 }
18987 if let Some(files_only) = opts.files_only {
18988 query = query.arg("filesOnly", files_only);
18989 }
18990 if let Some(limit) = opts.limit {
18991 query = query.arg("limit", limit);
18992 }
18993 let query = query.select("id");
18994 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
18995 Ok(ids
18996 .into_iter()
18997 .map(|id| SearchResult {
18998 proc: self.proc.clone(),
18999 selection: crate::querybuilder::query()
19000 .select("node")
19001 .arg("id", &id.0)
19002 .inline_fragment("SearchResult"),
19003 graphql_client: self.graphql_client.clone(),
19004 })
19005 .collect())
19006 }
19007 pub async fn find_up(&self, name: impl Into<String>) -> Result<String, DaggerError> {
19017 let mut query = self.selection.select("findUp");
19018 query = query.arg("name", name.into());
19019 query.execute(self.graphql_client.clone()).await
19020 }
19021 pub async fn find_up_opts<'a>(
19031 &self,
19032 name: impl Into<String>,
19033 opts: WorkspaceFindUpOpts<'a>,
19034 ) -> Result<String, DaggerError> {
19035 let mut query = self.selection.select("findUp");
19036 query = query.arg("name", name.into());
19037 if let Some(from) = opts.from {
19038 query = query.arg("from", from);
19039 }
19040 query.execute(self.graphql_client.clone()).await
19041 }
19042 pub async fn find_roots(
19051 &self,
19052 markers: Vec<impl Into<String>>,
19053 ) -> Result<Vec<String>, DaggerError> {
19054 let mut query = self.selection.select("findRoots");
19055 query = query.arg(
19056 "markers",
19057 markers
19058 .into_iter()
19059 .map(|i| i.into())
19060 .collect::<Vec<String>>(),
19061 );
19062 query.execute(self.graphql_client.clone()).await
19063 }
19064 pub async fn find_roots_opts<'a>(
19073 &self,
19074 markers: Vec<impl Into<String>>,
19075 opts: WorkspaceFindRootsOpts<'a>,
19076 ) -> Result<Vec<String>, DaggerError> {
19077 let mut query = self.selection.select("findRoots");
19078 query = query.arg(
19079 "markers",
19080 markers
19081 .into_iter()
19082 .map(|i| i.into())
19083 .collect::<Vec<String>>(),
19084 );
19085 if let Some(start) = opts.start {
19086 query = query.arg("start", start);
19087 }
19088 if let Some(exclude) = opts.exclude {
19089 query = query.arg("exclude", exclude);
19090 }
19091 query.execute(self.graphql_client.clone()).await
19092 }
19093 pub fn git(&self) -> WorkspaceGit {
19095 let query = self.selection.select("git");
19096 WorkspaceGit {
19097 proc: self.proc.clone(),
19098 selection: query,
19099 graphql_client: self.graphql_client.clone(),
19100 }
19101 }
19102 pub fn with_new_file(&self, path: impl Into<String>, contents: impl Into<String>) -> Workspace {
19110 let mut query = self.selection.select("withNewFile");
19111 query = query.arg("path", path.into());
19112 query = query.arg("contents", contents.into());
19113 Workspace {
19114 proc: self.proc.clone(),
19115 selection: query,
19116 graphql_client: self.graphql_client.clone(),
19117 }
19118 }
19119 pub fn with_new_file_opts(
19127 &self,
19128 path: impl Into<String>,
19129 contents: impl Into<String>,
19130 opts: WorkspaceWithNewFileOpts,
19131 ) -> Workspace {
19132 let mut query = self.selection.select("withNewFile");
19133 query = query.arg("path", path.into());
19134 query = query.arg("contents", contents.into());
19135 if let Some(permissions) = opts.permissions {
19136 query = query.arg("permissions", permissions);
19137 }
19138 Workspace {
19139 proc: self.proc.clone(),
19140 selection: query,
19141 graphql_client: self.graphql_client.clone(),
19142 }
19143 }
19144 pub fn with_file(&self, path: impl Into<String>, source: impl IntoID<Id>) -> Workspace {
19152 let mut query = self.selection.select("withFile");
19153 query = query.arg("path", path.into());
19154 query = query.arg_lazy(
19155 "source",
19156 Box::new(move || {
19157 let source = source.clone();
19158 Box::pin(async move { source.into_id().await.unwrap().quote() })
19159 }),
19160 );
19161 Workspace {
19162 proc: self.proc.clone(),
19163 selection: query,
19164 graphql_client: self.graphql_client.clone(),
19165 }
19166 }
19167 pub fn with_file_opts(
19175 &self,
19176 path: impl Into<String>,
19177 source: impl IntoID<Id>,
19178 opts: WorkspaceWithFileOpts,
19179 ) -> Workspace {
19180 let mut query = self.selection.select("withFile");
19181 query = query.arg("path", path.into());
19182 query = query.arg_lazy(
19183 "source",
19184 Box::new(move || {
19185 let source = source.clone();
19186 Box::pin(async move { source.into_id().await.unwrap().quote() })
19187 }),
19188 );
19189 if let Some(permissions) = opts.permissions {
19190 query = query.arg("permissions", permissions);
19191 }
19192 Workspace {
19193 proc: self.proc.clone(),
19194 selection: query,
19195 graphql_client: self.graphql_client.clone(),
19196 }
19197 }
19198 pub fn with_new_directory(
19206 &self,
19207 path: impl Into<String>,
19208 source: impl IntoID<Id>,
19209 ) -> Workspace {
19210 let mut query = self.selection.select("withNewDirectory");
19211 query = query.arg("path", path.into());
19212 query = query.arg_lazy(
19213 "source",
19214 Box::new(move || {
19215 let source = source.clone();
19216 Box::pin(async move { source.into_id().await.unwrap().quote() })
19217 }),
19218 );
19219 Workspace {
19220 proc: self.proc.clone(),
19221 selection: query,
19222 graphql_client: self.graphql_client.clone(),
19223 }
19224 }
19225 pub fn with_directory(&self, path: impl Into<String>, source: impl IntoID<Id>) -> Workspace {
19233 let mut query = self.selection.select("withDirectory");
19234 query = query.arg("path", path.into());
19235 query = query.arg_lazy(
19236 "source",
19237 Box::new(move || {
19238 let source = source.clone();
19239 Box::pin(async move { source.into_id().await.unwrap().quote() })
19240 }),
19241 );
19242 Workspace {
19243 proc: self.proc.clone(),
19244 selection: query,
19245 graphql_client: self.graphql_client.clone(),
19246 }
19247 }
19248 pub fn without_file(&self, path: impl Into<String>) -> Workspace {
19254 let mut query = self.selection.select("withoutFile");
19255 query = query.arg("path", path.into());
19256 Workspace {
19257 proc: self.proc.clone(),
19258 selection: query,
19259 graphql_client: self.graphql_client.clone(),
19260 }
19261 }
19262 pub fn without_files(&self, paths: Vec<impl Into<String>>) -> Workspace {
19268 let mut query = self.selection.select("withoutFiles");
19269 query = query.arg(
19270 "paths",
19271 paths.into_iter().map(|i| i.into()).collect::<Vec<String>>(),
19272 );
19273 Workspace {
19274 proc: self.proc.clone(),
19275 selection: query,
19276 graphql_client: self.graphql_client.clone(),
19277 }
19278 }
19279 pub fn without_directory(&self, path: impl Into<String>) -> Workspace {
19285 let mut query = self.selection.select("withoutDirectory");
19286 query = query.arg("path", path.into());
19287 Workspace {
19288 proc: self.proc.clone(),
19289 selection: query,
19290 graphql_client: self.graphql_client.clone(),
19291 }
19292 }
19293 pub fn with_changes(&self, changes: impl IntoID<Id>) -> Workspace {
19299 let mut query = self.selection.select("withChanges");
19300 query = query.arg_lazy(
19301 "changes",
19302 Box::new(move || {
19303 let changes = changes.clone();
19304 Box::pin(async move { changes.into_id().await.unwrap().quote() })
19305 }),
19306 );
19307 Workspace {
19308 proc: self.proc.clone(),
19309 selection: query,
19310 graphql_client: self.graphql_client.clone(),
19311 }
19312 }
19313 pub fn with_patch_file(&self, patch: impl IntoID<Id>) -> Workspace {
19321 let mut query = self.selection.select("withPatchFile");
19322 query = query.arg_lazy(
19323 "patch",
19324 Box::new(move || {
19325 let patch = patch.clone();
19326 Box::pin(async move { patch.into_id().await.unwrap().quote() })
19327 }),
19328 );
19329 Workspace {
19330 proc: self.proc.clone(),
19331 selection: query,
19332 graphql_client: self.graphql_client.clone(),
19333 }
19334 }
19335 pub fn with_patch_file_opts(
19343 &self,
19344 patch: impl IntoID<Id>,
19345 opts: WorkspaceWithPatchFileOpts,
19346 ) -> Workspace {
19347 let mut query = self.selection.select("withPatchFile");
19348 query = query.arg_lazy(
19349 "patch",
19350 Box::new(move || {
19351 let patch = patch.clone();
19352 Box::pin(async move { patch.into_id().await.unwrap().quote() })
19353 }),
19354 );
19355 if let Some(on_conflict) = opts.on_conflict {
19356 query = query.arg("onConflict", on_conflict);
19357 }
19358 Workspace {
19359 proc: self.proc.clone(),
19360 selection: query,
19361 graphql_client: self.graphql_client.clone(),
19362 }
19363 }
19364 pub fn with_workdir(&self, path: impl Into<String>) -> Workspace {
19370 let mut query = self.selection.select("withWorkdir");
19371 query = query.arg("path", path.into());
19372 Workspace {
19373 proc: self.proc.clone(),
19374 selection: query,
19375 graphql_client: self.graphql_client.clone(),
19376 }
19377 }
19378 pub fn with_mounted_directory(
19386 &self,
19387 path: impl Into<String>,
19388 source: impl IntoID<Id>,
19389 ) -> Workspace {
19390 let mut query = self.selection.select("withMountedDirectory");
19391 query = query.arg("path", path.into());
19392 query = query.arg_lazy(
19393 "source",
19394 Box::new(move || {
19395 let source = source.clone();
19396 Box::pin(async move { source.into_id().await.unwrap().quote() })
19397 }),
19398 );
19399 Workspace {
19400 proc: self.proc.clone(),
19401 selection: query,
19402 graphql_client: self.graphql_client.clone(),
19403 }
19404 }
19405 pub fn with_mounted_file(&self, path: impl Into<String>, source: impl IntoID<Id>) -> Workspace {
19413 let mut query = self.selection.select("withMountedFile");
19414 query = query.arg("path", path.into());
19415 query = query.arg_lazy(
19416 "source",
19417 Box::new(move || {
19418 let source = source.clone();
19419 Box::pin(async move { source.into_id().await.unwrap().quote() })
19420 }),
19421 );
19422 Workspace {
19423 proc: self.proc.clone(),
19424 selection: query,
19425 graphql_client: self.graphql_client.clone(),
19426 }
19427 }
19428 pub fn without_mount(&self, path: impl Into<String>) -> Workspace {
19435 let mut query = self.selection.select("withoutMount");
19436 query = query.arg("path", path.into());
19437 Workspace {
19438 proc: self.proc.clone(),
19439 selection: query,
19440 graphql_client: self.graphql_client.clone(),
19441 }
19442 }
19443 pub fn with_module(&self, r#ref: impl Into<String>) -> Workspace {
19451 let mut query = self.selection.select("withModule");
19452 query = query.arg("ref", r#ref.into());
19453 Workspace {
19454 proc: self.proc.clone(),
19455 selection: query,
19456 graphql_client: self.graphql_client.clone(),
19457 }
19458 }
19459 pub fn with_module_opts<'a>(
19467 &self,
19468 r#ref: impl Into<String>,
19469 opts: WorkspaceWithModuleOpts<'a>,
19470 ) -> Workspace {
19471 let mut query = self.selection.select("withModule");
19472 query = query.arg("ref", r#ref.into());
19473 if let Some(name) = opts.name {
19474 query = query.arg("name", name);
19475 }
19476 if let Some(here) = opts.here {
19477 query = query.arg("here", here);
19478 }
19479 Workspace {
19480 proc: self.proc.clone(),
19481 selection: query,
19482 graphql_client: self.graphql_client.clone(),
19483 }
19484 }
19485 pub fn without_module(&self, name: impl Into<String>) -> Workspace {
19493 let mut query = self.selection.select("withoutModule");
19494 query = query.arg("name", name.into());
19495 Workspace {
19496 proc: self.proc.clone(),
19497 selection: query,
19498 graphql_client: self.graphql_client.clone(),
19499 }
19500 }
19501 pub fn without_module_opts(
19509 &self,
19510 name: impl Into<String>,
19511 opts: WorkspaceWithoutModuleOpts,
19512 ) -> Workspace {
19513 let mut query = self.selection.select("withoutModule");
19514 query = query.arg("name", name.into());
19515 if let Some(here) = opts.here {
19516 query = query.arg("here", here);
19517 }
19518 Workspace {
19519 proc: self.proc.clone(),
19520 selection: query,
19521 graphql_client: self.graphql_client.clone(),
19522 }
19523 }
19524 pub fn with_sdk(&self, r#ref: impl Into<String>) -> Workspace {
19531 let mut query = self.selection.select("withSDK");
19532 query = query.arg("ref", r#ref.into());
19533 Workspace {
19534 proc: self.proc.clone(),
19535 selection: query,
19536 graphql_client: self.graphql_client.clone(),
19537 }
19538 }
19539 pub fn with_sdk_opts<'a>(
19546 &self,
19547 r#ref: impl Into<String>,
19548 opts: WorkspaceWithSdkOpts<'a>,
19549 ) -> Workspace {
19550 let mut query = self.selection.select("withSDK");
19551 query = query.arg("ref", r#ref.into());
19552 if let Some(name) = opts.name {
19553 query = query.arg("name", name);
19554 }
19555 if let Some(here) = opts.here {
19556 query = query.arg("here", here);
19557 }
19558 if let Some(as_sdk_name) = opts.as_sdk_name {
19559 query = query.arg("asSdkName", as_sdk_name);
19560 }
19561 Workspace {
19562 proc: self.proc.clone(),
19563 selection: query,
19564 graphql_client: self.graphql_client.clone(),
19565 }
19566 }
19567 pub fn without_sdk(&self, name: impl Into<String>) -> Workspace {
19574 let mut query = self.selection.select("withoutSDK");
19575 query = query.arg("name", name.into());
19576 Workspace {
19577 proc: self.proc.clone(),
19578 selection: query,
19579 graphql_client: self.graphql_client.clone(),
19580 }
19581 }
19582 pub fn without_sdk_opts(
19589 &self,
19590 name: impl Into<String>,
19591 opts: WorkspaceWithoutSdkOpts,
19592 ) -> Workspace {
19593 let mut query = self.selection.select("withoutSDK");
19594 query = query.arg("name", name.into());
19595 if let Some(here) = opts.here {
19596 query = query.arg("here", here);
19597 }
19598 Workspace {
19599 proc: self.proc.clone(),
19600 selection: query,
19601 graphql_client: self.graphql_client.clone(),
19602 }
19603 }
19604 pub fn with_entrypoint(&self, name: impl Into<String>) -> Workspace {
19611 let mut query = self.selection.select("withEntrypoint");
19612 query = query.arg("name", name.into());
19613 Workspace {
19614 proc: self.proc.clone(),
19615 selection: query,
19616 graphql_client: self.graphql_client.clone(),
19617 }
19618 }
19619 pub fn without_entrypoint(&self) -> Workspace {
19621 let query = self.selection.select("withoutEntrypoint");
19622 Workspace {
19623 proc: self.proc.clone(),
19624 selection: query,
19625 graphql_client: self.graphql_client.clone(),
19626 }
19627 }
19628 pub fn with_init_module(&self, sdk: impl Into<String>) -> Workspace {
19636 let mut query = self.selection.select("withInitModule");
19637 query = query.arg("sdk", sdk.into());
19638 Workspace {
19639 proc: self.proc.clone(),
19640 selection: query,
19641 graphql_client: self.graphql_client.clone(),
19642 }
19643 }
19644 pub fn with_init_module_opts<'a>(
19652 &self,
19653 sdk: impl Into<String>,
19654 opts: WorkspaceWithInitModuleOpts<'a>,
19655 ) -> Workspace {
19656 let mut query = self.selection.select("withInitModule");
19657 query = query.arg("sdk", sdk.into());
19658 if let Some(name) = opts.name {
19659 query = query.arg("name", name);
19660 }
19661 if let Some(path) = opts.path {
19662 query = query.arg("path", path);
19663 }
19664 if let Some(install) = opts.install {
19665 query = query.arg("install", install);
19666 }
19667 if let Some(entrypoint) = opts.entrypoint {
19668 query = query.arg("entrypoint", entrypoint);
19669 }
19670 if let Some(settings) = opts.settings {
19671 query = query.arg("settings", settings);
19672 }
19673 Workspace {
19674 proc: self.proc.clone(),
19675 selection: query,
19676 graphql_client: self.graphql_client.clone(),
19677 }
19678 }
19679 pub async fn detect_scope(&self, sdk: impl Into<String>) -> Result<String, DaggerError> {
19685 let mut query = self.selection.select("detectScope");
19686 query = query.arg("sdk", sdk.into());
19687 query.execute(self.graphql_client.clone()).await
19688 }
19689 pub fn with_client(&self, module: impl Into<String>) -> Workspace {
19697 let mut query = self.selection.select("withClient");
19698 query = query.arg("module", module.into());
19699 Workspace {
19700 proc: self.proc.clone(),
19701 selection: query,
19702 graphql_client: self.graphql_client.clone(),
19703 }
19704 }
19705 pub fn with_client_opts<'a>(
19713 &self,
19714 module: impl Into<String>,
19715 opts: WorkspaceWithClientOpts<'a>,
19716 ) -> Workspace {
19717 let mut query = self.selection.select("withClient");
19718 query = query.arg("module", module.into());
19719 if let Some(sdk) = opts.sdk {
19720 query = query.arg("sdk", sdk);
19721 }
19722 if let Some(settings) = opts.settings {
19723 query = query.arg("settings", settings);
19724 }
19725 Workspace {
19726 proc: self.proc.clone(),
19727 selection: query,
19728 graphql_client: self.graphql_client.clone(),
19729 }
19730 }
19731 pub fn without_client(&self, module: impl Into<String>) -> Workspace {
19740 let mut query = self.selection.select("withoutClient");
19741 query = query.arg("module", module.into());
19742 Workspace {
19743 proc: self.proc.clone(),
19744 selection: query,
19745 graphql_client: self.graphql_client.clone(),
19746 }
19747 }
19748 pub fn without_client_opts<'a>(
19757 &self,
19758 module: impl Into<String>,
19759 opts: WorkspaceWithoutClientOpts<'a>,
19760 ) -> Workspace {
19761 let mut query = self.selection.select("withoutClient");
19762 query = query.arg("module", module.into());
19763 if let Some(sdk) = opts.sdk {
19764 query = query.arg("sdk", sdk);
19765 }
19766 Workspace {
19767 proc: self.proc.clone(),
19768 selection: query,
19769 graphql_client: self.graphql_client.clone(),
19770 }
19771 }
19772 pub fn with_updated_clients(&self) -> Workspace {
19780 let query = self.selection.select("withUpdatedClients");
19781 Workspace {
19782 proc: self.proc.clone(),
19783 selection: query,
19784 graphql_client: self.graphql_client.clone(),
19785 }
19786 }
19787 pub fn with_updated_clients_opts<'a>(
19795 &self,
19796 opts: WorkspaceWithUpdatedClientsOpts<'a>,
19797 ) -> Workspace {
19798 let mut query = self.selection.select("withUpdatedClients");
19799 if let Some(modules) = opts.modules {
19800 query = query.arg("modules", modules);
19801 }
19802 if let Some(all) = opts.all {
19803 query = query.arg("all", all);
19804 }
19805 if let Some(sdk) = opts.sdk {
19806 query = query.arg("sdk", sdk);
19807 }
19808 Workspace {
19809 proc: self.proc.clone(),
19810 selection: query,
19811 graphql_client: self.graphql_client.clone(),
19812 }
19813 }
19814 pub fn with_config_value(&self, key: impl Into<String>, value: impl Into<String>) -> Workspace {
19823 let mut query = self.selection.select("withConfigValue");
19824 query = query.arg("key", key.into());
19825 query = query.arg("value", value.into());
19826 Workspace {
19827 proc: self.proc.clone(),
19828 selection: query,
19829 graphql_client: self.graphql_client.clone(),
19830 }
19831 }
19832 pub fn with_config_value_opts<'a>(
19841 &self,
19842 key: impl Into<String>,
19843 value: impl Into<String>,
19844 opts: WorkspaceWithConfigValueOpts<'a>,
19845 ) -> Workspace {
19846 let mut query = self.selection.select("withConfigValue");
19847 query = query.arg("key", key.into());
19848 query = query.arg("value", value.into());
19849 if let Some(values) = opts.values {
19850 query = query.arg("values", values);
19851 }
19852 if let Some(here) = opts.here {
19853 query = query.arg("here", here);
19854 }
19855 Workspace {
19856 proc: self.proc.clone(),
19857 selection: query,
19858 graphql_client: self.graphql_client.clone(),
19859 }
19860 }
19861 pub fn without_config_value(&self, key: impl Into<String>) -> Workspace {
19870 let mut query = self.selection.select("withoutConfigValue");
19871 query = query.arg("key", key.into());
19872 Workspace {
19873 proc: self.proc.clone(),
19874 selection: query,
19875 graphql_client: self.graphql_client.clone(),
19876 }
19877 }
19878 pub fn without_config_value_opts(
19887 &self,
19888 key: impl Into<String>,
19889 opts: WorkspaceWithoutConfigValueOpts,
19890 ) -> Workspace {
19891 let mut query = self.selection.select("withoutConfigValue");
19892 query = query.arg("key", key.into());
19893 if let Some(here) = opts.here {
19894 query = query.arg("here", here);
19895 }
19896 Workspace {
19897 proc: self.proc.clone(),
19898 selection: query,
19899 graphql_client: self.graphql_client.clone(),
19900 }
19901 }
19902 pub fn with_config_env(&self, name: impl Into<String>) -> Workspace {
19909 let mut query = self.selection.select("withConfigEnv");
19910 query = query.arg("name", name.into());
19911 Workspace {
19912 proc: self.proc.clone(),
19913 selection: query,
19914 graphql_client: self.graphql_client.clone(),
19915 }
19916 }
19917 pub fn with_config_env_opts(
19924 &self,
19925 name: impl Into<String>,
19926 opts: WorkspaceWithConfigEnvOpts,
19927 ) -> Workspace {
19928 let mut query = self.selection.select("withConfigEnv");
19929 query = query.arg("name", name.into());
19930 if let Some(here) = opts.here {
19931 query = query.arg("here", here);
19932 }
19933 Workspace {
19934 proc: self.proc.clone(),
19935 selection: query,
19936 graphql_client: self.graphql_client.clone(),
19937 }
19938 }
19939 pub fn without_config_env(&self, name: impl Into<String>) -> Workspace {
19946 let mut query = self.selection.select("withoutConfigEnv");
19947 query = query.arg("name", name.into());
19948 Workspace {
19949 proc: self.proc.clone(),
19950 selection: query,
19951 graphql_client: self.graphql_client.clone(),
19952 }
19953 }
19954 pub fn without_config_env_opts(
19961 &self,
19962 name: impl Into<String>,
19963 opts: WorkspaceWithoutConfigEnvOpts,
19964 ) -> Workspace {
19965 let mut query = self.selection.select("withoutConfigEnv");
19966 query = query.arg("name", name.into());
19967 if let Some(here) = opts.here {
19968 query = query.arg("here", here);
19969 }
19970 Workspace {
19971 proc: self.proc.clone(),
19972 selection: query,
19973 graphql_client: self.graphql_client.clone(),
19974 }
19975 }
19976 pub fn with_updated_lock(&self) -> Workspace {
19983 let query = self.selection.select("withUpdatedLock");
19984 Workspace {
19985 proc: self.proc.clone(),
19986 selection: query,
19987 graphql_client: self.graphql_client.clone(),
19988 }
19989 }
19990 pub fn with_updated_lock_opts(&self, opts: WorkspaceWithUpdatedLockOpts) -> Workspace {
19997 let mut query = self.selection.select("withUpdatedLock");
19998 if let Some(no_generate) = opts.no_generate {
19999 query = query.arg("noGenerate", no_generate);
20000 }
20001 Workspace {
20002 proc: self.proc.clone(),
20003 selection: query,
20004 graphql_client: self.graphql_client.clone(),
20005 }
20006 }
20007 pub fn with_updated_modules(&self) -> Workspace {
20014 let query = self.selection.select("withUpdatedModules");
20015 Workspace {
20016 proc: self.proc.clone(),
20017 selection: query,
20018 graphql_client: self.graphql_client.clone(),
20019 }
20020 }
20021 pub fn with_updated_modules_opts<'a>(
20028 &self,
20029 opts: WorkspaceWithUpdatedModulesOpts<'a>,
20030 ) -> Workspace {
20031 let mut query = self.selection.select("withUpdatedModules");
20032 if let Some(names) = opts.names {
20033 query = query.arg("names", names);
20034 }
20035 if let Some(version) = opts.version {
20036 query = query.arg("version", version);
20037 }
20038 if let Some(source) = opts.source {
20039 query = query.arg("source", source);
20040 }
20041 Workspace {
20042 proc: self.proc.clone(),
20043 selection: query,
20044 graphql_client: self.graphql_client.clone(),
20045 }
20046 }
20047 pub async fn sdks(&self) -> Result<Vec<WorkspaceSdk>, DaggerError> {
20049 let query = self.selection.select("sdks");
20050 let query = query.select("id");
20051 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
20052 Ok(ids
20053 .into_iter()
20054 .map(|id| WorkspaceSdk {
20055 proc: self.proc.clone(),
20056 selection: crate::querybuilder::query()
20057 .select("node")
20058 .arg("id", &id.0)
20059 .inline_fragment("WorkspaceSDK"),
20060 graphql_client: self.graphql_client.clone(),
20061 })
20062 .collect())
20063 }
20064 pub fn sdk(&self, name: impl Into<String>) -> WorkspaceSdk {
20070 let mut query = self.selection.select("sdk");
20071 query = query.arg("name", name.into());
20072 WorkspaceSdk {
20073 proc: self.proc.clone(),
20074 selection: query,
20075 graphql_client: self.graphql_client.clone(),
20076 }
20077 }
20078 pub fn changes(&self) -> Changeset {
20085 let query = self.selection.select("changes");
20086 Changeset {
20087 proc: self.proc.clone(),
20088 selection: query,
20089 graphql_client: self.graphql_client.clone(),
20090 }
20091 }
20092 pub fn changes_opts(&self, opts: WorkspaceChangesOpts) -> Changeset {
20099 let mut query = self.selection.select("changes");
20100 if let Some(from) = opts.from {
20101 query = query.arg("from", from);
20102 }
20103 Changeset {
20104 proc: self.proc.clone(),
20105 selection: query,
20106 graphql_client: self.graphql_client.clone(),
20107 }
20108 }
20109 pub async fn export(&self) -> Result<Void, DaggerError> {
20118 let query = self.selection.select("export");
20119 query.execute(self.graphql_client.clone()).await
20120 }
20121 pub async fn export_opts<'a>(
20130 &self,
20131 opts: WorkspaceExportOpts<'a>,
20132 ) -> Result<Void, DaggerError> {
20133 let mut query = self.selection.select("export");
20134 if let Some(path) = opts.path {
20135 query = query.arg("path", path);
20136 }
20137 if let Some(from) = opts.from {
20138 query = query.arg("from", from);
20139 }
20140 query.execute(self.graphql_client.clone()).await
20141 }
20142 pub async fn config_read(&self) -> Result<String, DaggerError> {
20151 let query = self.selection.select("configRead");
20152 query.execute(self.graphql_client.clone()).await
20153 }
20154 pub async fn config_read_opts<'a>(
20163 &self,
20164 opts: WorkspaceConfigReadOpts<'a>,
20165 ) -> Result<String, DaggerError> {
20166 let mut query = self.selection.select("configRead");
20167 if let Some(key) = opts.key {
20168 query = query.arg("key", key);
20169 }
20170 if let Some(effective) = opts.effective {
20171 query = query.arg("effective", effective);
20172 }
20173 query.execute(self.graphql_client.clone()).await
20174 }
20175 pub async fn entrypoint(&self) -> Result<String, DaggerError> {
20178 let query = self.selection.select("entrypoint");
20179 query.execute(self.graphql_client.clone()).await
20180 }
20181 pub async fn env_list(&self) -> Result<Vec<String>, DaggerError> {
20183 let query = self.selection.select("envList");
20184 query.execute(self.graphql_client.clone()).await
20185 }
20186 pub async fn modules(&self) -> Result<Vec<WorkspaceModule>, DaggerError> {
20189 let query = self.selection.select("modules");
20190 let query = query.select("id");
20191 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
20192 Ok(ids
20193 .into_iter()
20194 .map(|id| WorkspaceModule {
20195 proc: self.proc.clone(),
20196 selection: crate::querybuilder::query()
20197 .select("node")
20198 .arg("id", &id.0)
20199 .inline_fragment("WorkspaceModule"),
20200 graphql_client: self.graphql_client.clone(),
20201 })
20202 .collect())
20203 }
20204 pub fn module(&self, name: impl Into<String>) -> WorkspaceModule {
20211 let mut query = self.selection.select("module");
20212 query = query.arg("name", name.into());
20213 WorkspaceModule {
20214 proc: self.proc.clone(),
20215 selection: query,
20216 graphql_client: self.graphql_client.clone(),
20217 }
20218 }
20219 pub fn module_source(&self, path: impl Into<String>) -> ModuleSource {
20227 let mut query = self.selection.select("moduleSource");
20228 query = query.arg("path", path.into());
20229 ModuleSource {
20230 proc: self.proc.clone(),
20231 selection: query,
20232 graphql_client: self.graphql_client.clone(),
20233 }
20234 }
20235 pub async fn cwd(&self) -> Result<String, DaggerError> {
20239 let query = self.selection.select("cwd");
20240 query.execute(self.graphql_client.clone()).await
20241 }
20242 pub fn artifacts(&self) -> Artifacts {
20248 let query = self.selection.select("artifacts");
20249 Artifacts {
20250 proc: self.proc.clone(),
20251 selection: query,
20252 graphql_client: self.graphql_client.clone(),
20253 }
20254 }
20255 pub fn artifacts_opts<'a>(&self, opts: WorkspaceArtifactsOpts<'a>) -> Artifacts {
20261 let mut query = self.selection.select("artifacts");
20262 if let Some(include) = opts.include {
20263 query = query.arg("include", include);
20264 }
20265 Artifacts {
20266 proc: self.proc.clone(),
20267 selection: query,
20268 graphql_client: self.graphql_client.clone(),
20269 }
20270 }
20271 pub fn migrate(&self) -> WorkspaceMigration {
20279 let query = self.selection.select("migrate");
20280 WorkspaceMigration {
20281 proc: self.proc.clone(),
20282 selection: query,
20283 graphql_client: self.graphql_client.clone(),
20284 }
20285 }
20286 pub fn migrate_opts<'a>(&self, opts: WorkspaceMigrateOpts<'a>) -> WorkspaceMigration {
20294 let mut query = self.selection.select("migrate");
20295 if let Some(modules) = opts.modules {
20296 query = query.arg("modules", modules);
20297 }
20298 WorkspaceMigration {
20299 proc: self.proc.clone(),
20300 selection: query,
20301 graphql_client: self.graphql_client.clone(),
20302 }
20303 }
20304 pub async fn address(&self) -> Result<String, DaggerError> {
20306 let query = self.selection.select("address");
20307 query.execute(self.graphql_client.clone()).await
20308 }
20309}
20310impl Node for Workspace {
20311 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
20312 let query = self.selection.select("id");
20313 let graphql_client = self.graphql_client.clone();
20314 async move { query.execute(graphql_client).await }
20315 }
20316}
20317#[derive(Clone)]
20318pub struct WorkspaceCommitPick {
20319 pub proc: Option<Arc<DaggerSessionProc>>,
20320 pub selection: Selection,
20321 pub graphql_client: DynGraphQLClient,
20322}
20323impl IntoID<Id> for WorkspaceCommitPick {
20324 fn into_id(
20325 self,
20326 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
20327 Box::pin(async move { self.id().await })
20328 }
20329}
20330impl Loadable for WorkspaceCommitPick {
20331 fn graphql_type() -> &'static str {
20332 "WorkspaceCommitPick"
20333 }
20334 fn from_query(
20335 proc: Option<Arc<DaggerSessionProc>>,
20336 selection: Selection,
20337 graphql_client: DynGraphQLClient,
20338 ) -> Self {
20339 Self {
20340 proc,
20341 selection,
20342 graphql_client,
20343 }
20344 }
20345}
20346impl WorkspaceCommitPick {
20347 pub async fn id(&self) -> Result<Id, DaggerError> {
20349 let query = self.selection.select("id");
20350 query.execute(self.graphql_client.clone()).await
20351 }
20352 pub fn commit(&self) -> GitCommit {
20354 let query = self.selection.select("commit");
20355 GitCommit {
20356 proc: self.proc.clone(),
20357 selection: query,
20358 graphql_client: self.graphql_client.clone(),
20359 }
20360 }
20361 pub async fn status(&self) -> Result<WorkspaceCommitPickStatus, DaggerError> {
20363 let query = self.selection.select("status");
20364 query.execute(self.graphql_client.clone()).await
20365 }
20366 pub async fn reason(&self) -> Result<WorkspaceCommitPickReason, DaggerError> {
20368 let query = self.selection.select("reason");
20369 query.execute(self.graphql_client.clone()).await
20370 }
20371 pub async fn conflict_paths(&self) -> Result<Vec<String>, DaggerError> {
20373 let query = self.selection.select("conflictPaths");
20374 query.execute(self.graphql_client.clone()).await
20375 }
20376}
20377impl Node for WorkspaceCommitPick {
20378 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
20379 let query = self.selection.select("id");
20380 let graphql_client = self.graphql_client.clone();
20381 async move { query.execute(graphql_client).await }
20382 }
20383}
20384#[derive(Clone)]
20385pub struct WorkspaceGit {
20386 pub proc: Option<Arc<DaggerSessionProc>>,
20387 pub selection: Selection,
20388 pub graphql_client: DynGraphQLClient,
20389}
20390impl IntoID<Id> for WorkspaceGit {
20391 fn into_id(
20392 self,
20393 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
20394 Box::pin(async move { self.id().await })
20395 }
20396}
20397impl Loadable for WorkspaceGit {
20398 fn graphql_type() -> &'static str {
20399 "WorkspaceGit"
20400 }
20401 fn from_query(
20402 proc: Option<Arc<DaggerSessionProc>>,
20403 selection: Selection,
20404 graphql_client: DynGraphQLClient,
20405 ) -> Self {
20406 Self {
20407 proc,
20408 selection,
20409 graphql_client,
20410 }
20411 }
20412}
20413impl WorkspaceGit {
20414 pub async fn id(&self) -> Result<Id, DaggerError> {
20416 let query = self.selection.select("id");
20417 query.execute(self.graphql_client.clone()).await
20418 }
20419 pub fn head(&self) -> GitRef {
20421 let query = self.selection.select("head");
20422 GitRef {
20423 proc: self.proc.clone(),
20424 selection: query,
20425 graphql_client: self.graphql_client.clone(),
20426 }
20427 }
20428 pub fn directory(&self) -> Directory {
20432 let query = self.selection.select("directory");
20433 Directory {
20434 proc: self.proc.clone(),
20435 selection: query,
20436 graphql_client: self.graphql_client.clone(),
20437 }
20438 }
20439 pub fn uncommitted(&self) -> Changeset {
20441 let query = self.selection.select("uncommitted");
20442 Changeset {
20443 proc: self.proc.clone(),
20444 selection: query,
20445 graphql_client: self.graphql_client.clone(),
20446 }
20447 }
20448}
20449impl Node for WorkspaceGit {
20450 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
20451 let query = self.selection.select("id");
20452 let graphql_client = self.graphql_client.clone();
20453 async move { query.execute(graphql_client).await }
20454 }
20455}
20456#[derive(Clone)]
20457pub struct WorkspaceMigration {
20458 pub proc: Option<Arc<DaggerSessionProc>>,
20459 pub selection: Selection,
20460 pub graphql_client: DynGraphQLClient,
20461}
20462impl IntoID<Id> for WorkspaceMigration {
20463 fn into_id(
20464 self,
20465 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
20466 Box::pin(async move { self.id().await })
20467 }
20468}
20469impl Loadable for WorkspaceMigration {
20470 fn graphql_type() -> &'static str {
20471 "WorkspaceMigration"
20472 }
20473 fn from_query(
20474 proc: Option<Arc<DaggerSessionProc>>,
20475 selection: Selection,
20476 graphql_client: DynGraphQLClient,
20477 ) -> Self {
20478 Self {
20479 proc,
20480 selection,
20481 graphql_client,
20482 }
20483 }
20484}
20485impl WorkspaceMigration {
20486 pub async fn id(&self) -> Result<Id, DaggerError> {
20488 let query = self.selection.select("id");
20489 query.execute(self.graphql_client.clone()).await
20490 }
20491 pub fn changes(&self) -> Changeset {
20493 let query = self.selection.select("changes");
20494 Changeset {
20495 proc: self.proc.clone(),
20496 selection: query,
20497 graphql_client: self.graphql_client.clone(),
20498 }
20499 }
20500 pub async fn steps(&self) -> Result<Vec<WorkspaceMigrationStep>, DaggerError> {
20502 let query = self.selection.select("steps");
20503 let query = query.select("id");
20504 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
20505 Ok(ids
20506 .into_iter()
20507 .map(|id| WorkspaceMigrationStep {
20508 proc: self.proc.clone(),
20509 selection: crate::querybuilder::query()
20510 .select("node")
20511 .arg("id", &id.0)
20512 .inline_fragment("WorkspaceMigrationStep"),
20513 graphql_client: self.graphql_client.clone(),
20514 })
20515 .collect())
20516 }
20517 pub async fn module_candidates(&self) -> Result<Vec<String>, DaggerError> {
20519 let query = self.selection.select("moduleCandidates");
20520 query.execute(self.graphql_client.clone()).await
20521 }
20522 pub async fn config_file(&self) -> Result<String, DaggerError> {
20524 let query = self.selection.select("configFile");
20525 query.execute(self.graphql_client.clone()).await
20526 }
20527}
20528impl Node for WorkspaceMigration {
20529 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
20530 let query = self.selection.select("id");
20531 let graphql_client = self.graphql_client.clone();
20532 async move { query.execute(graphql_client).await }
20533 }
20534}
20535#[derive(Clone)]
20536pub struct WorkspaceMigrationStep {
20537 pub proc: Option<Arc<DaggerSessionProc>>,
20538 pub selection: Selection,
20539 pub graphql_client: DynGraphQLClient,
20540}
20541impl IntoID<Id> for WorkspaceMigrationStep {
20542 fn into_id(
20543 self,
20544 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
20545 Box::pin(async move { self.id().await })
20546 }
20547}
20548impl Loadable for WorkspaceMigrationStep {
20549 fn graphql_type() -> &'static str {
20550 "WorkspaceMigrationStep"
20551 }
20552 fn from_query(
20553 proc: Option<Arc<DaggerSessionProc>>,
20554 selection: Selection,
20555 graphql_client: DynGraphQLClient,
20556 ) -> Self {
20557 Self {
20558 proc,
20559 selection,
20560 graphql_client,
20561 }
20562 }
20563}
20564impl WorkspaceMigrationStep {
20565 pub async fn id(&self) -> Result<Id, DaggerError> {
20567 let query = self.selection.select("id");
20568 query.execute(self.graphql_client.clone()).await
20569 }
20570 pub async fn code(&self) -> Result<String, DaggerError> {
20572 let query = self.selection.select("code");
20573 query.execute(self.graphql_client.clone()).await
20574 }
20575 pub async fn description(&self) -> Result<String, DaggerError> {
20577 let query = self.selection.select("description");
20578 query.execute(self.graphql_client.clone()).await
20579 }
20580 pub async fn warnings(&self) -> Result<Vec<String>, DaggerError> {
20582 let query = self.selection.select("warnings");
20583 query.execute(self.graphql_client.clone()).await
20584 }
20585 pub fn changes(&self) -> Changeset {
20587 let query = self.selection.select("changes");
20588 Changeset {
20589 proc: self.proc.clone(),
20590 selection: query,
20591 graphql_client: self.graphql_client.clone(),
20592 }
20593 }
20594}
20595impl Node for WorkspaceMigrationStep {
20596 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
20597 let query = self.selection.select("id");
20598 let graphql_client = self.graphql_client.clone();
20599 async move { query.execute(graphql_client).await }
20600 }
20601}
20602#[derive(Clone)]
20603pub struct WorkspaceModule {
20604 pub proc: Option<Arc<DaggerSessionProc>>,
20605 pub selection: Selection,
20606 pub graphql_client: DynGraphQLClient,
20607}
20608impl IntoID<Id> for WorkspaceModule {
20609 fn into_id(
20610 self,
20611 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
20612 Box::pin(async move { self.id().await })
20613 }
20614}
20615impl Loadable for WorkspaceModule {
20616 fn graphql_type() -> &'static str {
20617 "WorkspaceModule"
20618 }
20619 fn from_query(
20620 proc: Option<Arc<DaggerSessionProc>>,
20621 selection: Selection,
20622 graphql_client: DynGraphQLClient,
20623 ) -> Self {
20624 Self {
20625 proc,
20626 selection,
20627 graphql_client,
20628 }
20629 }
20630}
20631impl WorkspaceModule {
20632 pub async fn id(&self) -> Result<Id, DaggerError> {
20634 let query = self.selection.select("id");
20635 query.execute(self.graphql_client.clone()).await
20636 }
20637 pub async fn settings(&self) -> Result<Vec<WorkspaceModuleSetting>, DaggerError> {
20639 let query = self.selection.select("settings");
20640 let query = query.select("id");
20641 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
20642 Ok(ids
20643 .into_iter()
20644 .map(|id| WorkspaceModuleSetting {
20645 proc: self.proc.clone(),
20646 selection: crate::querybuilder::query()
20647 .select("node")
20648 .arg("id", &id.0)
20649 .inline_fragment("WorkspaceModuleSetting"),
20650 graphql_client: self.graphql_client.clone(),
20651 })
20652 .collect())
20653 }
20654 pub async fn functions(&self) -> Result<Vec<String>, DaggerError> {
20656 let query = self.selection.select("functions");
20657 query.execute(self.graphql_client.clone()).await
20658 }
20659 pub async fn name(&self) -> Result<String, DaggerError> {
20661 let query = self.selection.select("name");
20662 query.execute(self.graphql_client.clone()).await
20663 }
20664 pub async fn entrypoint(&self) -> Result<bool, DaggerError> {
20666 let query = self.selection.select("entrypoint");
20667 query.execute(self.graphql_client.clone()).await
20668 }
20669 pub async fn source(&self) -> Result<String, DaggerError> {
20671 let query = self.selection.select("source");
20672 query.execute(self.graphql_client.clone()).await
20673 }
20674}
20675impl Node for WorkspaceModule {
20676 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
20677 let query = self.selection.select("id");
20678 let graphql_client = self.graphql_client.clone();
20679 async move { query.execute(graphql_client).await }
20680 }
20681}
20682#[derive(Clone)]
20683pub struct WorkspaceModuleSetting {
20684 pub proc: Option<Arc<DaggerSessionProc>>,
20685 pub selection: Selection,
20686 pub graphql_client: DynGraphQLClient,
20687}
20688impl IntoID<Id> for WorkspaceModuleSetting {
20689 fn into_id(
20690 self,
20691 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
20692 Box::pin(async move { self.id().await })
20693 }
20694}
20695impl Loadable for WorkspaceModuleSetting {
20696 fn graphql_type() -> &'static str {
20697 "WorkspaceModuleSetting"
20698 }
20699 fn from_query(
20700 proc: Option<Arc<DaggerSessionProc>>,
20701 selection: Selection,
20702 graphql_client: DynGraphQLClient,
20703 ) -> Self {
20704 Self {
20705 proc,
20706 selection,
20707 graphql_client,
20708 }
20709 }
20710}
20711impl WorkspaceModuleSetting {
20712 pub async fn id(&self) -> Result<Id, DaggerError> {
20714 let query = self.selection.select("id");
20715 query.execute(self.graphql_client.clone()).await
20716 }
20717 pub async fn key(&self) -> Result<String, DaggerError> {
20719 let query = self.selection.select("key");
20720 query.execute(self.graphql_client.clone()).await
20721 }
20722 pub async fn value(&self) -> Result<String, DaggerError> {
20724 let query = self.selection.select("value");
20725 query.execute(self.graphql_client.clone()).await
20726 }
20727 pub async fn description(&self) -> Result<String, DaggerError> {
20729 let query = self.selection.select("description");
20730 query.execute(self.graphql_client.clone()).await
20731 }
20732 pub async fn default_value(&self) -> Result<String, DaggerError> {
20734 let query = self.selection.select("defaultValue");
20735 query.execute(self.graphql_client.clone()).await
20736 }
20737 pub async fn is_string(&self) -> Result<bool, DaggerError> {
20739 let query = self.selection.select("isString");
20740 query.execute(self.graphql_client.clone()).await
20741 }
20742 pub async fn is_list(&self) -> Result<bool, DaggerError> {
20744 let query = self.selection.select("isList");
20745 query.execute(self.graphql_client.clone()).await
20746 }
20747 pub async fn is_object(&self) -> Result<bool, DaggerError> {
20749 let query = self.selection.select("isObject");
20750 query.execute(self.graphql_client.clone()).await
20751 }
20752}
20753impl Node for WorkspaceModuleSetting {
20754 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
20755 let query = self.selection.select("id");
20756 let graphql_client = self.graphql_client.clone();
20757 async move { query.execute(graphql_client).await }
20758 }
20759}
20760#[derive(Clone)]
20761pub struct WorkspaceSdk {
20762 pub proc: Option<Arc<DaggerSessionProc>>,
20763 pub selection: Selection,
20764 pub graphql_client: DynGraphQLClient,
20765}
20766impl IntoID<Id> for WorkspaceSdk {
20767 fn into_id(
20768 self,
20769 ) -> std::pin::Pin<Box<dyn core::future::Future<Output = Result<Id, DaggerError>> + Send>> {
20770 Box::pin(async move { self.id().await })
20771 }
20772}
20773impl Loadable for WorkspaceSdk {
20774 fn graphql_type() -> &'static str {
20775 "WorkspaceSDK"
20776 }
20777 fn from_query(
20778 proc: Option<Arc<DaggerSessionProc>>,
20779 selection: Selection,
20780 graphql_client: DynGraphQLClient,
20781 ) -> Self {
20782 Self {
20783 proc,
20784 selection,
20785 graphql_client,
20786 }
20787 }
20788}
20789impl WorkspaceSdk {
20790 pub async fn id(&self) -> Result<Id, DaggerError> {
20792 let query = self.selection.select("id");
20793 query.execute(self.graphql_client.clone()).await
20794 }
20795 pub fn generate(&self) -> Changeset {
20797 let query = self.selection.select("generate");
20798 Changeset {
20799 proc: self.proc.clone(),
20800 selection: query,
20801 graphql_client: self.graphql_client.clone(),
20802 }
20803 }
20804 pub async fn name(&self) -> Result<String, DaggerError> {
20806 let query = self.selection.select("name");
20807 query.execute(self.graphql_client.clone()).await
20808 }
20809 pub async fn r#ref(&self) -> Result<String, DaggerError> {
20811 let query = self.selection.select("ref");
20812 query.execute(self.graphql_client.clone()).await
20813 }
20814 pub async fn modules(&self) -> Result<Vec<WorkspaceModule>, DaggerError> {
20816 let query = self.selection.select("modules");
20817 let query = query.select("id");
20818 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
20819 Ok(ids
20820 .into_iter()
20821 .map(|id| WorkspaceModule {
20822 proc: self.proc.clone(),
20823 selection: crate::querybuilder::query()
20824 .select("node")
20825 .arg("id", &id.0)
20826 .inline_fragment("WorkspaceModule"),
20827 graphql_client: self.graphql_client.clone(),
20828 })
20829 .collect())
20830 }
20831 pub async fn clients(&self) -> Result<Vec<WorkspaceModule>, DaggerError> {
20833 let query = self.selection.select("clients");
20834 let query = query.select("id");
20835 let ids: Vec<Id> = query.execute(self.graphql_client.clone()).await?;
20836 Ok(ids
20837 .into_iter()
20838 .map(|id| WorkspaceModule {
20839 proc: self.proc.clone(),
20840 selection: crate::querybuilder::query()
20841 .select("node")
20842 .arg("id", &id.0)
20843 .inline_fragment("WorkspaceModule"),
20844 graphql_client: self.graphql_client.clone(),
20845 })
20846 .collect())
20847 }
20848}
20849impl Node for WorkspaceSdk {
20850 fn id(&self) -> impl core::future::Future<Output = Result<Id, DaggerError>> + Send {
20851 let query = self.selection.select("id");
20852 let graphql_client = self.graphql_client.clone();
20853 async move { query.execute(graphql_client).await }
20854 }
20855}
20856#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
20857pub enum AgentMessageDelivery {
20858 #[serde(rename = "QUEUED")]
20859 Queued,
20860 #[serde(rename = "STARTED")]
20861 Started,
20862 #[serde(rename = "STEERED")]
20863 Steered,
20864}
20865#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
20866pub enum AgentState {
20867 #[serde(rename = "FAILED")]
20868 Failed,
20869 #[serde(rename = "IDLE")]
20870 Idle,
20871 #[serde(rename = "PAUSED")]
20872 Paused,
20873 #[serde(rename = "RUNNING")]
20874 Running,
20875 #[serde(rename = "STOPPED")]
20876 Stopped,
20877 #[serde(rename = "WAITING_INPUT")]
20878 WaitingInput,
20879}
20880#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
20881pub enum ArtifactDimensionKind {
20882 #[serde(rename = "COLLECTION")]
20883 Collection,
20884 #[serde(rename = "MODULE")]
20885 Module,
20886 #[serde(rename = "TYPE")]
20887 Type,
20888}
20889#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
20890pub enum CacheSharingMode {
20891 #[serde(rename = "LOCKED")]
20892 Locked,
20893 #[serde(rename = "PRIVATE")]
20894 Private,
20895 #[serde(rename = "SHARED")]
20896 Shared,
20897}
20898#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
20899pub enum ChangesetMergeConflict {
20900 #[serde(rename = "FAIL")]
20901 Fail,
20902 #[serde(rename = "FAIL_EARLY")]
20903 FailEarly,
20904 #[serde(rename = "LEAVE_CONFLICT_MARKERS")]
20905 LeaveConflictMarkers,
20906 #[serde(rename = "PREFER_OURS")]
20907 PreferOurs,
20908 #[serde(rename = "PREFER_THEIRS")]
20909 PreferTheirs,
20910}
20911#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
20912pub enum ChangesetsMergeConflict {
20913 #[serde(rename = "FAIL")]
20914 Fail,
20915 #[serde(rename = "FAIL_EARLY")]
20916 FailEarly,
20917}
20918#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
20919pub enum DiffStatKind {
20920 #[serde(rename = "ADDED")]
20921 Added,
20922 #[serde(rename = "MODIFIED")]
20923 Modified,
20924 #[serde(rename = "REMOVED")]
20925 Removed,
20926 #[serde(rename = "RENAMED")]
20927 Renamed,
20928}
20929#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
20930pub enum ExistsType {
20931 #[serde(rename = "DIRECTORY_TYPE")]
20932 DirectoryType,
20933 #[serde(rename = "REGULAR_TYPE")]
20934 RegularType,
20935 #[serde(rename = "SYMLINK_TYPE")]
20936 SymlinkType,
20937}
20938#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
20939pub enum FileType {
20940 #[serde(rename = "DIRECTORY")]
20941 Directory,
20942 #[serde(rename = "DIRECTORY_TYPE")]
20943 DirectoryType,
20944 #[serde(rename = "REGULAR")]
20945 Regular,
20946 #[serde(rename = "REGULAR_TYPE")]
20947 RegularType,
20948 #[serde(rename = "SYMLINK")]
20949 Symlink,
20950 #[serde(rename = "SYMLINK_TYPE")]
20951 SymlinkType,
20952 #[serde(rename = "UNKNOWN")]
20953 Unknown,
20954}
20955#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
20956pub enum FunctionCachePolicy {
20957 #[serde(rename = "Default")]
20958 Default,
20959 #[serde(rename = "Never")]
20960 Never,
20961 #[serde(rename = "PerSession")]
20962 PerSession,
20963}
20964#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
20965pub enum GitPushDisposition {
20966 #[serde(rename = "CREATED")]
20967 Created,
20968 #[serde(rename = "FAST_FORWARD")]
20969 FastForward,
20970 #[serde(rename = "FORCED")]
20971 Forced,
20972 #[serde(rename = "UP_TO_DATE")]
20973 UpToDate,
20974}
20975#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
20976pub enum ImageLayerCompression {
20977 #[serde(rename = "EStarGZ")]
20978 EStarGz,
20979 #[serde(rename = "ESTARGZ")]
20980 Estargz,
20981 #[serde(rename = "Gzip")]
20982 Gzip,
20983 #[serde(rename = "Uncompressed")]
20984 Uncompressed,
20985 #[serde(rename = "Zstd")]
20986 Zstd,
20987}
20988#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
20989pub enum ImageMediaTypes {
20990 #[serde(rename = "DOCKER")]
20991 Docker,
20992 #[serde(rename = "DockerMediaTypes")]
20993 DockerMediaTypes,
20994 #[serde(rename = "OCI")]
20995 Oci,
20996 #[serde(rename = "OCIMediaTypes")]
20997 OciMediaTypes,
20998}
20999#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
21000pub enum LlmContentBlockKind {
21001 #[serde(rename = "AUDIO")]
21002 Audio,
21003 #[serde(rename = "DOCUMENT")]
21004 Document,
21005 #[serde(rename = "IMAGE")]
21006 Image,
21007 #[serde(rename = "TEXT")]
21008 Text,
21009 #[serde(rename = "THINKING")]
21010 Thinking,
21011 #[serde(rename = "TOOL_CALL")]
21012 ToolCall,
21013 #[serde(rename = "TOOL_RESULT")]
21014 ToolResult,
21015}
21016#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
21017pub enum LlmMessageOriginKind {
21018 #[serde(rename = "AGENT")]
21019 Agent,
21020 #[serde(rename = "EVENT")]
21021 Event,
21022 #[serde(rename = "USER")]
21023 User,
21024}
21025#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
21026pub enum LlmMessageRole {
21027 #[serde(rename = "ASSISTANT")]
21028 Assistant,
21029 #[serde(rename = "SYSTEM")]
21030 System,
21031 #[serde(rename = "USER")]
21032 User,
21033}
21034#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
21035pub enum ModuleSourceExperimentalFeature {
21036 #[serde(rename = "SELF_CALLS")]
21037 SelfCalls,
21038}
21039#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
21040pub enum ModuleSourceKind {
21041 #[serde(rename = "DIR")]
21042 Dir,
21043 #[serde(rename = "DIR_SOURCE")]
21044 DirSource,
21045 #[serde(rename = "GIT")]
21046 Git,
21047 #[serde(rename = "GIT_SOURCE")]
21048 GitSource,
21049 #[serde(rename = "LOCAL")]
21050 Local,
21051 #[serde(rename = "LOCAL_SOURCE")]
21052 LocalSource,
21053}
21054#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
21055pub enum NetworkProtocol {
21056 #[serde(rename = "TCP")]
21057 Tcp,
21058 #[serde(rename = "UDP")]
21059 Udp,
21060}
21061#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
21062pub enum PatchConflict {
21063 #[serde(rename = "FAIL")]
21064 Fail,
21065 #[serde(rename = "LEAVE_CONFLICT_MARKERS")]
21066 LeaveConflictMarkers,
21067}
21068#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
21069pub enum RegistryProtocol {
21070 #[serde(rename = "HTTP")]
21071 Http,
21072 #[serde(rename = "HTTPS")]
21073 Https,
21074}
21075#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
21076pub enum ReturnType {
21077 #[serde(rename = "ANY")]
21078 Any,
21079 #[serde(rename = "FAILURE")]
21080 Failure,
21081 #[serde(rename = "SUCCESS")]
21082 Success,
21083}
21084#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
21085pub enum TypeDefKind {
21086 #[serde(rename = "BOOLEAN")]
21087 Boolean,
21088 #[serde(rename = "BOOLEAN_KIND")]
21089 BooleanKind,
21090 #[serde(rename = "ENUM")]
21091 Enum,
21092 #[serde(rename = "ENUM_KIND")]
21093 EnumKind,
21094 #[serde(rename = "FLOAT")]
21095 Float,
21096 #[serde(rename = "FLOAT_KIND")]
21097 FloatKind,
21098 #[serde(rename = "INPUT")]
21099 Input,
21100 #[serde(rename = "INPUT_KIND")]
21101 InputKind,
21102 #[serde(rename = "INTEGER")]
21103 Integer,
21104 #[serde(rename = "INTEGER_KIND")]
21105 IntegerKind,
21106 #[serde(rename = "INTERFACE")]
21107 Interface,
21108 #[serde(rename = "INTERFACE_KIND")]
21109 InterfaceKind,
21110 #[serde(rename = "LIST")]
21111 List,
21112 #[serde(rename = "LIST_KIND")]
21113 ListKind,
21114 #[serde(rename = "OBJECT")]
21115 Object,
21116 #[serde(rename = "OBJECT_KIND")]
21117 ObjectKind,
21118 #[serde(rename = "SCALAR")]
21119 Scalar,
21120 #[serde(rename = "SCALAR_KIND")]
21121 ScalarKind,
21122 #[serde(rename = "STRING")]
21123 String,
21124 #[serde(rename = "STRING_KIND")]
21125 StringKind,
21126 #[serde(rename = "VOID")]
21127 Void,
21128 #[serde(rename = "VOID_KIND")]
21129 VoidKind,
21130}
21131#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
21132pub enum WorkspaceCommitPickReason {
21133 #[serde(rename = "CONTENT")]
21134 Content,
21135 #[serde(rename = "DIRTY")]
21136 Dirty,
21137 #[serde(rename = "NONE")]
21138 None,
21139}
21140#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
21141pub enum WorkspaceCommitPickStatus {
21142 #[serde(rename = "CONFLICT")]
21143 Conflict,
21144 #[serde(rename = "PICKABLE")]
21145 Pickable,
21146 #[serde(rename = "PICKED")]
21147 Picked,
21148 #[serde(rename = "REDUNDANT")]
21149 Redundant,
21150}