@webiny/pulumi-sdk 5.17.4 → 5.18.0-beta.3

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.
@@ -102,5 +102,4 @@ async function setupLinux(downloadFolder) {
102
102
  file: path.join(downloadFolder, filename)
103
103
  });
104
104
  fs.unlinkSync(path.join(downloadFolder, filename));
105
- }
106
- //# sourceMappingURL=downloadBinaries.js.map
105
+ }
package/index.d.ts CHANGED
@@ -28,6 +28,7 @@ export declare const FLAG_NON_INTERACTIVE = "--non-interactive";
28
28
  export declare class Pulumi {
29
29
  options: Options;
30
30
  pulumiFolder: string;
31
+ pulumiDownloadFolder: string;
31
32
  pulumiBinaryPath: string;
32
33
  constructor(options?: Options);
33
34
  run(rawArgs: RunArgs): execa.ExecaChildProcess<string>;
package/index.js CHANGED
@@ -38,10 +38,12 @@ class Pulumi {
38
38
  constructor(options = {}) {
39
39
  (0, _defineProperty2.default)(this, "options", void 0);
40
40
  (0, _defineProperty2.default)(this, "pulumiFolder", void 0);
41
+ (0, _defineProperty2.default)(this, "pulumiDownloadFolder", void 0);
41
42
  (0, _defineProperty2.default)(this, "pulumiBinaryPath", void 0);
42
43
  this.options = options;
43
- this.pulumiFolder = path.join(options.pulumiFolder || process.cwd(), "pulumi-cli", _os.default.platform());
44
- this.pulumiBinaryPath = path.join(this.pulumiFolder, "pulumi", "pulumi");
44
+ this.pulumiDownloadFolder = path.join(options.pulumiFolder || process.cwd(), "pulumi-cli", _os.default.platform());
45
+ this.pulumiFolder = path.join(this.pulumiDownloadFolder, "pulumi");
46
+ this.pulumiBinaryPath = path.join(this.pulumiFolder, "pulumi");
45
47
  }
46
48
 
47
49
  run(rawArgs) {
@@ -80,12 +82,25 @@ class Pulumi {
80
82
 
81
83
  (0, _set2.default)(args.execa, "env.PULUMI_SKIP_UPDATE_CHECK", "true");
82
84
  (0, _set2.default)(args.execa, "env.PULUMI_HOME", this.pulumiFolder);
83
- return (0, _execa.default)(this.pulumiBinaryPath, [...args.command, ...finalArgs, FLAG_NON_INTERACTIVE], _objectSpread({}, args.execa));
85
+
86
+ const execaArgs = _objectSpread(_objectSpread({}, args.execa), {}, {
87
+ env: _objectSpread(_objectSpread({}, args.execa.env || {}), {}, {
88
+ /**
89
+ * Due to an issue with Pulumi https://github.com/pulumi/pulumi/issues/8374, and even though this
90
+ * commit suggests it should already work like that https://github.com/pulumi/pulumi/commit/c878916901a997a9c0ffcbed23560e19e224a6f1,
91
+ * we need to specify the exact location of our Pulumi binaries, using the PATH environment variable, so it can correctly resolve
92
+ * plugins necessary for custom resources and dynamic providers to work.
93
+ */
94
+ PATH: `${process.env.PATH};${this.pulumiFolder}`
95
+ })
96
+ });
97
+
98
+ return (0, _execa.default)(this.pulumiBinaryPath, [...args.command, ...finalArgs, FLAG_NON_INTERACTIVE], execaArgs);
84
99
  }
85
100
 
86
101
  async install(rawArgs) {
87
102
  const args = (0, _merge2.default)({}, this.options, rawArgs);
88
- const installed = await (0, _downloadBinaries.default)(this.pulumiFolder, args.beforePulumiInstall, args.afterPulumiInstall);
103
+ const installed = await (0, _downloadBinaries.default)(this.pulumiDownloadFolder, args.beforePulumiInstall, args.afterPulumiInstall);
89
104
 
90
105
  if (installed) {
91
106
  const {
@@ -106,5 +121,4 @@ class Pulumi {
106
121
 
107
122
  }
108
123
 
109
- exports.Pulumi = Pulumi;
110
- //# sourceMappingURL=index.js.map
124
+ exports.Pulumi = Pulumi;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/pulumi-sdk",
3
- "version": "5.17.4",
3
+ "version": "5.18.0-beta.3",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -27,8 +27,8 @@
27
27
  "@babel/cli": "^7.5.5",
28
28
  "@babel/core": "^7.5.5",
29
29
  "@types/node": "^10.0.0",
30
- "@webiny/cli": "^5.17.4",
31
- "@webiny/project-utils": "^5.17.4",
30
+ "@webiny/cli": "^5.18.0-beta.3",
31
+ "@webiny/project-utils": "^5.18.0-beta.3",
32
32
  "rimraf": "^3.0.2",
33
33
  "typescript": "^4.1.3"
34
34
  },
@@ -44,5 +44,5 @@
44
44
  "build": "yarn webiny run build",
45
45
  "watch": "yarn webiny run watch"
46
46
  },
47
- "gitHead": "bdfaa377704bf7f51d73561b4c6129f682bf24d2"
47
+ "gitHead": "9c86670476a62348ce391b091bf768e425ab6ee9"
48
48
  }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/downloadBinaries.ts"],"names":["os","require","tar","fs","download","path","decompress","semver","getPulumiVersion","version","clean","downloadFolder","beforeInstall","afterInstall","existsSync","platform","setupDarwin","setupLinux","setupWindows","Error","filename","downloadUrl","extract","cwd","file","join","unlinkSync","archive","destination","strip"],"mappings":"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","sourcesContent":["const os = require(\"os\");\nconst tar = require(\"tar\");\nconst fs = require(\"fs\");\nconst download = require(\"download\");\nconst path = require(\"path\");\nconst decompress = require(\"decompress\");\nconst semver = require(\"semver\");\n\n// We gotta sanitize the package version, since on a few occasions, we've detected the Pulumi version\n// can look like the following: \"2.25.2+dirty\". We want to ensure only \"2.25.2\" is returned.\n// @see https://github.com/pulumi/pulumi/issues/6847\nconst getPulumiVersion = () => {\n const { version } = require(\"@pulumi/pulumi/package.json\");\n return semver.clean(version);\n};\n\nexport default async (downloadFolder, beforeInstall, afterInstall) => {\n if (fs.existsSync(downloadFolder)) {\n return false;\n }\n\n if (typeof beforeInstall === \"function\") {\n await beforeInstall();\n }\n\n const platform = os.platform();\n switch (platform) {\n case \"darwin\":\n await setupDarwin(downloadFolder);\n break;\n case \"linux\":\n await setupLinux(downloadFolder);\n break;\n case \"win32\":\n await setupWindows(downloadFolder);\n break;\n default:\n throw Error(\n `Cannot download Pulumi binaries - platform \"${platform}\" not supported. Supported ones are \"darwin\", \"linux\", and \"win32\"`\n );\n }\n\n if (typeof afterInstall === \"function\") {\n await afterInstall();\n }\n\n return true;\n};\n\nasync function setupDarwin(downloadFolder) {\n const version = getPulumiVersion();\n const filename = `pulumi-v${version}-darwin-x64.tar.gz`;\n const downloadUrl = \"https://get.pulumi.com/releases/sdk/\" + filename;\n\n await download(downloadUrl, downloadFolder);\n\n await tar.extract({\n cwd: downloadFolder,\n file: path.join(downloadFolder, filename)\n });\n\n fs.unlinkSync(path.join(downloadFolder, filename));\n}\n\nasync function setupWindows(downloadFolder) {\n const version = getPulumiVersion();\n const filename = `pulumi-v${version}-windows-x64.zip`;\n const downloadUrl = \"https://get.pulumi.com/releases/sdk/\" + filename;\n\n await download(downloadUrl, downloadFolder);\n\n const archive = path.join(downloadFolder, filename);\n const destination = path.join(downloadFolder, \"pulumi\");\n await decompress(archive, destination, { strip: 2 });\n\n fs.unlinkSync(path.join(downloadFolder, filename));\n}\n\nasync function setupLinux(downloadFolder) {\n const version = getPulumiVersion();\n const filename = `pulumi-v${version}-linux-x64.tar.gz`;\n const downloadUrl = \"https://get.pulumi.com/releases/sdk/\" + filename;\n\n await download(downloadUrl, downloadFolder);\n\n await tar.extract({\n cwd: downloadFolder,\n file: path.join(downloadFolder, filename)\n });\n\n fs.unlinkSync(path.join(downloadFolder, filename));\n}\n"],"file":"downloadBinaries.js"}
package/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["FLAG_NON_INTERACTIVE","Pulumi","constructor","options","pulumiFolder","path","join","process","cwd","os","platform","pulumiBinaryPath","run","rawArgs","args","Array","isArray","command","finalArgs","key","value","i","length","push","execa","install","installed","beforePulumiInstall","afterPulumiInstall","version","require","stdio","env","PULUMI_HOME","PULUMI_SKIP_UPDATE_CHECK"],"mappings":"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","sourcesContent":["import os from \"os\";\nimport execa from \"execa\";\nimport * as path from \"path\";\nimport { merge, kebabCase, set } from \"lodash\";\nimport downloadBinaries from \"./downloadBinaries\";\n\ntype Command = string | string[];\ntype PulumiArgs = { [key: string]: string | boolean };\ntype ExecaArgs = { [key: string]: any };\n\ntype Options = {\n args?: PulumiArgs;\n execa?: ExecaArgs;\n beforePulumiInstall?: () => any;\n afterPulumiInstall?: () => any;\n\n // A folder into which the Pulumi CLI, along with all of its meta data and config files, will be set up.\n // It's recommended this folder is not checked in into a code repository, since the Pulumi CLI can store\n // sensitive information here, for example - user's Pulumi Service credentials.\n pulumiFolder?: string;\n};\n\ntype RunArgs = {\n command: Command;\n args?: PulumiArgs;\n execa?: ExecaArgs;\n beforePulumiInstall?: () => any;\n afterPulumiInstall?: () => any;\n};\n\ntype InstallArgs = {\n beforePulumiInstall?: () => any;\n afterPulumiInstall?: () => any;\n};\n\nexport const FLAG_NON_INTERACTIVE = \"--non-interactive\";\n\nexport class Pulumi {\n options: Options;\n pulumiFolder: string;\n pulumiBinaryPath: string;\n constructor(options: Options = {}) {\n this.options = options;\n\n this.pulumiFolder = path.join(\n options.pulumiFolder || process.cwd(),\n \"pulumi-cli\",\n os.platform()\n );\n this.pulumiBinaryPath = path.join(this.pulumiFolder, \"pulumi\", \"pulumi\");\n }\n\n run(rawArgs: RunArgs) {\n const args = merge({}, this.options, rawArgs);\n\n if (!Array.isArray(args.command)) {\n args.command = [args.command];\n }\n\n // 1. Prepare Pulumi args.\n const finalArgs = [];\n for (const key in args.args) {\n const value = args.args[key];\n if (!value) {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n finalArgs.push(`--${kebabCase(key)}`, value[i]);\n }\n continue;\n }\n\n if (typeof value === \"boolean\") {\n finalArgs.push(`--${kebabCase(key)}`);\n continue;\n }\n\n finalArgs.push(`--${kebabCase(key)}`, value);\n }\n\n // Prepare execa args.\n set(args.execa, \"env.PULUMI_SKIP_UPDATE_CHECK\", \"true\");\n set(args.execa, \"env.PULUMI_HOME\", this.pulumiFolder);\n\n return execa(this.pulumiBinaryPath, [...args.command, ...finalArgs, FLAG_NON_INTERACTIVE], {\n ...args.execa\n });\n }\n\n async install(rawArgs?: InstallArgs): Promise<boolean> {\n const args = merge({}, this.options, rawArgs);\n\n const installed = await downloadBinaries(\n this.pulumiFolder,\n args.beforePulumiInstall,\n args.afterPulumiInstall\n );\n\n if (installed) {\n const { version } = require(\"@pulumi/aws/package.json\");\n await execa(this.pulumiBinaryPath, [\"plugin\", \"install\", \"resource\", \"aws\", version], {\n stdio: \"inherit\",\n env: {\n PULUMI_HOME: this.pulumiFolder,\n PULUMI_SKIP_UPDATE_CHECK: \"true\"\n }\n });\n }\n\n return installed;\n }\n}\n"],"file":"index.js"}