pulumi_gestalt_rust/
output.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
use crate::{Context, GestaltContext, Output};
use serde::Serialize;

/// Generates Output<String> with formatted string. Supports up to 16 arguments.
///
/// Format string passed as first arguments is the same as in `format!` macro.
/// ```no_run
/// use anyhow::Result;
/// use pulumi_gestalt_rust::*;
///
/// fn pulumi_main(context: &Context) -> Result<()> {
///   let a = context.new_output(&1);
///   let b = context.new_output(&"test".to_string());
///   let formatted: Output<String> = pulumi_format!(context, "{} {}", a, b); // "1 test"
///   Ok(())
/// }
#[macro_export]
macro_rules! pulumi_format {
    ($context:expr, $format:expr, $o1:expr) => {{
        $o1.create_output(&$context).map(|a| format!($format, a))
    }};
    ($context:expr, $format:expr, $o1:expr, $o2:expr) => {{
        pulumi_gestalt_rust::__private::output::combine2(
            $o1.create_output(&$context),
            $o2.create_output(&$context),
        )
        .map(|(a, b)| format!($format, a, b))
    }};
    ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr) => {{
        pulumi_gestalt_rust::__private::output::combine3(
            $o1.create_output(&$context),
            $o2.create_output(&$context),
            $o3.create_output(&$context),
        )
        .map(|(a, b, c)| format!($format, a, b, c))
    }};
    ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr) => {{
        pulumi_gestalt_rust::__private::output::combine4(
            $o1.create_output(&$context),
            $o2.create_output(&$context),
            $o3.create_output(&$context),
            $o4.create_output(&$context),
        )
        .map(|(a, b, c, d)| format!($format, a, b, c, d))
    }};
    ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr) => {{
        pulumi_gestalt_rust::__private::output::combine5(
            $o1.create_output(&$context),
            $o2.create_output(&$context),
            $o3.create_output(&$context),
            $o4.create_output(&$context),
            $o5.create_output(&$context),
        )
        .map(|(a, b, c, d, e)| format!($format, a, b, c, d, e))
    }};
    ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr, $o6:expr) => {{
        pulumi_gestalt_rust::__private::output::combine6(
            $o1.create_output(&$context),
            $o2.create_output(&$context),
            $o3.create_output(&$context),
            $o4.create_output(&$context),
            $o5.create_output(&$context),
            $o6.create_output(&$context),
        )
        .map(|(a, b, c, d, e, f)| format!($format, a, b, c, d, e, f))
    }};
    ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr, $o6:expr, $o7:expr) => {{
        pulumi_gestalt_rust::__private::output::combine7(
            $o1.create_output(&$context),
            $o2.create_output(&$context),
            $o3.create_output(&$context),
            $o4.create_output(&$context),
            $o5.create_output(&$context),
            $o6.create_output(&$context),
            $o7.create_output(&$context),
        )
        .map(|(a, b, c, d, e, f, g)| format!($format, a, b, c, d, e, f, g))
    }};
    ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr, $o6:expr, $o7:expr, $o8:expr) => {{
        pulumi_gestalt_rust::__private::output::combine8(
            $o1.create_output(&$context),
            $o2.create_output(&$context),
            $o3.create_output(&$context),
            $o4.create_output(&$context),
            $o5.create_output(&$context),
            $o6.create_output(&$context),
            $o7.create_output(&$context),
            $o8.create_output(&$context),
        )
        .map(|(a, b, c, d, e, f, g, h)| format!($format, a, b, c, d, e, f, g, h))
    }};
    ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr, $o6:expr, $o7:expr, $o8:expr, $o9:expr) => {{
        pulumi_gestalt_rust::__private::output::combine9(
            $o1.create_output(&$context),
            $o2.create_output(&$context),
            $o3.create_output(&$context),
            $o4.create_output(&$context),
            $o5.create_output(&$context),
            $o6.create_output(&$context),
            $o7.create_output(&$context),
            $o8.create_output(&$context),
            $o9.create_output(&$context),
        )
        .map(|(a, b, c, d, e, f, g, h, i)| format!($format, a, b, c, d, e, f, g, h, i))
    }};
    ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr, $o6:expr, $o7:expr, $o8:expr, $o9:expr, $o10:expr) => {{
        pulumi_gestalt_rust::__private::output::combine10(
            $o1.create_output(&$context),
            $o2.create_output(&$context),
            $o3.create_output(&$context),
            $o4.create_output(&$context),
            $o5.create_output(&$context),
            $o6.create_output(&$context),
            $o7.create_output(&$context),
            $o8.create_output(&$context),
            $o9.create_output(&$context),
            $o10.create_output(&$context),
        )
        .map(|(a, b, c, d, e, f, g, h, i, j)| format!($format, a, b, c, d, e, f, g, h, i, j))
    }};
    ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr, $o6:expr, $o7:expr, $o8:expr, $o9:expr, $o10:expr, $o11:expr) => {{
        pulumi_gestalt_rust::__private::output::combine11(
            $o1.create_output(&$context),
            $o2.create_output(&$context),
            $o3.create_output(&$context),
            $o4.create_output(&$context),
            $o5.create_output(&$context),
            $o6.create_output(&$context),
            $o7.create_output(&$context),
            $o8.create_output(&$context),
            $o9.create_output(&$context),
            $o10.create_output(&$context),
            $o11.create_output(&$context),
        )
        .map(|(a, b, c, d, e, f, g, h, i, j, k)| format!($format, a, b, c, d, e, f, g, h, i, j, k))
    }};
    ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr, $o6:expr, $o7:expr, $o8:expr, $o9:expr, $o10:expr, $o11:expr, $o12:expr) => {{
        pulumi_gestalt_rust::__private::output::combine12(
            $o1.create_output(&$context),
            $o2.create_output(&$context),
            $o3.create_output(&$context),
            $o4.create_output(&$context),
            $o5.create_output(&$context),
            $o6.create_output(&$context),
            $o7.create_output(&$context),
            $o8.create_output(&$context),
            $o9.create_output(&$context),
            $o10.create_output(&$context),
            $o11.create_output(&$context),
            $o12.create_output(&$context),
        )
        .map(|(a, b, c, d, e, f, g, h, i, j, k, l)| {
            format!($format, a, b, c, d, e, f, g, h, i, j, k, l)
        })
    }};
    ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr, $o6:expr, $o7:expr, $o8:expr, $o9:expr, $o10:expr, $o11:expr, $o12:expr, $o13:expr) => {{
        pulumi_gestalt_rust::__private::output::combine13(
            $o1.create_output(&$context),
            $o2.create_output(&$context),
            $o3.create_output(&$context),
            $o4.create_output(&$context),
            $o5.create_output(&$context),
            $o6.create_output(&$context),
            $o7.create_output(&$context),
            $o8.create_output(&$context),
            $o9.create_output(&$context),
            $o10.create_output(&$context),
            $o11.create_output(&$context),
            $o12.create_output(&$context),
            $o13.create_output(&$context),
        )
        .map(|(a, b, c, d, e, f, g, h, i, j, k, l, m)| {
            format!($format, a, b, c, d, e, f, g, h, i, j, k, l, m)
        })
    }};

    ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr, $o6:expr, $o7:expr, $o8:expr, $o9:expr, $o10:expr, $o11:expr, $o12:expr, $o13:expr, $o14:expr) => {{
        pulumi_gestalt_rust::__private::output::combine14(
            $o1.create_output(&$context),
            $o2.create_output(&$context),
            $o3.create_output(&$context),
            $o4.create_output(&$context),
            $o5.create_output(&$context),
            $o6.create_output(&$context),
            $o7.create_output(&$context),
            $o8.create_output(&$context),
            $o9.create_output(&$context),
            $o10.create_output(&$context),
            $o11.create_output(&$context),
            $o12.create_output(&$context),
            $o13.create_output(&$context),
            $o14.create_output(&$context),
        )
        .map(|(a, b, c, d, e, f, g, h, i, j, k, l, m, n)| {
            format!($format, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
        })
    }};

    ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr, $o6:expr, $o7:expr, $o8:expr, $o9:expr, $o10:expr, $o11:expr, $o12:expr, $o13:expr, $o14:expr, $o15:expr) => {{
        pulumi_gestalt_rust::__private::output::combine15(
            $o1.create_output(&$context),
            $o2.create_output(&$context),
            $o3.create_output(&$context),
            $o4.create_output(&$context),
            $o5.create_output(&$context),
            $o6.create_output(&$context),
            $o7.create_output(&$context),
            $o8.create_output(&$context),
            $o9.create_output(&$context),
            $o10.create_output(&$context),
            $o11.create_output(&$context),
            $o12.create_output(&$context),
            $o13.create_output(&$context),
            $o14.create_output(&$context),
            $o15.create_output(&$context),
        )
        .map(|(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)| {
            format!($format, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
        })
    }};

    ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr, $o6:expr, $o7:expr, $o8:expr, $o9:expr, $o10:expr, $o11:expr, $o12:expr, $o13:expr, $o14:expr, $o15:expr, $o16:expr) => {{
        pulumi_gestalt_rust::__private::output::combine16(
            $o1.create_output(&$context),
            $o2.create_output(&$context),
            $o3.create_output(&$context),
            $o4.create_output(&$context),
            $o5.create_output(&$context),
            $o6.create_output(&$context),
            $o7.create_output(&$context),
            $o8.create_output(&$context),
            $o9.create_output(&$context),
            $o10.create_output(&$context),
            $o11.create_output(&$context),
            $o12.create_output(&$context),
            $o13.create_output(&$context),
            $o14.create_output(&$context),
            $o15.create_output(&$context),
            $o16.create_output(&$context),
        )
        .map(|(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)| {
            format!($format, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)
        })
    }};
    ($($arg:expr),+) => {
        compile_error!("pulumi_format! macro supports up to 16 arguments")
    };
}

/// Combine multiple Outputs into a single Output of [tuple] type. Supports up to 16 arguments.
/// ```no_run
/// use anyhow::Result;
/// use pulumi_gestalt_rust::*;
///
/// fn pulumi_main(context: &Context) -> Result<()> {
///   let a = context.new_output(&1);
///   let b = context.new_output(&"test".to_string());
///   let combined: Output<(i32, String)> = pulumi_combine!(a, b);
///   Ok(())
/// }
/// ```
#[macro_export]
macro_rules! pulumi_combine {
    ($arg1:expr, $arg2:expr) => {
        pulumi_gestalt_rust::__private::output::combine2($arg1, $arg2)
    };
    ($arg1:expr, $arg2:expr, $arg3:expr) => {
        pulumi_gestalt_rust::__private::output::combine3($arg1, $arg2, $arg3)
    };
    ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr) => {
        pulumi_gestalt_rust::__private::output::combine4($arg1, $arg2, $arg3, $arg4)
    };
    ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr) => {
        pulumi_gestalt_rust::__private::output::combine5($arg1, $arg2, $arg3, $arg4, $arg5)
    };
    ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr) => {
        pulumi_gestalt_rust::__private::output::combine6($arg1, $arg2, $arg3, $arg4, $arg5, $arg6)
    };
    ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr) => {
        pulumi_gestalt_rust::__private::output::combine7(
            $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7,
        )
    };
    ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr, $arg8:expr) => {
        pulumi_gestalt_rust::__private::output::combine8(
            $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8,
        )
    };
    ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr, $arg8:expr, $arg9:expr) => {
        pulumi_gestalt_rust::__private::output::combine9(
            $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8, $arg9,
        )
    };
    ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr, $arg8:expr, $arg9:expr, $arg10:expr) => {
        pulumi_gestalt_rust::__private::output::combine10(
            $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8, $arg9, $arg10,
        )
    };
    ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr, $arg8:expr, $arg9:expr, $arg10:expr, $arg11:expr) => {
        pulumi_gestalt_rust::__private::output::combine11(
            $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8, $arg9, $arg10, $arg11,
        )
    };
    ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr, $arg8:expr, $arg9:expr, $arg10:expr, $arg11:expr, $arg12:expr) => {
        pulumi_gestalt_rust::__private::output::combine12(
            $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8, $arg9, $arg10, $arg11, $arg12,
        )
    };
    ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr, $arg8:expr, $arg9:expr, $arg10:expr, $arg11:expr, $arg12:expr, $arg13:expr) => {
        pulumi_gestalt_rust::__private::output::combine13(
            $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8, $arg9, $arg10, $arg11, $arg12,
            $arg13,
        )
    };
    ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr, $arg8:expr, $arg9:expr, $arg10:expr, $arg11:expr, $arg12:expr, $arg13:expr, $arg14:expr) => {
        pulumi_gestalt_rust::__private::output::combine14(
            $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8, $arg9, $arg10, $arg11, $arg12,
            $arg13, $arg14,
        )
    };
    ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr, $arg8:expr, $arg9:expr, $arg10:expr, $arg11:expr, $arg12:expr, $arg13:expr, $arg14:expr, $arg15:expr) => {
        pulumi_gestalt_rust::__private::output::combine15(
            $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8, $arg9, $arg10, $arg11, $arg12,
            $arg13, $arg14, $arg15,
        )
    };
    ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr, $arg8:expr, $arg9:expr, $arg10:expr, $arg11:expr, $arg12:expr, $arg13:expr, $arg14:expr, $arg15:expr, $arg16:expr) => {
        pulumi_gestalt_rust::__private::output::combine16(
            $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8, $arg9, $arg10, $arg11, $arg12,
            $arg13, $arg14, $arg15, $arg16,
        )
    };
    ($($arg:expr),+) => {
        compile_error!("pulumi_combine! macro supports up to 16 arguments")
    };
}

/// Helper trait utilized in [pulumi_format!](`crate::pulumi_format!`) macro
pub trait ToOutput<T> {
    fn create_output(&self, engine: &Context) -> Output<T>;
}

impl<T: Serialize> ToOutput<T> for T {
    fn create_output(&self, engine: &Context) -> Output<T> {
        engine.new_output(self)
    }
}

impl<T> ToOutput<T> for Output<T> {
    fn create_output(&self, _: &Context) -> Output<T> {
        self.clone()
    }
}