1use crate::{Context, GestaltContext, Output};
2use serde::Serialize;
3
4#[macro_export]
18macro_rules! pulumi_format {
19 ($context:expr, $format:expr, $o1:expr) => {{ $o1.create_output(&$context).map(|a| format!($format, a)) }};
20 ($context:expr, $format:expr, $o1:expr, $o2:expr) => {{
21 pulumi_gestalt_rust::__private::output::combine2(
22 $o1.create_output(&$context),
23 $o2.create_output(&$context),
24 )
25 .map(|(a, b)| format!($format, a, b))
26 }};
27 ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr) => {{
28 pulumi_gestalt_rust::__private::output::combine3(
29 $o1.create_output(&$context),
30 $o2.create_output(&$context),
31 $o3.create_output(&$context),
32 )
33 .map(|(a, b, c)| format!($format, a, b, c))
34 }};
35 ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr) => {{
36 pulumi_gestalt_rust::__private::output::combine4(
37 $o1.create_output(&$context),
38 $o2.create_output(&$context),
39 $o3.create_output(&$context),
40 $o4.create_output(&$context),
41 )
42 .map(|(a, b, c, d)| format!($format, a, b, c, d))
43 }};
44 ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr) => {{
45 pulumi_gestalt_rust::__private::output::combine5(
46 $o1.create_output(&$context),
47 $o2.create_output(&$context),
48 $o3.create_output(&$context),
49 $o4.create_output(&$context),
50 $o5.create_output(&$context),
51 )
52 .map(|(a, b, c, d, e)| format!($format, a, b, c, d, e))
53 }};
54 ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr, $o6:expr) => {{
55 pulumi_gestalt_rust::__private::output::combine6(
56 $o1.create_output(&$context),
57 $o2.create_output(&$context),
58 $o3.create_output(&$context),
59 $o4.create_output(&$context),
60 $o5.create_output(&$context),
61 $o6.create_output(&$context),
62 )
63 .map(|(a, b, c, d, e, f)| format!($format, a, b, c, d, e, f))
64 }};
65 ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr, $o6:expr, $o7:expr) => {{
66 pulumi_gestalt_rust::__private::output::combine7(
67 $o1.create_output(&$context),
68 $o2.create_output(&$context),
69 $o3.create_output(&$context),
70 $o4.create_output(&$context),
71 $o5.create_output(&$context),
72 $o6.create_output(&$context),
73 $o7.create_output(&$context),
74 )
75 .map(|(a, b, c, d, e, f, g)| format!($format, a, b, c, d, e, f, g))
76 }};
77 ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr, $o6:expr, $o7:expr, $o8:expr) => {{
78 pulumi_gestalt_rust::__private::output::combine8(
79 $o1.create_output(&$context),
80 $o2.create_output(&$context),
81 $o3.create_output(&$context),
82 $o4.create_output(&$context),
83 $o5.create_output(&$context),
84 $o6.create_output(&$context),
85 $o7.create_output(&$context),
86 $o8.create_output(&$context),
87 )
88 .map(|(a, b, c, d, e, f, g, h)| format!($format, a, b, c, d, e, f, g, h))
89 }};
90 ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr, $o6:expr, $o7:expr, $o8:expr, $o9:expr) => {{
91 pulumi_gestalt_rust::__private::output::combine9(
92 $o1.create_output(&$context),
93 $o2.create_output(&$context),
94 $o3.create_output(&$context),
95 $o4.create_output(&$context),
96 $o5.create_output(&$context),
97 $o6.create_output(&$context),
98 $o7.create_output(&$context),
99 $o8.create_output(&$context),
100 $o9.create_output(&$context),
101 )
102 .map(|(a, b, c, d, e, f, g, h, i)| format!($format, a, b, c, d, e, f, g, h, i))
103 }};
104 ($context:expr, $format:expr, $o1:expr, $o2:expr, $o3:expr, $o4:expr, $o5:expr, $o6:expr, $o7:expr, $o8:expr, $o9:expr, $o10:expr) => {{
105 pulumi_gestalt_rust::__private::output::combine10(
106 $o1.create_output(&$context),
107 $o2.create_output(&$context),
108 $o3.create_output(&$context),
109 $o4.create_output(&$context),
110 $o5.create_output(&$context),
111 $o6.create_output(&$context),
112 $o7.create_output(&$context),
113 $o8.create_output(&$context),
114 $o9.create_output(&$context),
115 $o10.create_output(&$context),
116 )
117 .map(|(a, b, c, d, e, f, g, h, i, j)| format!($format, a, b, c, d, e, f, g, h, i, j))
118 }};
119 ($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) => {{
120 pulumi_gestalt_rust::__private::output::combine11(
121 $o1.create_output(&$context),
122 $o2.create_output(&$context),
123 $o3.create_output(&$context),
124 $o4.create_output(&$context),
125 $o5.create_output(&$context),
126 $o6.create_output(&$context),
127 $o7.create_output(&$context),
128 $o8.create_output(&$context),
129 $o9.create_output(&$context),
130 $o10.create_output(&$context),
131 $o11.create_output(&$context),
132 )
133 .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))
134 }};
135 ($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) => {{
136 pulumi_gestalt_rust::__private::output::combine12(
137 $o1.create_output(&$context),
138 $o2.create_output(&$context),
139 $o3.create_output(&$context),
140 $o4.create_output(&$context),
141 $o5.create_output(&$context),
142 $o6.create_output(&$context),
143 $o7.create_output(&$context),
144 $o8.create_output(&$context),
145 $o9.create_output(&$context),
146 $o10.create_output(&$context),
147 $o11.create_output(&$context),
148 $o12.create_output(&$context),
149 )
150 .map(|(a, b, c, d, e, f, g, h, i, j, k, l)| {
151 format!($format, a, b, c, d, e, f, g, h, i, j, k, l)
152 })
153 }};
154 ($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) => {{
155 pulumi_gestalt_rust::__private::output::combine13(
156 $o1.create_output(&$context),
157 $o2.create_output(&$context),
158 $o3.create_output(&$context),
159 $o4.create_output(&$context),
160 $o5.create_output(&$context),
161 $o6.create_output(&$context),
162 $o7.create_output(&$context),
163 $o8.create_output(&$context),
164 $o9.create_output(&$context),
165 $o10.create_output(&$context),
166 $o11.create_output(&$context),
167 $o12.create_output(&$context),
168 $o13.create_output(&$context),
169 )
170 .map(|(a, b, c, d, e, f, g, h, i, j, k, l, m)| {
171 format!($format, a, b, c, d, e, f, g, h, i, j, k, l, m)
172 })
173 }};
174
175 ($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) => {{
176 pulumi_gestalt_rust::__private::output::combine14(
177 $o1.create_output(&$context),
178 $o2.create_output(&$context),
179 $o3.create_output(&$context),
180 $o4.create_output(&$context),
181 $o5.create_output(&$context),
182 $o6.create_output(&$context),
183 $o7.create_output(&$context),
184 $o8.create_output(&$context),
185 $o9.create_output(&$context),
186 $o10.create_output(&$context),
187 $o11.create_output(&$context),
188 $o12.create_output(&$context),
189 $o13.create_output(&$context),
190 $o14.create_output(&$context),
191 )
192 .map(|(a, b, c, d, e, f, g, h, i, j, k, l, m, n)| {
193 format!($format, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
194 })
195 }};
196
197 ($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) => {{
198 pulumi_gestalt_rust::__private::output::combine15(
199 $o1.create_output(&$context),
200 $o2.create_output(&$context),
201 $o3.create_output(&$context),
202 $o4.create_output(&$context),
203 $o5.create_output(&$context),
204 $o6.create_output(&$context),
205 $o7.create_output(&$context),
206 $o8.create_output(&$context),
207 $o9.create_output(&$context),
208 $o10.create_output(&$context),
209 $o11.create_output(&$context),
210 $o12.create_output(&$context),
211 $o13.create_output(&$context),
212 $o14.create_output(&$context),
213 $o15.create_output(&$context),
214 )
215 .map(|(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)| {
216 format!($format, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
217 })
218 }};
219
220 ($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) => {{
221 pulumi_gestalt_rust::__private::output::combine16(
222 $o1.create_output(&$context),
223 $o2.create_output(&$context),
224 $o3.create_output(&$context),
225 $o4.create_output(&$context),
226 $o5.create_output(&$context),
227 $o6.create_output(&$context),
228 $o7.create_output(&$context),
229 $o8.create_output(&$context),
230 $o9.create_output(&$context),
231 $o10.create_output(&$context),
232 $o11.create_output(&$context),
233 $o12.create_output(&$context),
234 $o13.create_output(&$context),
235 $o14.create_output(&$context),
236 $o15.create_output(&$context),
237 $o16.create_output(&$context),
238 )
239 .map(|(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)| {
240 format!($format, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)
241 })
242 }};
243 ($($arg:expr),+) => {
244 compile_error!("pulumi_format! macro supports up to 16 arguments")
245 };
246}
247
248#[macro_export]
261macro_rules! pulumi_combine {
262 ($arg1:expr, $arg2:expr) => {
263 pulumi_gestalt_rust::__private::output::combine2($arg1, $arg2)
264 };
265 ($arg1:expr, $arg2:expr, $arg3:expr) => {
266 pulumi_gestalt_rust::__private::output::combine3($arg1, $arg2, $arg3)
267 };
268 ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr) => {
269 pulumi_gestalt_rust::__private::output::combine4($arg1, $arg2, $arg3, $arg4)
270 };
271 ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr) => {
272 pulumi_gestalt_rust::__private::output::combine5($arg1, $arg2, $arg3, $arg4, $arg5)
273 };
274 ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr) => {
275 pulumi_gestalt_rust::__private::output::combine6($arg1, $arg2, $arg3, $arg4, $arg5, $arg6)
276 };
277 ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr) => {
278 pulumi_gestalt_rust::__private::output::combine7(
279 $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7,
280 )
281 };
282 ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr, $arg8:expr) => {
283 pulumi_gestalt_rust::__private::output::combine8(
284 $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8,
285 )
286 };
287 ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr, $arg8:expr, $arg9:expr) => {
288 pulumi_gestalt_rust::__private::output::combine9(
289 $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8, $arg9,
290 )
291 };
292 ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr, $arg8:expr, $arg9:expr, $arg10:expr) => {
293 pulumi_gestalt_rust::__private::output::combine10(
294 $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8, $arg9, $arg10,
295 )
296 };
297 ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr, $arg8:expr, $arg9:expr, $arg10:expr, $arg11:expr) => {
298 pulumi_gestalt_rust::__private::output::combine11(
299 $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8, $arg9, $arg10, $arg11,
300 )
301 };
302 ($arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr, $arg8:expr, $arg9:expr, $arg10:expr, $arg11:expr, $arg12:expr) => {
303 pulumi_gestalt_rust::__private::output::combine12(
304 $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8, $arg9, $arg10, $arg11, $arg12,
305 )
306 };
307 ($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) => {
308 pulumi_gestalt_rust::__private::output::combine13(
309 $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8, $arg9, $arg10, $arg11, $arg12,
310 $arg13,
311 )
312 };
313 ($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) => {
314 pulumi_gestalt_rust::__private::output::combine14(
315 $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8, $arg9, $arg10, $arg11, $arg12,
316 $arg13, $arg14,
317 )
318 };
319 ($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) => {
320 pulumi_gestalt_rust::__private::output::combine15(
321 $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8, $arg9, $arg10, $arg11, $arg12,
322 $arg13, $arg14, $arg15,
323 )
324 };
325 ($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) => {
326 pulumi_gestalt_rust::__private::output::combine16(
327 $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8, $arg9, $arg10, $arg11, $arg12,
328 $arg13, $arg14, $arg15, $arg16,
329 )
330 };
331 ($($arg:expr),+) => {
332 compile_error!("pulumi_combine! macro supports up to 16 arguments")
333 };
334}
335
336pub trait ToOutput<T> {
338 fn create_output(&self, engine: &Context) -> Output<T>;
339}
340
341impl<T: Serialize> ToOutput<T> for T {
342 fn create_output(&self, engine: &Context) -> Output<T> {
343 engine.new_output(self)
344 }
345}
346
347impl<T> ToOutput<T> for Output<T> {
348 fn create_output(&self, _: &Context) -> Output<T> {
349 self.clone()
350 }
351}