@field123/hacksprint-2022-js-sdk-test-response-generation 0.0.6 → 0.0.7

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.
package/dist/README.md ADDED
@@ -0,0 +1,43 @@
1
+ # @field123/hacksprint-2022-js-sdk-test-response-generation
2
+
3
+ # Test Data Retrival Script
4
+
5
+ The script populates a store with test data, runs CURL calls to get data then tears down the data to create a clean slate.
6
+
7
+ Utilizes the [EPCC Terraform Provider](https://registry.terraform.io/providers/elasticpath/epcc/latest) to populate and tear down down data in a store.
8
+
9
+ ## Setup
10
+
11
+ Create a `.env` file based on the `.env.example` file.
12
+
13
+ ## Install
14
+
15
+ ```sh
16
+ yarn add -D @field123/hacksprint-2022-js-sdk-test-response-generation
17
+ ```
18
+
19
+ ## Usage
20
+
21
+ ```sh
22
+ npx hacksprint-2022-js-sdk-test-response-generation endpoints -s <source> -o <dest> -e <environment-file>
23
+ ```
24
+
25
+ ```sh
26
+ npx hacksprint-2022-js-sdk-test-response-generation endpoints -s ./postman-export/postman_collection.json -o ./output -e ./postman-export/postman_environment.json
27
+ ```
28
+
29
+ ```sh
30
+ npx hacksprint-2022-js-sdk-test-response-generation endpoints -s ./postman-export/postman_collection.json -o ./output -e ./postman-export/postman_environment.json -v
31
+ ```
32
+
33
+ | Key | CLI opt | Default | Description |
34
+ | ---- | ----------------- | -------- | ------------------------------------------------------ |
35
+ | s | --source \<file\> | required | Source postman collection json file. |
36
+ | e | --env \<file\> | required | Source postman environment json file. |
37
+ | o | --output \<dir\> | \<dir\> | Output location for the generated endpoint json files. |
38
+ | v | --verbose | false | Logs details of terraform commands to console. |
39
+ | help | -h, --help | n/a | display help for command |
40
+
41
+ ## Sources
42
+
43
+ `main.tf` comes from this repo: https://gitlab.elasticpath.com/commerce-cloud/playground/sample-catalogs-accelerator/-/blob/MT-11900/store-scope/variants/get-started-with-pcm-catalog/main.tf
File without changes
@@ -37,7 +37,7 @@ async function executeCollection(options, env) {
37
37
  return new Promise((resolve, reject) => {
38
38
  (0, import_newman.run)(__spreadValues({
39
39
  collection: postmanCollection,
40
- reporters: ["cli", "@field123/ep-resp"],
40
+ reporters: ["cli", "htmlextra", "@field123/ep-resp"],
41
41
  reporter: {
42
42
  "@field123/ep-resp": __spreadValues({}, options)
43
43
  },
@@ -124,7 +124,6 @@ function initiateCli() {
124
124
  import_commander.program.command("endpoints").description("Used to fetch json response data from Elastic Path endpoints and output them into json files.").requiredOption("-s, --source <source>", "Source postman collection json file.").requiredOption("-e, --env <environment-file>", "Source postman environment json file.").option("-o, --output <output>", "Output location for the generated endpoint json files.", process.cwd()).option("-v, --verbose", "Logs details of terraform commands to console.", false).action(outputJsonResponesAction);
125
125
  import_commander.program.command("ter-destroy").description("Run terraform destroy in isolation.").action(isolatedTerraformDestroyAction);
126
126
  import_commander.program.parse(process.argv);
127
- console.log("program: ", import_commander.program.opts());
128
127
  }
129
128
  function outputJsonResponesAction(args) {
130
129
  const env = loadEnv();
@@ -139,7 +138,7 @@ function outputJsonResponesAction(args) {
139
138
  }
140
139
  function isolatedTerraformDestroyAction() {
141
140
  loadEnv();
142
- return destroyTerraform();
141
+ return destroyTerraform({ verbose: true });
143
142
  }
144
143
  initiateCli();
145
144
  //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli.ts","../src/load-env.ts","../src/newman-exec.ts","../src/terraform.ts"],"sourcesContent":["import { program } from \"commander\";\nimport { loadEnv } from \"./load-env\";\nimport { executeCollection } from \"./newman-exec\";\nimport { applyTerraform, destroyTerraform } from \"./terraform\";\nimport { EndpointCliOptions } from \"./types\";\n\n/**\n * Checks if the script has been provided the required arguments.\n */\nfunction initiateCli(): void {\n program.name(\"ep-resource-json\");\n\n program\n .command(\"endpoints\")\n .description(\n \"Used to fetch json response data from Elastic Path endpoints and output them into json files.\"\n )\n .requiredOption(\n \"-s, --source <source>\",\n \"Source postman collection json file.\"\n )\n .requiredOption(\n \"-e, --env <environment-file>\",\n \"Source postman environment json file.\"\n )\n .option(\n \"-o, --output <output>\",\n \"Output location for the generated endpoint json files.\",\n process.cwd()\n )\n .option(\n \"-v, --verbose\",\n \"Logs details of terraform commands to console.\",\n false\n )\n .action(outputJsonResponesAction);\n\n program\n .command(\"ter-destroy\")\n .description(\"Run terraform destroy in isolation.\")\n .action(isolatedTerraformDestroyAction);\n\n program.parse(process.argv);\n}\nfunction outputJsonResponesAction(args: EndpointCliOptions): Promise<void> {\n const env = loadEnv();\n return applyTerraform({ verbose: args.verbose })\n .then(() => {\n return executeCollection(args, env);\n })\n .then(() => {\n return destroyTerraform({ verbose: args.verbose });\n })\n .catch((err) => {\n destroyTerraform({ verbose: args.verbose });\n console.error(\"error apply terraform: \", err);\n });\n}\n\nfunction isolatedTerraformDestroyAction(): Promise<void> {\n loadEnv();\n return destroyTerraform({ verbose: true });\n}\n\ninitiateCli();\n","import { config as dotEnvConfig } from \"dotenv\";\nimport { EPEnv } from \"./types\";\n\nexport function loadEnv(): EPEnv {\n const result = dotEnvConfig();\n if (result.error) {\n throw new Error(\n \"Failed to load environment variables. Check .env exists and is setup to match example.\"\n );\n }\n // Casting parsed response.\n return result!.parsed as EPEnv;\n}\n","import { run } from \"newman\";\nimport { readFile } from \"fs\";\nimport type {\n CollectionDefinition,\n VariableScopeDefinition,\n} from \"postman-collection\";\nimport { EndpointCliOptions, EPEnv } from \"./types\";\n\nexport async function executeCollection(\n options: EndpointCliOptions,\n env?: EPEnv\n): Promise<void> {\n const postmanCollection = await getPostmanCollection(options.source);\n const postmanEnvironment = await getPostmanEnvironment(options.env);\n return new Promise((resolve, reject) => {\n run(\n {\n collection: postmanCollection,\n reporters: [\"cli\", \"htmlextra\", \"@field123/ep-resp\"],\n reporter: {\n \"@field123/ep-resp\": {\n ...options,\n },\n },\n\n environment: postmanEnvironment,\n ...(env ? { envVar: createEnvironment(env) } : {}),\n },\n (err) => {\n if (err) {\n reject(err);\n }\n console.log(\"collection run complete!\");\n resolve();\n }\n );\n });\n}\n\nfunction createEnvironment(env: EPEnv): { key: string; value: string }[] {\n return [\n {\n key: \"clientID\",\n value: env.EPCC_CLIENT_ID,\n },\n {\n key: \"clientSecret\",\n value: env.EPCC_CLIENT_SECRET,\n },\n ];\n}\n\nfunction getPostmanEnvironment(\n source: string\n): Promise<VariableScopeDefinition> {\n console.log(`Attempting to load postman environment file from ${source}`);\n return getFile(source);\n}\n\nfunction getPostmanCollection(source: string): Promise<CollectionDefinition> {\n console.log(`Attempting to load postman collection file from ${source}`);\n return getFile(source);\n}\n\nfunction getFile(name: string): Promise<any> {\n return new Promise((resolve, reject) => {\n readFile(name, \"utf-8\", (err, data) => {\n if (err) {\n reject(err);\n }\n resolve(JSON.parse(data));\n });\n });\n}\n","import { spawn } from \"child_process\";\n\ninterface TerraformOptions {\n verbose: boolean;\n}\n\nexport function applyTerraform(\n options: TerraformOptions = { verbose: false }\n): Promise<void> {\n console.log(\"Attempting to terraform apply...\");\n return handleTerraformCommand(options, \"apply\", \"-auto-approve\").then(() =>\n console.log(\"Applied terraform successfully!\")\n );\n}\n\nexport function destroyTerraform(\n options: TerraformOptions = { verbose: false }\n): Promise<void> {\n console.log(\"Attempting to terraform destroy...\");\n return handleTerraformCommand(options, \"destroy\", \"-auto-approve\").then(() =>\n console.log(\"Destroyed terraform successfully!\")\n );\n}\n\nfunction handleTerraformCommand(\n options: TerraformOptions,\n ...args: string[]\n): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n const child = spawn(\"terraform\", args);\n\n if (options.verbose) {\n child.stdout.setEncoding(\"utf8\");\n child.stdout.on(\"data\", (data) => {\n console.log(\"stdout: \" + data);\n });\n child.stderr.on(\"data\", (data) => {\n console.log(\"stderr: \" + data);\n });\n }\n\n child.on(\"close\", (code) => {\n if (code !== 0) {\n return reject(`terraform running failed with ${code}`);\n }\n resolve();\n });\n } catch (error) {\n console.log(`error inside terraform with args ${args}: `, error);\n reject(error);\n }\n });\n}\n"],"mappings":"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","names":[]}
@@ -37,7 +37,7 @@ async function executeCollection(options, env) {
37
37
  return new Promise((resolve, reject) => {
38
38
  run(__spreadValues({
39
39
  collection: postmanCollection,
40
- reporters: ["cli", "@field123/ep-resp"],
40
+ reporters: ["cli", "htmlextra", "@field123/ep-resp"],
41
41
  reporter: {
42
42
  "@field123/ep-resp": __spreadValues({}, options)
43
43
  },
@@ -124,7 +124,6 @@ function initiateCli() {
124
124
  program.command("endpoints").description("Used to fetch json response data from Elastic Path endpoints and output them into json files.").requiredOption("-s, --source <source>", "Source postman collection json file.").requiredOption("-e, --env <environment-file>", "Source postman environment json file.").option("-o, --output <output>", "Output location for the generated endpoint json files.", process.cwd()).option("-v, --verbose", "Logs details of terraform commands to console.", false).action(outputJsonResponesAction);
125
125
  program.command("ter-destroy").description("Run terraform destroy in isolation.").action(isolatedTerraformDestroyAction);
126
126
  program.parse(process.argv);
127
- console.log("program: ", program.opts());
128
127
  }
129
128
  function outputJsonResponesAction(args) {
130
129
  const env = loadEnv();
@@ -139,7 +138,7 @@ function outputJsonResponesAction(args) {
139
138
  }
140
139
  function isolatedTerraformDestroyAction() {
141
140
  loadEnv();
142
- return destroyTerraform();
141
+ return destroyTerraform({ verbose: true });
143
142
  }
144
143
  initiateCli();
145
144
  //# sourceMappingURL=cli.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli.ts","../src/load-env.ts","../src/newman-exec.ts","../src/terraform.ts"],"sourcesContent":["import { program } from \"commander\";\nimport { loadEnv } from \"./load-env\";\nimport { executeCollection } from \"./newman-exec\";\nimport { applyTerraform, destroyTerraform } from \"./terraform\";\nimport { EndpointCliOptions } from \"./types\";\n\n/**\n * Checks if the script has been provided the required arguments.\n */\nfunction initiateCli(): void {\n program.name(\"ep-resource-json\");\n\n program\n .command(\"endpoints\")\n .description(\n \"Used to fetch json response data from Elastic Path endpoints and output them into json files.\"\n )\n .requiredOption(\n \"-s, --source <source>\",\n \"Source postman collection json file.\"\n )\n .requiredOption(\n \"-e, --env <environment-file>\",\n \"Source postman environment json file.\"\n )\n .option(\n \"-o, --output <output>\",\n \"Output location for the generated endpoint json files.\",\n process.cwd()\n )\n .option(\n \"-v, --verbose\",\n \"Logs details of terraform commands to console.\",\n false\n )\n .action(outputJsonResponesAction);\n\n program\n .command(\"ter-destroy\")\n .description(\"Run terraform destroy in isolation.\")\n .action(isolatedTerraformDestroyAction);\n\n program.parse(process.argv);\n}\nfunction outputJsonResponesAction(args: EndpointCliOptions): Promise<void> {\n const env = loadEnv();\n return applyTerraform({ verbose: args.verbose })\n .then(() => {\n return executeCollection(args, env);\n })\n .then(() => {\n return destroyTerraform({ verbose: args.verbose });\n })\n .catch((err) => {\n destroyTerraform({ verbose: args.verbose });\n console.error(\"error apply terraform: \", err);\n });\n}\n\nfunction isolatedTerraformDestroyAction(): Promise<void> {\n loadEnv();\n return destroyTerraform({ verbose: true });\n}\n\ninitiateCli();\n","import { config as dotEnvConfig } from \"dotenv\";\nimport { EPEnv } from \"./types\";\n\nexport function loadEnv(): EPEnv {\n const result = dotEnvConfig();\n if (result.error) {\n throw new Error(\n \"Failed to load environment variables. Check .env exists and is setup to match example.\"\n );\n }\n // Casting parsed response.\n return result!.parsed as EPEnv;\n}\n","import { run } from \"newman\";\nimport { readFile } from \"fs\";\nimport type {\n CollectionDefinition,\n VariableScopeDefinition,\n} from \"postman-collection\";\nimport { EndpointCliOptions, EPEnv } from \"./types\";\n\nexport async function executeCollection(\n options: EndpointCliOptions,\n env?: EPEnv\n): Promise<void> {\n const postmanCollection = await getPostmanCollection(options.source);\n const postmanEnvironment = await getPostmanEnvironment(options.env);\n return new Promise((resolve, reject) => {\n run(\n {\n collection: postmanCollection,\n reporters: [\"cli\", \"htmlextra\", \"@field123/ep-resp\"],\n reporter: {\n \"@field123/ep-resp\": {\n ...options,\n },\n },\n\n environment: postmanEnvironment,\n ...(env ? { envVar: createEnvironment(env) } : {}),\n },\n (err) => {\n if (err) {\n reject(err);\n }\n console.log(\"collection run complete!\");\n resolve();\n }\n );\n });\n}\n\nfunction createEnvironment(env: EPEnv): { key: string; value: string }[] {\n return [\n {\n key: \"clientID\",\n value: env.EPCC_CLIENT_ID,\n },\n {\n key: \"clientSecret\",\n value: env.EPCC_CLIENT_SECRET,\n },\n ];\n}\n\nfunction getPostmanEnvironment(\n source: string\n): Promise<VariableScopeDefinition> {\n console.log(`Attempting to load postman environment file from ${source}`);\n return getFile(source);\n}\n\nfunction getPostmanCollection(source: string): Promise<CollectionDefinition> {\n console.log(`Attempting to load postman collection file from ${source}`);\n return getFile(source);\n}\n\nfunction getFile(name: string): Promise<any> {\n return new Promise((resolve, reject) => {\n readFile(name, \"utf-8\", (err, data) => {\n if (err) {\n reject(err);\n }\n resolve(JSON.parse(data));\n });\n });\n}\n","import { spawn } from \"child_process\";\n\ninterface TerraformOptions {\n verbose: boolean;\n}\n\nexport function applyTerraform(\n options: TerraformOptions = { verbose: false }\n): Promise<void> {\n console.log(\"Attempting to terraform apply...\");\n return handleTerraformCommand(options, \"apply\", \"-auto-approve\").then(() =>\n console.log(\"Applied terraform successfully!\")\n );\n}\n\nexport function destroyTerraform(\n options: TerraformOptions = { verbose: false }\n): Promise<void> {\n console.log(\"Attempting to terraform destroy...\");\n return handleTerraformCommand(options, \"destroy\", \"-auto-approve\").then(() =>\n console.log(\"Destroyed terraform successfully!\")\n );\n}\n\nfunction handleTerraformCommand(\n options: TerraformOptions,\n ...args: string[]\n): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n const child = spawn(\"terraform\", args);\n\n if (options.verbose) {\n child.stdout.setEncoding(\"utf8\");\n child.stdout.on(\"data\", (data) => {\n console.log(\"stdout: \" + data);\n });\n child.stderr.on(\"data\", (data) => {\n console.log(\"stderr: \" + data);\n });\n }\n\n child.on(\"close\", (code) => {\n if (code !== 0) {\n return reject(`terraform running failed with ${code}`);\n }\n resolve();\n });\n } catch (error) {\n console.log(`error inside terraform with args ${args}: `, error);\n reject(error);\n }\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;;ACAA;AAGO,mBAA0B;AAC/B,QAAM,SAAS,aAAa;AAC5B,MAAI,OAAO,OAAO;AAChB,UAAM,IAAI,MACR,wFACF;AAAA,EACF;AAEA,SAAO,OAAQ;AACjB;;;ACZA;AACA;AAOA,iCACE,SACA,KACe;AACf,QAAM,oBAAoB,MAAM,qBAAqB,QAAQ,MAAM;AACnE,QAAM,qBAAqB,MAAM,sBAAsB,QAAQ,GAAG;AAClE,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,QACE;AAAA,MACE,YAAY;AAAA,MACZ,WAAW,CAAC,OAAO,aAAa,mBAAmB;AAAA,MACnD,UAAU;AAAA,QACR,qBAAqB,mBAChB;AAAA,MAEP;AAAA,MAEA,aAAa;AAAA,OACT,MAAM,EAAE,QAAQ,kBAAkB,GAAG,EAAE,IAAI,CAAC,IAElD,CAAC,QAAQ;AACP,UAAI,KAAK;AACP,eAAO,GAAG;AAAA,MACZ;AACA,cAAQ,IAAI,0BAA0B;AACtC,cAAQ;AAAA,IACV,CACF;AAAA,EACF,CAAC;AACH;AAEA,2BAA2B,KAA8C;AACvE,SAAO;AAAA,IACL;AAAA,MACE,KAAK;AAAA,MACL,OAAO,IAAI;AAAA,IACb;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO,IAAI;AAAA,IACb;AAAA,EACF;AACF;AAEA,+BACE,QACkC;AAClC,UAAQ,IAAI,oDAAoD,QAAQ;AACxE,SAAO,QAAQ,MAAM;AACvB;AAEA,8BAA8B,QAA+C;AAC3E,UAAQ,IAAI,mDAAmD,QAAQ;AACvE,SAAO,QAAQ,MAAM;AACvB;AAEA,iBAAiB,MAA4B;AAC3C,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,aAAS,MAAM,SAAS,CAAC,KAAK,SAAS;AACrC,UAAI,KAAK;AACP,eAAO,GAAG;AAAA,MACZ;AACA,cAAQ,KAAK,MAAM,IAAI,CAAC;AAAA,IAC1B,CAAC;AAAA,EACH,CAAC;AACH;;;ACzEA;AAMO,wBACL,UAA4B,EAAE,SAAS,MAAM,GAC9B;AACf,UAAQ,IAAI,kCAAkC;AAC9C,SAAO,uBAAuB,SAAS,SAAS,eAAe,EAAE,KAAK,MACpE,QAAQ,IAAI,iCAAiC,CAC/C;AACF;AAEO,0BACL,UAA4B,EAAE,SAAS,MAAM,GAC9B;AACf,UAAQ,IAAI,oCAAoC;AAChD,SAAO,uBAAuB,SAAS,WAAW,eAAe,EAAE,KAAK,MACtE,QAAQ,IAAI,mCAAmC,CACjD;AACF;AAEA,gCACE,YACG,MACY;AACf,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,QAAI;AACF,YAAM,QAAQ,MAAM,aAAa,IAAI;AAErC,UAAI,QAAQ,SAAS;AACnB,cAAM,OAAO,YAAY,MAAM;AAC/B,cAAM,OAAO,GAAG,QAAQ,CAAC,SAAS;AAChC,kBAAQ,IAAI,aAAa,IAAI;AAAA,QAC/B,CAAC;AACD,cAAM,OAAO,GAAG,QAAQ,CAAC,SAAS;AAChC,kBAAQ,IAAI,aAAa,IAAI;AAAA,QAC/B,CAAC;AAAA,MACH;AAEA,YAAM,GAAG,SAAS,CAAC,SAAS;AAC1B,YAAI,SAAS,GAAG;AACd,iBAAO,OAAO,iCAAiC,MAAM;AAAA,QACvD;AACA,gBAAQ;AAAA,MACV,CAAC;AAAA,IACH,SAAS,OAAP;AACA,cAAQ,IAAI,oCAAoC,UAAU,KAAK;AAC/D,aAAO,KAAK;AAAA,IACd;AAAA,EACF,CAAC;AACH;;;AH5CA,uBAA6B;AAC3B,UAAQ,KAAK,kBAAkB;AAE/B,UACG,QAAQ,WAAW,EACnB,YACC,+FACF,EACC,eACC,yBACA,sCACF,EACC,eACC,gCACA,uCACF,EACC,OACC,yBACA,0DACA,QAAQ,IAAI,CACd,EACC,OACC,iBACA,kDACA,KACF,EACC,OAAO,wBAAwB;AAElC,UACG,QAAQ,aAAa,EACrB,YAAY,qCAAqC,EACjD,OAAO,8BAA8B;AAExC,UAAQ,MAAM,QAAQ,IAAI;AAC5B;AACA,kCAAkC,MAAyC;AACzE,QAAM,MAAM,QAAQ;AACpB,SAAO,eAAe,EAAE,SAAS,KAAK,QAAQ,CAAC,EAC5C,KAAK,MAAM;AACV,WAAO,kBAAkB,MAAM,GAAG;AAAA,EACpC,CAAC,EACA,KAAK,MAAM;AACV,WAAO,iBAAiB,EAAE,SAAS,KAAK,QAAQ,CAAC;AAAA,EACnD,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,qBAAiB,EAAE,SAAS,KAAK,QAAQ,CAAC;AAC1C,YAAQ,MAAM,2BAA2B,GAAG;AAAA,EAC9C,CAAC;AACL;AAEA,0CAAyD;AACvD,UAAQ;AACR,SAAO,iBAAiB,EAAE,SAAS,KAAK,CAAC;AAC3C;AAEA,YAAY;","names":[]}
File without changes
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@field123/hacksprint-2022-js-sdk-test-response-generation",
3
+ "version": "0.0.7",
4
+ "main": "./cli.js",
5
+ "repository": "https://gitlab.elasticpath.com/Michelle.Wan/hacksprint-2022-js-sdk-test-response-generation.git",
6
+ "author": "Elastic Path",
7
+ "scripts": {
8
+ "postinstall": "terraform init && terraform get"
9
+ },
10
+ "files": [
11
+ "./"
12
+ ],
13
+ "devDependencies": {
14
+ "@semantic-release/git": "^10.0.1",
15
+ "@semantic-release/gitlab": "^9.1.0",
16
+ "@semantic-release/npm": "^9.0.1",
17
+ "@types/node": "^17.0.23",
18
+ "semantic-release": "^19.0.2",
19
+ "tsup": "^5.12.4",
20
+ "typescript": "^4.6.3"
21
+ },
22
+ "dependencies": {
23
+ "@field123/newman-reporter-ep-resp": "^0.0.5",
24
+ "@jahed/terraform": "1.1.7",
25
+ "@types/newman": "^5.3.0",
26
+ "axios": "^0.26.1",
27
+ "commander": "^9.1.0",
28
+ "dotenv": "^16.0.0",
29
+ "newman": "^5.3.2",
30
+ "newman-reporter-htmlextra": "^1.22.8"
31
+ },
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "bin": {
36
+ "hacksprint-2022-js-sdk-test-response-generation": "./cli.js"
37
+ }
38
+ }
package/package.json CHANGED
@@ -1,18 +1,17 @@
1
1
  {
2
2
  "name": "@field123/hacksprint-2022-js-sdk-test-response-generation",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "main": "dist/cli.js",
5
5
  "repository": "https://gitlab.elasticpath.com/Michelle.Wan/hacksprint-2022-js-sdk-test-response-generation.git",
6
6
  "author": "Elastic Path",
7
7
  "scripts": {
8
8
  "postinstall": "terraform init && terraform get",
9
9
  "build": "tsup && yarn build:copy:terra",
10
- "temp:publish": "cd ./dist && yarn publish --access public",
11
10
  "build:copy:terra": "cp package.json dist/ && cp README.md dist/ && cp main.tf dist/",
12
11
  "semantic-release": "semantic-release"
13
12
  },
14
13
  "files": [
15
- "./"
14
+ "dist/"
16
15
  ],
17
16
  "devDependencies": {
18
17
  "@semantic-release/git": "^10.0.1",
@@ -30,7 +29,8 @@
30
29
  "axios": "^0.26.1",
31
30
  "commander": "^9.1.0",
32
31
  "dotenv": "^16.0.0",
33
- "newman": "^5.3.2"
32
+ "newman": "^5.3.2",
33
+ "newman-reporter-htmlextra": "^1.22.8"
34
34
  },
35
35
  "publishConfig": {
36
36
  "access": "public"
package/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli.ts","../src/load-env.ts","../src/newman-exec.ts","../src/terraform.ts"],"sourcesContent":["import { program } from \"commander\";\nimport { loadEnv } from \"./load-env\";\nimport { executeCollection } from \"./newman-exec\";\nimport { applyTerraform, destroyTerraform } from \"./terraform\";\nimport { EndpointCliOptions } from \"./types\";\n\n/**\n * Checks if the script has been provided the required arguments.\n */\nfunction initiateCli(): void {\n program.name(\"ep-resource-json\");\n\n program\n .command(\"endpoints\")\n .description(\n \"Used to fetch json response data from Elastic Path endpoints and output them into json files.\"\n )\n .requiredOption(\n \"-s, --source <source>\",\n \"Source postman collection json file.\"\n )\n .requiredOption(\n \"-e, --env <environment-file>\",\n \"Source postman environment json file.\"\n )\n .option(\n \"-o, --output <output>\",\n \"Output location for the generated endpoint json files.\",\n process.cwd()\n )\n .option(\n \"-v, --verbose\",\n \"Logs details of terraform commands to console.\",\n false\n )\n .action(outputJsonResponesAction);\n\n program\n .command(\"ter-destroy\")\n .description(\"Run terraform destroy in isolation.\")\n .action(isolatedTerraformDestroyAction);\n\n program.parse(process.argv);\n\n // const { source } = program.opts<{ source: string }>();\n\n console.log(\"program: \", program.opts());\n}\nfunction outputJsonResponesAction(args: EndpointCliOptions): Promise<void> {\n const env = loadEnv();\n return applyTerraform({ verbose: args.verbose })\n .then(() => {\n return executeCollection(args, env);\n })\n .then(() => {\n return destroyTerraform({ verbose: args.verbose });\n })\n .catch((err) => {\n destroyTerraform({ verbose: args.verbose });\n console.error(\"error apply terraform: \", err);\n });\n}\n\nfunction isolatedTerraformDestroyAction(): Promise<void> {\n loadEnv();\n return destroyTerraform();\n}\n\ninitiateCli();\n","import { config as dotEnvConfig } from \"dotenv\";\nimport { EPEnv } from \"./types\";\n\nexport function loadEnv(): EPEnv {\n const result = dotEnvConfig();\n if (result.error) {\n throw new Error(\n \"Failed to load environment variables. Check .env exists and is setup to match example.\"\n );\n }\n // Casting parsed response.\n return result!.parsed as EPEnv;\n}\n","import { run } from \"newman\";\nimport { readFile } from \"fs\";\nimport type {\n CollectionDefinition,\n VariableScopeDefinition,\n} from \"postman-collection\";\nimport { EndpointCliOptions, EPEnv } from \"./types\";\n\nexport async function executeCollection(\n options: EndpointCliOptions,\n env?: EPEnv\n): Promise<void> {\n const postmanCollection = await getPostmanCollection(options.source);\n const postmanEnvironment = await getPostmanEnvironment(options.env);\n return new Promise((resolve, reject) => {\n run(\n {\n collection: postmanCollection,\n reporters: [\"cli\", \"@field123/ep-resp\"],\n reporter: {\n \"@field123/ep-resp\": {\n ...options,\n },\n },\n environment: postmanEnvironment,\n ...(env ? { envVar: createEnvironment(env) } : {}),\n },\n (err) => {\n if (err) {\n reject(err);\n }\n console.log(\"collection run complete!\");\n resolve();\n }\n );\n });\n}\n\nfunction createEnvironment(env: EPEnv): { key: string; value: string }[] {\n return [\n {\n key: \"clientID\",\n value: env.EPCC_CLIENT_ID,\n },\n {\n key: \"clientSecret\",\n value: env.EPCC_CLIENT_SECRET,\n },\n ];\n}\n\nfunction getPostmanEnvironment(\n source: string\n): Promise<VariableScopeDefinition> {\n console.log(`Attempting to load postman environment file from ${source}`);\n return getFile(source);\n}\n\nfunction getPostmanCollection(source: string): Promise<CollectionDefinition> {\n console.log(`Attempting to load postman collection file from ${source}`);\n return getFile(source);\n}\n\nfunction getFile(name: string): Promise<any> {\n return new Promise((resolve, reject) => {\n readFile(name, \"utf-8\", (err, data) => {\n if (err) {\n reject(err);\n }\n resolve(JSON.parse(data));\n });\n });\n}\n","import { spawn } from \"child_process\";\n\ninterface TerraformOptions {\n verbose: boolean;\n}\n\nexport function applyTerraform(\n options: TerraformOptions = { verbose: false }\n): Promise<void> {\n console.log(\"Attempting to terraform apply...\");\n return handleTerraformCommand(options, \"apply\", \"-auto-approve\").then(() =>\n console.log(\"Applied terraform successfully!\")\n );\n}\n\nexport function destroyTerraform(\n options: TerraformOptions = { verbose: false }\n): Promise<void> {\n console.log(\"Attempting to terraform destroy...\");\n return handleTerraformCommand(options, \"destroy\", \"-auto-approve\").then(() =>\n console.log(\"Destroyed terraform successfully!\")\n );\n}\n\nfunction handleTerraformCommand(\n options: TerraformOptions,\n ...args: string[]\n): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n const child = spawn(\"terraform\", args);\n\n if (options.verbose) {\n child.stdout.setEncoding(\"utf8\");\n child.stdout.on(\"data\", (data) => {\n console.log(\"stdout: \" + data);\n });\n child.stderr.on(\"data\", (data) => {\n console.log(\"stderr: \" + data);\n });\n }\n\n child.on(\"close\", (code) => {\n if (code !== 0) {\n return reject(`terraform running failed with ${code}`);\n }\n resolve();\n });\n } catch (error) {\n console.log(`error inside terraform with args ${args}: `, error);\n reject(error);\n }\n });\n}\n"],"mappings":"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","names":[]}
package/cli.mjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli.ts","../src/load-env.ts","../src/newman-exec.ts","../src/terraform.ts"],"sourcesContent":["import { program } from \"commander\";\nimport { loadEnv } from \"./load-env\";\nimport { executeCollection } from \"./newman-exec\";\nimport { applyTerraform, destroyTerraform } from \"./terraform\";\nimport { EndpointCliOptions } from \"./types\";\n\n/**\n * Checks if the script has been provided the required arguments.\n */\nfunction initiateCli(): void {\n program.name(\"ep-resource-json\");\n\n program\n .command(\"endpoints\")\n .description(\n \"Used to fetch json response data from Elastic Path endpoints and output them into json files.\"\n )\n .requiredOption(\n \"-s, --source <source>\",\n \"Source postman collection json file.\"\n )\n .requiredOption(\n \"-e, --env <environment-file>\",\n \"Source postman environment json file.\"\n )\n .option(\n \"-o, --output <output>\",\n \"Output location for the generated endpoint json files.\",\n process.cwd()\n )\n .option(\n \"-v, --verbose\",\n \"Logs details of terraform commands to console.\",\n false\n )\n .action(outputJsonResponesAction);\n\n program\n .command(\"ter-destroy\")\n .description(\"Run terraform destroy in isolation.\")\n .action(isolatedTerraformDestroyAction);\n\n program.parse(process.argv);\n\n // const { source } = program.opts<{ source: string }>();\n\n console.log(\"program: \", program.opts());\n}\nfunction outputJsonResponesAction(args: EndpointCliOptions): Promise<void> {\n const env = loadEnv();\n return applyTerraform({ verbose: args.verbose })\n .then(() => {\n return executeCollection(args, env);\n })\n .then(() => {\n return destroyTerraform({ verbose: args.verbose });\n })\n .catch((err) => {\n destroyTerraform({ verbose: args.verbose });\n console.error(\"error apply terraform: \", err);\n });\n}\n\nfunction isolatedTerraformDestroyAction(): Promise<void> {\n loadEnv();\n return destroyTerraform();\n}\n\ninitiateCli();\n","import { config as dotEnvConfig } from \"dotenv\";\nimport { EPEnv } from \"./types\";\n\nexport function loadEnv(): EPEnv {\n const result = dotEnvConfig();\n if (result.error) {\n throw new Error(\n \"Failed to load environment variables. Check .env exists and is setup to match example.\"\n );\n }\n // Casting parsed response.\n return result!.parsed as EPEnv;\n}\n","import { run } from \"newman\";\nimport { readFile } from \"fs\";\nimport type {\n CollectionDefinition,\n VariableScopeDefinition,\n} from \"postman-collection\";\nimport { EndpointCliOptions, EPEnv } from \"./types\";\n\nexport async function executeCollection(\n options: EndpointCliOptions,\n env?: EPEnv\n): Promise<void> {\n const postmanCollection = await getPostmanCollection(options.source);\n const postmanEnvironment = await getPostmanEnvironment(options.env);\n return new Promise((resolve, reject) => {\n run(\n {\n collection: postmanCollection,\n reporters: [\"cli\", \"@field123/ep-resp\"],\n reporter: {\n \"@field123/ep-resp\": {\n ...options,\n },\n },\n environment: postmanEnvironment,\n ...(env ? { envVar: createEnvironment(env) } : {}),\n },\n (err) => {\n if (err) {\n reject(err);\n }\n console.log(\"collection run complete!\");\n resolve();\n }\n );\n });\n}\n\nfunction createEnvironment(env: EPEnv): { key: string; value: string }[] {\n return [\n {\n key: \"clientID\",\n value: env.EPCC_CLIENT_ID,\n },\n {\n key: \"clientSecret\",\n value: env.EPCC_CLIENT_SECRET,\n },\n ];\n}\n\nfunction getPostmanEnvironment(\n source: string\n): Promise<VariableScopeDefinition> {\n console.log(`Attempting to load postman environment file from ${source}`);\n return getFile(source);\n}\n\nfunction getPostmanCollection(source: string): Promise<CollectionDefinition> {\n console.log(`Attempting to load postman collection file from ${source}`);\n return getFile(source);\n}\n\nfunction getFile(name: string): Promise<any> {\n return new Promise((resolve, reject) => {\n readFile(name, \"utf-8\", (err, data) => {\n if (err) {\n reject(err);\n }\n resolve(JSON.parse(data));\n });\n });\n}\n","import { spawn } from \"child_process\";\n\ninterface TerraformOptions {\n verbose: boolean;\n}\n\nexport function applyTerraform(\n options: TerraformOptions = { verbose: false }\n): Promise<void> {\n console.log(\"Attempting to terraform apply...\");\n return handleTerraformCommand(options, \"apply\", \"-auto-approve\").then(() =>\n console.log(\"Applied terraform successfully!\")\n );\n}\n\nexport function destroyTerraform(\n options: TerraformOptions = { verbose: false }\n): Promise<void> {\n console.log(\"Attempting to terraform destroy...\");\n return handleTerraformCommand(options, \"destroy\", \"-auto-approve\").then(() =>\n console.log(\"Destroyed terraform successfully!\")\n );\n}\n\nfunction handleTerraformCommand(\n options: TerraformOptions,\n ...args: string[]\n): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n const child = spawn(\"terraform\", args);\n\n if (options.verbose) {\n child.stdout.setEncoding(\"utf8\");\n child.stdout.on(\"data\", (data) => {\n console.log(\"stdout: \" + data);\n });\n child.stderr.on(\"data\", (data) => {\n console.log(\"stderr: \" + data);\n });\n }\n\n child.on(\"close\", (code) => {\n if (code !== 0) {\n return reject(`terraform running failed with ${code}`);\n }\n resolve();\n });\n } catch (error) {\n console.log(`error inside terraform with args ${args}: `, error);\n reject(error);\n }\n });\n}\n"],"mappings":"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","names":[]}