@pulumi/command 0.0.4-alpha.1646689034 → 0.1.0-alpha.1779516124

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +101 -16
  2. package/index.d.ts +4 -1
  3. package/index.d.ts.map +1 -0
  4. package/index.js +21 -13
  5. package/index.js.map +1 -1
  6. package/local/command.d.ts +353 -17
  7. package/local/command.d.ts.map +1 -0
  8. package/local/command.js +149 -39
  9. package/local/command.js.map +1 -1
  10. package/local/index.d.ts +8 -1
  11. package/local/index.d.ts.map +1 -0
  12. package/local/index.js +24 -8
  13. package/local/index.js.map +1 -1
  14. package/local/run.d.ts +392 -0
  15. package/local/run.d.ts.map +1 -0
  16. package/local/run.js +69 -0
  17. package/local/run.js.map +1 -0
  18. package/package.json +8 -5
  19. package/package.json.dev +7 -4
  20. package/provider.d.ts +1 -0
  21. package/provider.d.ts.map +1 -0
  22. package/provider.js +39 -18
  23. package/provider.js.map +1 -1
  24. package/remote/command.d.ts +163 -15
  25. package/remote/command.d.ts.map +1 -0
  26. package/remote/command.js +126 -38
  27. package/remote/command.js.map +1 -1
  28. package/remote/copyFile.d.ts +7 -2
  29. package/remote/copyFile.d.ts.map +1 -0
  30. package/remote/copyFile.js +65 -37
  31. package/remote/copyFile.js.map +1 -1
  32. package/remote/copyToRemote.d.ts +126 -0
  33. package/remote/copyToRemote.d.ts.map +1 -0
  34. package/remote/copyToRemote.js +157 -0
  35. package/remote/copyToRemote.js.map +1 -0
  36. package/remote/index.d.ts +11 -2
  37. package/remote/index.d.ts.map +1 -0
  38. package/remote/index.js +28 -11
  39. package/remote/index.js.map +1 -1
  40. package/types/enums/index.d.ts +4 -0
  41. package/types/enums/index.d.ts.map +1 -0
  42. package/types/enums/index.js +34 -0
  43. package/types/enums/index.js.map +1 -0
  44. package/types/enums/local/index.d.ts +20 -0
  45. package/types/enums/local/index.d.ts.map +1 -0
  46. package/types/enums/local/index.js +24 -0
  47. package/types/enums/local/index.js.map +1 -0
  48. package/types/enums/remote/index.d.ts +20 -0
  49. package/types/enums/remote/index.d.ts.map +1 -0
  50. package/types/enums/remote/index.js +24 -0
  51. package/types/enums/remote/index.js.map +1 -0
  52. package/types/index.d.ts +3 -1
  53. package/types/index.d.ts.map +1 -0
  54. package/types/index.js +29 -4
  55. package/types/index.js.map +1 -1
  56. package/types/input.d.ts +80 -5
  57. package/types/input.d.ts.map +1 -0
  58. package/types/input.js +47 -3
  59. package/types/input.js.map +1 -1
  60. package/types/output.d.ts +76 -1
  61. package/types/output.d.ts.map +1 -0
  62. package/types/output.js +46 -3
  63. package/types/output.js.map +1 -1
  64. package/utilities.d.ts +1 -0
  65. package/utilities.d.ts.map +1 -0
  66. package/utilities.js +64 -2
  67. package/utilities.js.map +1 -1
  68. package/package.json.bak +0 -25
@@ -1,10 +1,82 @@
1
1
  import * as pulumi from "@pulumi/pulumi";
2
+ import * as enums from "../types/enums";
2
3
  /**
3
4
  * A local command to be executed.
4
- * This command can be inserted into the life cycles of other resources using the
5
- * `dependsOn` or `parent` resource options. A command is considered to have
6
- * failed when it finished with a non-zero exit code. This will fail the CRUD step
7
- * of the `Command` resource.
5
+ *
6
+ * This command can be inserted into the life cycles of other resources using the `dependsOn` or `parent` resource options. A command is considered to have failed when it finished with a non-zero exit code. This will fail the CRUD step of the `Command` resource.
7
+ *
8
+ * ## Example Usage
9
+ *
10
+ * ### Basic Example
11
+ *
12
+ * This example shows the simplest use case, simply running a command on `create` in the Pulumi lifecycle.
13
+ *
14
+ * ```typescript
15
+ * import { local } from "@pulumi/command";
16
+ *
17
+ * const random = new local.Command("random", {
18
+ * create: "openssl rand -hex 16",
19
+ * });
20
+ *
21
+ * export const output = random.stdout;
22
+ * ```
23
+ *
24
+ * ### Invoking a Lambda during Pulumi Deployment
25
+ *
26
+ * This example show using a local command to invoke an AWS Lambda once it's deployed. The Lambda invocation could also depend on other resources.
27
+ *
28
+ * ```typescript
29
+ * import * as aws from "@pulumi/aws";
30
+ * import { local } from "@pulumi/command";
31
+ * import { getStack } from "@pulumi/pulumi";
32
+ *
33
+ * const f = new aws.lambda.CallbackFunction("f", {
34
+ * publish: true,
35
+ * callback: async (ev: any) => {
36
+ * return `Stack ${ev.stackName} is deployed!`;
37
+ * }
38
+ * });
39
+ *
40
+ * const invoke = new local.Command("execf", {
41
+ * create: `aws lambda invoke --function-name "$FN" --payload '{"stackName": "${getStack()}"}' --cli-binary-format raw-in-base64-out out.txt >/dev/null && cat out.txt | tr -d '"' && rm out.txt`,
42
+ * environment: {
43
+ * FN: f.qualifiedArn,
44
+ * AWS_REGION: aws.config.region!,
45
+ * AWS_PAGER: "",
46
+ * },
47
+ * }, { dependsOn: f })
48
+ *
49
+ * export const output = invoke.stdout;
50
+ * ```
51
+ *
52
+ * ### Using Triggers
53
+ *
54
+ * This example defines several trigger values of various kinds. Changes to any of them will cause `cmd` to be re-run.
55
+ *
56
+ * ```typescript
57
+ * import * as pulumi from "@pulumi/pulumi";
58
+ * import * as command from "@pulumi/command";
59
+ * import * as random from "@pulumi/random";
60
+ *
61
+ * const str = "foo";
62
+ * const fileAsset = new pulumi.asset.FileAsset("Pulumi.yaml");
63
+ * const rand = new random.RandomString("rand", {length: 5});
64
+ * const localFile = new command.local.Command("localFile", {
65
+ * create: "touch foo.txt",
66
+ * archivePaths: ["*.txt"],
67
+ * });
68
+ *
69
+ * const cmd = new command.local.Command("cmd", {
70
+ * create: "echo create > op.txt",
71
+ * delete: "echo delete >> op.txt",
72
+ * triggers: [
73
+ * str,
74
+ * rand.result,
75
+ * fileAsset,
76
+ * localFile.archive,
77
+ * ],
78
+ * });
79
+ * ```
8
80
  */
9
81
  export declare class Command extends pulumi.CustomResource {
10
82
  /**
@@ -22,11 +94,118 @@ export declare class Command extends pulumi.CustomResource {
22
94
  */
23
95
  static isInstance(obj: any): obj is Command;
24
96
  /**
25
- * The command to run on create.
97
+ * If the previous command's stdout and stderr (as generated by the prior create/update) is
98
+ * injected into the environment of the next run as PULUMI_COMMAND_STDOUT and PULUMI_COMMAND_STDERR.
99
+ * Defaults to true.
100
+ */
101
+ readonly addPreviousOutputInEnv: pulumi.Output<boolean | undefined>;
102
+ /**
103
+ * An archive asset containing files found after running the command.
104
+ */
105
+ readonly archive: pulumi.Output<pulumi.asset.Archive | undefined>;
106
+ /**
107
+ * A list of path globs to return as a single archive asset after the command completes.
108
+ *
109
+ * When specifying glob patterns the following rules apply:
110
+ * - We only include files not directories for assets and archives.
111
+ * - Path separators are `/` on all platforms - including Windows.
112
+ * - Patterns starting with `!` are 'exclude' rules.
113
+ * - Rules are evaluated in order, so exclude rules should be after inclusion rules.
114
+ * - `*` matches anything except `/`
115
+ * - `**` matches anything, _including_ `/`
116
+ * - All returned paths are relative to the working directory (without leading `./`) e.g. `file.text` or `subfolder/file.txt`.
117
+ * - For full details of the globbing syntax, see [github.com/gobwas/glob](https://github.com/gobwas/glob)
118
+ *
119
+ * #### Example
120
+ *
121
+ * Given the rules:
122
+ * ```yaml
123
+ * - "assets/**"
124
+ * - "src/**.js"
125
+ * - "!**secret.*"
126
+ * ```
127
+ *
128
+ * When evaluating against this folder:
129
+ *
130
+ * ```yaml
131
+ * - assets/
132
+ * - logos/
133
+ * - logo.svg
134
+ * - src/
135
+ * - index.js
136
+ * - secret.js
137
+ * ```
138
+ *
139
+ * The following paths will be returned:
140
+ *
141
+ * ```yaml
142
+ * - assets/logos/logo.svg
143
+ * - src/index.js
144
+ * ```
145
+ */
146
+ readonly archivePaths: pulumi.Output<string[] | undefined>;
147
+ /**
148
+ * A list of path globs to read after the command completes.
149
+ *
150
+ * When specifying glob patterns the following rules apply:
151
+ * - We only include files not directories for assets and archives.
152
+ * - Path separators are `/` on all platforms - including Windows.
153
+ * - Patterns starting with `!` are 'exclude' rules.
154
+ * - Rules are evaluated in order, so exclude rules should be after inclusion rules.
155
+ * - `*` matches anything except `/`
156
+ * - `**` matches anything, _including_ `/`
157
+ * - All returned paths are relative to the working directory (without leading `./`) e.g. `file.text` or `subfolder/file.txt`.
158
+ * - For full details of the globbing syntax, see [github.com/gobwas/glob](https://github.com/gobwas/glob)
159
+ *
160
+ * #### Example
161
+ *
162
+ * Given the rules:
163
+ * ```yaml
164
+ * - "assets/**"
165
+ * - "src/**.js"
166
+ * - "!**secret.*"
167
+ * ```
168
+ *
169
+ * When evaluating against this folder:
170
+ *
171
+ * ```yaml
172
+ * - assets/
173
+ * - logos/
174
+ * - logo.svg
175
+ * - src/
176
+ * - index.js
177
+ * - secret.js
178
+ * ```
179
+ *
180
+ * The following paths will be returned:
181
+ *
182
+ * ```yaml
183
+ * - assets/logos/logo.svg
184
+ * - src/index.js
185
+ * ```
186
+ */
187
+ readonly assetPaths: pulumi.Output<string[] | undefined>;
188
+ /**
189
+ * A map of assets found after running the command.
190
+ * The key is the relative path from the command dir
191
+ */
192
+ readonly assets: pulumi.Output<{
193
+ [key: string]: pulumi.asset.Asset | pulumi.asset.Archive;
194
+ } | undefined>;
195
+ /**
196
+ * The command to run once on resource creation.
197
+ *
198
+ * If an `update` command isn't provided, then `create` will also be run when the resource's inputs are modified.
199
+ *
200
+ * Note that this command will not be executed if the resource has already been created and its inputs are unchanged.
201
+ *
202
+ * Use `local.runOutput` if you need to run a command on every execution of your program.
26
203
  */
27
204
  readonly create: pulumi.Output<string | undefined>;
28
205
  /**
29
- * The command to run on delete.
206
+ * The command to run on resource deletion.
207
+ *
208
+ * The environment variables `PULUMI_COMMAND_STDOUT` and `PULUMI_COMMAND_STDERR` are set to the stdout and stderr properties of the Command resource from previous create or update steps.
30
209
  */
31
210
  readonly delete: pulumi.Output<string | undefined>;
32
211
  /**
@@ -42,21 +221,49 @@ export declare class Command extends pulumi.CustomResource {
42
221
  } | undefined>;
43
222
  /**
44
223
  * The program and arguments to run the command.
45
- * For example: `["/bin/sh", "-c"]`
224
+ * On Linux and macOS, defaults to: `["/bin/sh", "-c"]`. On Windows, defaults to: `["cmd", "/C"]`
46
225
  */
47
226
  readonly interpreter: pulumi.Output<string[] | undefined>;
227
+ /**
228
+ * If the command's stdout and stderr should be logged. This doesn't affect the capturing of
229
+ * stdout and stderr as outputs. If there might be secrets in the output, you can disable logging here and mark the
230
+ * outputs as secret via 'additionalSecretOutputs'. Defaults to logging both stdout and stderr.
231
+ */
232
+ readonly logging: pulumi.Output<enums.local.Logging | undefined>;
48
233
  /**
49
234
  * The standard error of the command's process
50
235
  */
51
236
  readonly stderr: pulumi.Output<string>;
237
+ /**
238
+ * Pass a string to the command's process as standard in
239
+ */
240
+ readonly stdin: pulumi.Output<string | undefined>;
52
241
  /**
53
242
  * The standard output of the command's process
54
243
  */
55
244
  readonly stdout: pulumi.Output<string>;
56
245
  /**
57
- * Trigger replacements on changes to this input.
246
+ * The resource will be updated (or replaced) if any of these values change.
247
+ *
248
+ * The trigger values can be of any type.
249
+ *
250
+ * If the `update` command was provided the resource will be updated, otherwise it will be replaced using the `create` command.
251
+ *
252
+ * Please see the resource documentation for examples.
58
253
  */
59
254
  readonly triggers: pulumi.Output<any[] | undefined>;
255
+ /**
256
+ * The command to run when the resource is updated.
257
+ *
258
+ * If empty, the create command will be executed instead.
259
+ *
260
+ * Note that this command will not run if the resource's inputs are unchanged.
261
+ *
262
+ * Use `local.runOutput` if you need to run a command on every execution of your program.
263
+ *
264
+ * The environment variables `PULUMI_COMMAND_STDOUT` and `PULUMI_COMMAND_STDERR` are set to the `stdout` and `stderr` properties of the Command resource from previous create or update steps.
265
+ */
266
+ readonly update: pulumi.Output<string | undefined>;
60
267
  /**
61
268
  * Create a Command resource with the given unique name, arguments, and options.
62
269
  *
@@ -71,27 +278,156 @@ export declare class Command extends pulumi.CustomResource {
71
278
  */
72
279
  export interface CommandArgs {
73
280
  /**
74
- * The command to run on create.
281
+ * If the previous command's stdout and stderr (as generated by the prior create/update) is
282
+ * injected into the environment of the next run as PULUMI_COMMAND_STDOUT and PULUMI_COMMAND_STDERR.
283
+ * Defaults to true.
75
284
  */
76
- create?: pulumi.Input<string>;
285
+ addPreviousOutputInEnv?: pulumi.Input<boolean | undefined>;
77
286
  /**
78
- * The command to run on delete.
287
+ * A list of path globs to return as a single archive asset after the command completes.
288
+ *
289
+ * When specifying glob patterns the following rules apply:
290
+ * - We only include files not directories for assets and archives.
291
+ * - Path separators are `/` on all platforms - including Windows.
292
+ * - Patterns starting with `!` are 'exclude' rules.
293
+ * - Rules are evaluated in order, so exclude rules should be after inclusion rules.
294
+ * - `*` matches anything except `/`
295
+ * - `**` matches anything, _including_ `/`
296
+ * - All returned paths are relative to the working directory (without leading `./`) e.g. `file.text` or `subfolder/file.txt`.
297
+ * - For full details of the globbing syntax, see [github.com/gobwas/glob](https://github.com/gobwas/glob)
298
+ *
299
+ * #### Example
300
+ *
301
+ * Given the rules:
302
+ * ```yaml
303
+ * - "assets/**"
304
+ * - "src/**.js"
305
+ * - "!**secret.*"
306
+ * ```
307
+ *
308
+ * When evaluating against this folder:
309
+ *
310
+ * ```yaml
311
+ * - assets/
312
+ * - logos/
313
+ * - logo.svg
314
+ * - src/
315
+ * - index.js
316
+ * - secret.js
317
+ * ```
318
+ *
319
+ * The following paths will be returned:
320
+ *
321
+ * ```yaml
322
+ * - assets/logos/logo.svg
323
+ * - src/index.js
324
+ * ```
325
+ */
326
+ archivePaths?: pulumi.Input<pulumi.Input<string>[] | undefined>;
327
+ /**
328
+ * A list of path globs to read after the command completes.
329
+ *
330
+ * When specifying glob patterns the following rules apply:
331
+ * - We only include files not directories for assets and archives.
332
+ * - Path separators are `/` on all platforms - including Windows.
333
+ * - Patterns starting with `!` are 'exclude' rules.
334
+ * - Rules are evaluated in order, so exclude rules should be after inclusion rules.
335
+ * - `*` matches anything except `/`
336
+ * - `**` matches anything, _including_ `/`
337
+ * - All returned paths are relative to the working directory (without leading `./`) e.g. `file.text` or `subfolder/file.txt`.
338
+ * - For full details of the globbing syntax, see [github.com/gobwas/glob](https://github.com/gobwas/glob)
339
+ *
340
+ * #### Example
341
+ *
342
+ * Given the rules:
343
+ * ```yaml
344
+ * - "assets/**"
345
+ * - "src/**.js"
346
+ * - "!**secret.*"
347
+ * ```
348
+ *
349
+ * When evaluating against this folder:
350
+ *
351
+ * ```yaml
352
+ * - assets/
353
+ * - logos/
354
+ * - logo.svg
355
+ * - src/
356
+ * - index.js
357
+ * - secret.js
358
+ * ```
359
+ *
360
+ * The following paths will be returned:
361
+ *
362
+ * ```yaml
363
+ * - assets/logos/logo.svg
364
+ * - src/index.js
365
+ * ```
366
+ */
367
+ assetPaths?: pulumi.Input<pulumi.Input<string>[] | undefined>;
368
+ /**
369
+ * The command to run once on resource creation.
370
+ *
371
+ * If an `update` command isn't provided, then `create` will also be run when the resource's inputs are modified.
372
+ *
373
+ * Note that this command will not be executed if the resource has already been created and its inputs are unchanged.
374
+ *
375
+ * Use `local.runOutput` if you need to run a command on every execution of your program.
79
376
  */
80
- delete?: pulumi.Input<string>;
377
+ create?: pulumi.Input<string | undefined>;
81
378
  /**
82
- * The working directory in which to run the command from.
379
+ * The command to run on resource deletion.
380
+ *
381
+ * The environment variables `PULUMI_COMMAND_STDOUT` and `PULUMI_COMMAND_STDERR` are set to the stdout and stderr properties of the Command resource from previous create or update steps.
382
+ */
383
+ delete?: pulumi.Input<string | undefined>;
384
+ /**
385
+ * The directory from which to run the command from. If `dir` does not exist, then
386
+ * `Command` will fail.
83
387
  */
84
- dir?: pulumi.Input<string>;
388
+ dir?: pulumi.Input<string | undefined>;
85
389
  /**
86
390
  * Additional environment variables available to the command's process.
87
391
  */
88
392
  environment?: pulumi.Input<{
89
393
  [key: string]: pulumi.Input<string>;
90
- }>;
394
+ } | undefined>;
91
395
  /**
92
396
  * The program and arguments to run the command.
93
397
  * On Linux and macOS, defaults to: `["/bin/sh", "-c"]`. On Windows, defaults to: `["cmd", "/C"]`
94
398
  */
95
- interpreter?: pulumi.Input<pulumi.Input<string>[]>;
96
- triggers?: pulumi.Input<any[]>;
399
+ interpreter?: pulumi.Input<pulumi.Input<string>[] | undefined>;
400
+ /**
401
+ * If the command's stdout and stderr should be logged. This doesn't affect the capturing of
402
+ * stdout and stderr as outputs. If there might be secrets in the output, you can disable logging here and mark the
403
+ * outputs as secret via 'additionalSecretOutputs'. Defaults to logging both stdout and stderr.
404
+ */
405
+ logging?: pulumi.Input<enums.local.Logging | undefined>;
406
+ /**
407
+ * Pass a string to the command's process as standard in
408
+ */
409
+ stdin?: pulumi.Input<string | undefined>;
410
+ /**
411
+ * The resource will be updated (or replaced) if any of these values change.
412
+ *
413
+ * The trigger values can be of any type.
414
+ *
415
+ * If the `update` command was provided the resource will be updated, otherwise it will be replaced using the `create` command.
416
+ *
417
+ * Please see the resource documentation for examples.
418
+ */
419
+ triggers?: pulumi.Input<any[] | undefined>;
420
+ /**
421
+ * The command to run when the resource is updated.
422
+ *
423
+ * If empty, the create command will be executed instead.
424
+ *
425
+ * Note that this command will not run if the resource's inputs are unchanged.
426
+ *
427
+ * Use `local.runOutput` if you need to run a command on every execution of your program.
428
+ *
429
+ * The environment variables `PULUMI_COMMAND_STDOUT` and `PULUMI_COMMAND_STDERR` are set to the `stdout` and `stderr` properties of the Command resource from previous create or update steps.
430
+ */
431
+ update?: pulumi.Input<string | undefined>;
97
432
  }
433
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../local/command.ts"],"names":[],"mappings":"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"}
package/local/command.js CHANGED
@@ -1,18 +1,135 @@
1
1
  "use strict";
2
- // *** WARNING: this file was generated by pulumigen. ***
2
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
3
3
  // *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || function (mod) {
21
+ if (mod && mod.__esModule) return mod;
22
+ var result = {};
23
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
24
+ __setModuleDefault(result, mod);
25
+ return result;
26
+ };
4
27
  Object.defineProperty(exports, "__esModule", { value: true });
5
28
  exports.Command = void 0;
6
- const pulumi = require("@pulumi/pulumi");
7
- const utilities = require("../utilities");
29
+ const pulumi = __importStar(require("@pulumi/pulumi"));
30
+ const utilities = __importStar(require("../utilities"));
8
31
  /**
9
32
  * A local command to be executed.
10
- * This command can be inserted into the life cycles of other resources using the
11
- * `dependsOn` or `parent` resource options. A command is considered to have
12
- * failed when it finished with a non-zero exit code. This will fail the CRUD step
13
- * of the `Command` resource.
33
+ *
34
+ * This command can be inserted into the life cycles of other resources using the `dependsOn` or `parent` resource options. A command is considered to have failed when it finished with a non-zero exit code. This will fail the CRUD step of the `Command` resource.
35
+ *
36
+ * ## Example Usage
37
+ *
38
+ * ### Basic Example
39
+ *
40
+ * This example shows the simplest use case, simply running a command on `create` in the Pulumi lifecycle.
41
+ *
42
+ * ```typescript
43
+ * import { local } from "@pulumi/command";
44
+ *
45
+ * const random = new local.Command("random", {
46
+ * create: "openssl rand -hex 16",
47
+ * });
48
+ *
49
+ * export const output = random.stdout;
50
+ * ```
51
+ *
52
+ * ### Invoking a Lambda during Pulumi Deployment
53
+ *
54
+ * This example show using a local command to invoke an AWS Lambda once it's deployed. The Lambda invocation could also depend on other resources.
55
+ *
56
+ * ```typescript
57
+ * import * as aws from "@pulumi/aws";
58
+ * import { local } from "@pulumi/command";
59
+ * import { getStack } from "@pulumi/pulumi";
60
+ *
61
+ * const f = new aws.lambda.CallbackFunction("f", {
62
+ * publish: true,
63
+ * callback: async (ev: any) => {
64
+ * return `Stack ${ev.stackName} is deployed!`;
65
+ * }
66
+ * });
67
+ *
68
+ * const invoke = new local.Command("execf", {
69
+ * create: `aws lambda invoke --function-name "$FN" --payload '{"stackName": "${getStack()}"}' --cli-binary-format raw-in-base64-out out.txt >/dev/null && cat out.txt | tr -d '"' && rm out.txt`,
70
+ * environment: {
71
+ * FN: f.qualifiedArn,
72
+ * AWS_REGION: aws.config.region!,
73
+ * AWS_PAGER: "",
74
+ * },
75
+ * }, { dependsOn: f })
76
+ *
77
+ * export const output = invoke.stdout;
78
+ * ```
79
+ *
80
+ * ### Using Triggers
81
+ *
82
+ * This example defines several trigger values of various kinds. Changes to any of them will cause `cmd` to be re-run.
83
+ *
84
+ * ```typescript
85
+ * import * as pulumi from "@pulumi/pulumi";
86
+ * import * as command from "@pulumi/command";
87
+ * import * as random from "@pulumi/random";
88
+ *
89
+ * const str = "foo";
90
+ * const fileAsset = new pulumi.asset.FileAsset("Pulumi.yaml");
91
+ * const rand = new random.RandomString("rand", {length: 5});
92
+ * const localFile = new command.local.Command("localFile", {
93
+ * create: "touch foo.txt",
94
+ * archivePaths: ["*.txt"],
95
+ * });
96
+ *
97
+ * const cmd = new command.local.Command("cmd", {
98
+ * create: "echo create > op.txt",
99
+ * delete: "echo delete >> op.txt",
100
+ * triggers: [
101
+ * str,
102
+ * rand.result,
103
+ * fileAsset,
104
+ * localFile.archive,
105
+ * ],
106
+ * });
107
+ * ```
14
108
  */
15
109
  class Command extends pulumi.CustomResource {
110
+ /**
111
+ * Get an existing Command resource's state with the given name, ID, and optional extra
112
+ * properties used to qualify the lookup.
113
+ *
114
+ * @param name The _unique_ name of the resulting resource.
115
+ * @param id The _unique_ provider ID of the resource to lookup.
116
+ * @param opts Optional settings to control the behavior of the CustomResource.
117
+ */
118
+ static get(name, id, opts) {
119
+ return new Command(name, undefined, { ...opts, id: id });
120
+ }
121
+ /** @internal */
122
+ static __pulumiType = 'command:local:Command';
123
+ /**
124
+ * Returns true if the given object is an instance of Command. This is designed to work even
125
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
126
+ */
127
+ static isInstance(obj) {
128
+ if (obj === undefined || obj === null) {
129
+ return false;
130
+ }
131
+ return obj['__pulumiType'] === Command.__pulumiType;
132
+ }
16
133
  /**
17
134
  * Create a Command resource with the given unique name, arguments, and options.
18
135
  *
@@ -24,53 +141,46 @@ class Command extends pulumi.CustomResource {
24
141
  let resourceInputs = {};
25
142
  opts = opts || {};
26
143
  if (!opts.id) {
27
- resourceInputs["create"] = args ? args.create : undefined;
28
- resourceInputs["delete"] = args ? args.delete : undefined;
29
- resourceInputs["dir"] = args ? args.dir : undefined;
30
- resourceInputs["environment"] = args ? args.environment : undefined;
31
- resourceInputs["interpreter"] = args ? args.interpreter : undefined;
32
- resourceInputs["triggers"] = args ? args.triggers : undefined;
144
+ resourceInputs["addPreviousOutputInEnv"] = args?.addPreviousOutputInEnv;
145
+ resourceInputs["archivePaths"] = args?.archivePaths;
146
+ resourceInputs["assetPaths"] = args?.assetPaths;
147
+ resourceInputs["create"] = args?.create;
148
+ resourceInputs["delete"] = args?.delete;
149
+ resourceInputs["dir"] = args?.dir;
150
+ resourceInputs["environment"] = args?.environment;
151
+ resourceInputs["interpreter"] = args?.interpreter;
152
+ resourceInputs["logging"] = args?.logging;
153
+ resourceInputs["stdin"] = args?.stdin;
154
+ resourceInputs["triggers"] = args?.triggers;
155
+ resourceInputs["update"] = args?.update;
156
+ resourceInputs["archive"] = undefined /*out*/;
157
+ resourceInputs["assets"] = undefined /*out*/;
33
158
  resourceInputs["stderr"] = undefined /*out*/;
34
159
  resourceInputs["stdout"] = undefined /*out*/;
35
160
  }
36
161
  else {
162
+ resourceInputs["addPreviousOutputInEnv"] = undefined /*out*/;
163
+ resourceInputs["archive"] = undefined /*out*/;
164
+ resourceInputs["archivePaths"] = undefined /*out*/;
165
+ resourceInputs["assetPaths"] = undefined /*out*/;
166
+ resourceInputs["assets"] = undefined /*out*/;
37
167
  resourceInputs["create"] = undefined /*out*/;
38
168
  resourceInputs["delete"] = undefined /*out*/;
39
169
  resourceInputs["dir"] = undefined /*out*/;
40
170
  resourceInputs["environment"] = undefined /*out*/;
41
171
  resourceInputs["interpreter"] = undefined /*out*/;
172
+ resourceInputs["logging"] = undefined /*out*/;
42
173
  resourceInputs["stderr"] = undefined /*out*/;
174
+ resourceInputs["stdin"] = undefined /*out*/;
43
175
  resourceInputs["stdout"] = undefined /*out*/;
44
176
  resourceInputs["triggers"] = undefined /*out*/;
177
+ resourceInputs["update"] = undefined /*out*/;
45
178
  }
46
- if (!opts.version) {
47
- opts = pulumi.mergeOptions(opts, { version: utilities.getVersion() });
48
- }
179
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
180
+ const replaceOnChanges = { replaceOnChanges: ["triggers[*]"] };
181
+ opts = pulumi.mergeOptions(opts, replaceOnChanges);
49
182
  super(Command.__pulumiType, name, resourceInputs, opts);
50
183
  }
51
- /**
52
- * Get an existing Command resource's state with the given name, ID, and optional extra
53
- * properties used to qualify the lookup.
54
- *
55
- * @param name The _unique_ name of the resulting resource.
56
- * @param id The _unique_ provider ID of the resource to lookup.
57
- * @param opts Optional settings to control the behavior of the CustomResource.
58
- */
59
- static get(name, id, opts) {
60
- return new Command(name, undefined, Object.assign(Object.assign({}, opts), { id: id }));
61
- }
62
- /**
63
- * Returns true if the given object is an instance of Command. This is designed to work even
64
- * when multiple copies of the Pulumi SDK have been loaded into the same process.
65
- */
66
- static isInstance(obj) {
67
- if (obj === undefined || obj === null) {
68
- return false;
69
- }
70
- return obj['__pulumiType'] === Command.__pulumiType;
71
- }
72
184
  }
73
185
  exports.Command = Command;
74
- /** @internal */
75
- Command.__pulumiType = 'command:local:Command';
76
186
  //# sourceMappingURL=command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../local/command.ts"],"names":[],"mappings":";AAAA,yDAAyD;AACzD,iFAAiF;;;AAEjF,yCAAyC;AACzC,0CAA0C;AAE1C;;;;;;GAMG;AACH,MAAa,OAAQ,SAAQ,MAAM,CAAC,cAAc;IA8D9C;;;;;;OAMG;IACH,YAAY,IAAY,EAAE,IAAkB,EAAE,IAAmC;QAC7E,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACV,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1D,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1D,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;YACpD,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9D,cAAc,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAC7C,cAAc,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;SAChD;aAAM;YACH,cAAc,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAC7C,cAAc,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAC7C,cAAc,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAC1C,cAAc,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAClD,cAAc,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAClD,cAAc,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAC7C,cAAc,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAC7C,cAAc,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;SAClD;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,EAAC,CAAC,CAAC;SACxE;QACD,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IA9FD;;;;;;;OAOG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,IAAmC;QAC5F,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,SAAgB,kCAAO,IAAI,KAAE,EAAE,EAAE,EAAE,IAAG,CAAC;IACpE,CAAC;IAKD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC;IACxD,CAAC;;AAzBL,0BAgGC;AAnFG,gBAAgB;AACO,oBAAY,GAAG,uBAAuB,CAAC"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../local/command.ts"],"names":[],"mappings":"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"}