From d32bcec04a9f3dc88030fe2777ebf9ecc7b79ab8 Mon Sep 17 00:00:00 2001 From: Bhuvanesh Arasu Date: Tue, 8 Oct 2019 14:58:25 -0400 Subject: [PATCH 1/6] Changed path for compliance --- constants.js | 4 +++- utility/customerUtility/rulesetType.js | 11 ++++++++++- utility/customerUtility/setupCustomerAxusCode.js | 11 ++++++----- utility/customerUtility/setupCustomerDirectories.js | 9 +++++---- utility/customerUtility/setupCustomerFiles.js | 11 ++++++----- utility/customerUtility/setupCustomerResources.js | 9 +++++---- utility/customerUtility/setupCutomerBaseCode.js | 7 ++++--- utility/customerUtility/setupSampleData.js | 5 +++-- 8 files changed, 42 insertions(+), 25 deletions(-) diff --git a/constants.js b/constants.js index 87d5f20..c9d628f 100644 --- a/constants.js +++ b/constants.js @@ -34,6 +34,7 @@ const fields = { AUTHORIZATION: `Authorization`, OBJECT_FIELDS: `OBJECT_FIELDS`, EVENT: `Event`, + MODULE_NAME: `moduleName`, IS_SAMPLE_REQUIRED: `isSampleRequired`, FILE: `file`, IS_CONFIG: `isConfig`, @@ -75,7 +76,7 @@ const GENERAL = { JIRA_DEFAULT_TEXT: `CHANGEME`, DATE_FORMAT: `MM/DD/YYYY`, WHO: `¯\\_(ツ)_/¯`, - DESCRIPTION: `UPDATE THE DESCRIPTION`, + DESCRIPTION: `New`, AFFIRM: [`YES`, `Y`], NEGATIVE: [`NO`, `N`], GET: `get`, @@ -120,6 +121,7 @@ const FILES = { INI: `.ini` }, RESOURCES: `resources`, + TYPE_EXTENSION_MODULE: `TypeExtensionModule` } diff --git a/utility/customerUtility/rulesetType.js b/utility/customerUtility/rulesetType.js index 2d5feab..6082ace 100644 --- a/utility/customerUtility/rulesetType.js +++ b/utility/customerUtility/rulesetType.js @@ -28,7 +28,8 @@ const { CUSTOMER_NAME, DOCUMENT_TYPE, EVENT, - IS_CONFIG + IS_CONFIG, + MODULE_NAME }, RULE_SET: { POP_RULE_SET, @@ -37,6 +38,9 @@ const { OPTIONS: { ONE, TWO + }, + FILES: { + TYPE_EXTENSION_MODULE } } = CONSTANTS @@ -62,6 +66,8 @@ export default (essentials) => { let settingRulesetType = (rulesetName, essentials) => { let type = null let event = null + let moduleName = null + switch (rulesetName.toLowerCase()) { case POP.toLowerCase(): case POPS.toLowerCase(): @@ -70,6 +76,7 @@ let settingRulesetType = (rulesetName, essentials) => { case ONE: type = essentials[CUSTOMER][CUSTOMER_NAME] + essentials[CUSTOMER][DOCUMENT_TYPE] + POP_RULE_SET event = POPULATE + moduleName = essentials[CUSTOMER][CUSTOMER_NAME] + essentials[CUSTOMER][DOCUMENT_TYPE] + `${TYPE_EXTENSION_MODULE}` break case VLD.toLowerCase(): @@ -79,6 +86,7 @@ let settingRulesetType = (rulesetName, essentials) => { case TWO: type = essentials[CUSTOMER][CUSTOMER_NAME] + essentials[CUSTOMER][DOCUMENT_TYPE] + VLD_RULE_SET event = VALIDATE + moduleName = essentials[CUSTOMER][CUSTOMER_NAME] + essentials[CUSTOMER][DOCUMENT_TYPE] + `${TYPE_EXTENSION_MODULE}` break default: reject(new Error(NO_RULESET_TYPE_RPOVIDED)) @@ -86,4 +94,5 @@ let settingRulesetType = (rulesetName, essentials) => { } essentials[CUSTOMER][RULE_SET_TYPE] = type essentials[CUSTOMER][EVENT] = event + essentials[CUSTOMER][MODULE_NAME] = moduleName } \ No newline at end of file diff --git a/utility/customerUtility/setupCustomerAxusCode.js b/utility/customerUtility/setupCustomerAxusCode.js index 42bd106..bf54772 100644 --- a/utility/customerUtility/setupCustomerAxusCode.js +++ b/utility/customerUtility/setupCustomerAxusCode.js @@ -13,7 +13,8 @@ const { CUSTOMER_NAME, RULE_SET_TYPE, CUSTOMER_TEST_DIRECTORY, - EVENT + EVENT, + MODULE_NAME }, FILES: { EXTENSIONS: { @@ -44,15 +45,15 @@ export default (essentials) => { let who = `${essentials[USER][USER_NAME].charAt(0).toUpperCase()}${essentials[USER][USER_NAME].charAt(1).toUpperCase()}` || WHO let description = `${DESCRIPTION}` let code = constructCode(essentials, jiraNumber, date, who, description) - isFileExisting(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}/`,`${essentials[CUSTOMER][RULE_SET_TYPE]}${SPEC}`,`${SPEC}`).then((res) => { - let data = fs.readFileSync(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${SPEC}`, ENCODING_UTF8) + isFileExisting(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/`,`${essentials[CUSTOMER][RULE_SET_TYPE]}${SPEC}`,`${SPEC}`).then((res) => { + let data = fs.readFileSync(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${SPEC}`, ENCODING_UTF8) if(data && data != ``){ console.log(DATA_ALREADY_PRESENT) resolve() } }) .catch((res) => { - fs.writeFileSync(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${SPEC}`, code) + fs.writeFileSync(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${SPEC}`, code) console.log(`${AXUS_INITIAL_CODE_SETUP}`) resolve() }) @@ -79,7 +80,7 @@ let constructCode = (essentials, jiraNumber, date, who, description) => { let expect = chai.expect; let axus = require('axus'); let ctx = axus - .requireLocal('../customer/${essentials.customer.customerName}/${essentials.customer.ruleSetType}', undefined, { + .requireLocal('../customer/${essentials.customer.customerName}/${essentials.customer.moduleName}', undefined, { console: console }) .seed(require('./resources/seed.json')); //ADD YOUR SEEDFILE HERE diff --git a/utility/customerUtility/setupCustomerDirectories.js b/utility/customerUtility/setupCustomerDirectories.js index 6ed8705..87bc74f 100644 --- a/utility/customerUtility/setupCustomerDirectories.js +++ b/utility/customerUtility/setupCustomerDirectories.js @@ -14,7 +14,8 @@ const { CUSTOMER_NAME, FILE, CUSTOMER_DIRECTORY, - CUSTOMER_TEST_DIRECTORY + CUSTOMER_TEST_DIRECTORY, + MODULE_NAME }, FILES: { RESOURCES @@ -27,11 +28,11 @@ export default (essential) => { return new Promise((resolve, reject) => { if (essential[CUSTOMER] && essential[CUSTOMER][CUSTOMER_NAME]) { const customerName = essential[CUSTOMER][CUSTOMER_NAME] - createFolder(`${essential[FILE][CUSTOMER_DIRECTORY]}/${customerName}/${essential[CUSTOMER][RULE_SET_TYPE]}`) + createFolder(`${essential[FILE][CUSTOMER_DIRECTORY]}/${customerName}/${essential[CUSTOMER][MODULE_NAME]}`) .then((customerFolderCreationStauts) => { - createFolder(`${essential[FILE][CUSTOMER_TEST_DIRECTORY]}/${customerName}/${essential[CUSTOMER][RULE_SET_TYPE]}`) + createFolder(`${essential[FILE][CUSTOMER_TEST_DIRECTORY]}/${customerName}/${essential[CUSTOMER][MODULE_NAME]}`) .then(() => { - createFolder(`${essential[FILE][CUSTOMER_TEST_DIRECTORY]}/${customerName}/${essential[CUSTOMER][RULE_SET_TYPE]}/${RESOURCES}`).then((status) => { + createFolder(`${essential[FILE][CUSTOMER_TEST_DIRECTORY]}/${customerName}/${essential[CUSTOMER][MODULE_NAME]}/${RESOURCES}`).then((status) => { resolve() }) }) diff --git a/utility/customerUtility/setupCustomerFiles.js b/utility/customerUtility/setupCustomerFiles.js index d85b868..d325151 100644 --- a/utility/customerUtility/setupCustomerFiles.js +++ b/utility/customerUtility/setupCustomerFiles.js @@ -10,7 +10,8 @@ import { CUSTOMER_NAME, FILE, CUSTOMER_DIRECTORY, - CUSTOMER_TEST_DIRECTORY + CUSTOMER_TEST_DIRECTORY, + MODULE_NAME }, FILES: { EXTENSIONS: { @@ -29,13 +30,13 @@ import { export default (essentials) => { return new Promise((resolve, reject) => { - if (essentials && essentials[CUSTOMER] && essentials[CUSTOMER][CUSTOMER_NAME] && essentials[CUSTOMER][RULE_SET_TYPE]) { - isFileExisting(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `js`).then((isExisting) => { + if (essentials && essentials[CUSTOMER] && essentials[CUSTOMER][CUSTOMER_NAME] && essentials[CUSTOMER][MODULE_NAME]) { + isFileExisting(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `js`).then((isExisting) => { console.log(DATA_ALREADY_PRESENT) resolve() }).catch((nonExisting) => { - createFile(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${JS}`).then((fileCreationStatus) => { - createFile(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${SPEC}`) + createFile(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${JS}`).then((fileCreationStatus) => { + createFile(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${SPEC}`) .then(() => { resolve() }) diff --git a/utility/customerUtility/setupCustomerResources.js b/utility/customerUtility/setupCustomerResources.js index 480f465..acee5be 100644 --- a/utility/customerUtility/setupCustomerResources.js +++ b/utility/customerUtility/setupCustomerResources.js @@ -13,7 +13,8 @@ const { RULE_SET_TYPE, CUSTOMER_TEST_DIRECTORY, EVENT, - IS_SAMPLE_REQUIRED + IS_SAMPLE_REQUIRED, + MODULE_NAME }, FILES: { EXTENSIONS: { @@ -49,11 +50,11 @@ export default (essentials) => { let who = `${essentials[USER][USER_NAME].charAt(0).toUpperCase()}${essentials[USER][USER_NAME].charAt(1).toUpperCase()}` || WHO let description = `${DESCRIPTION}` let code = constructCode(essentials, jiraNumber, date, who, description) - let data = fs.readFileSync(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${SPEC}`, ENCODING_UTF8) + let data = fs.readFileSync(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${SPEC}`, ENCODING_UTF8) if (data && data != ``) { resolve() } else { - fs.writeFileSync(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${SPEC}`, code) + fs.writeFileSync(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${SPEC}`, code) resolve() } } else { @@ -86,7 +87,7 @@ let constructCode = (essentials, jiraNumber, date, who, description) => { let expect = chai.expect; let axus = require('axus'); let ctx = axus - .requireLocal('../customer/${essentials.customer.customerName}/${essentials.customer.documentType}/${essentials.customer.ruleSetType}', undefined, { + .requireLocal('../customer/${essentials.customer.customerName}/${essentials.customer.documentType}/${essentials.customer.moduleName}', undefined, { console: console }) ${isResourceSetup === AFFIRM[1]?".seed(require('./resources/seed.json')); //ADD YOUR SEEDFILE HERE":'//ADD YOUR SEEDFILE HERE'} diff --git a/utility/customerUtility/setupCutomerBaseCode.js b/utility/customerUtility/setupCutomerBaseCode.js index 0d1ee3d..c133e74 100644 --- a/utility/customerUtility/setupCutomerBaseCode.js +++ b/utility/customerUtility/setupCutomerBaseCode.js @@ -12,7 +12,8 @@ const { CUSTOMER_DIRECTORY, CUSTOMER_NAME, RULE_SET_TYPE, - EVENT + EVENT, + MODULE_NAME }, FILES: { EXTENSIONS: { @@ -42,12 +43,12 @@ export default (essentials) => { let who = `${essentials[USER][USER_NAME].charAt(0).toUpperCase()}${essentials[USER][USER_NAME].charAt(1).toUpperCase()}` || WHO let description = `${DESCRIPTION}` let code = constructCode(essentials, jiraNumber, date, who, description) - let data = fs.readFileSync(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${JS}`, ENCODING_UTF8) + let data = fs.readFileSync(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${JS}`, ENCODING_UTF8) if (data && data != ``) { console.log(DATA_ALREADY_PRESENT) resolve() } else { - fs.writeFileSync(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${JS}`, code) + fs.writeFileSync(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${JS}`, code) console.log(`${TYPE_EXTENSION_INITIAL_CODE_SETUP}`) resolve() } diff --git a/utility/customerUtility/setupSampleData.js b/utility/customerUtility/setupSampleData.js index 500f9b2..0b60247 100644 --- a/utility/customerUtility/setupSampleData.js +++ b/utility/customerUtility/setupSampleData.js @@ -37,7 +37,8 @@ const { QUERY_URL, FETCH_URL, IS_SAMPLE_REQUIRED, - ORDERS_FIELD + ORDERS_FIELD, + MODULE_NAME }, QUESTIONS: { QUESTION_SAMPLE_DATA_REQUEST, @@ -167,7 +168,7 @@ let fetchRelatedOrders = (essential, fetchedObject, options) => { } let setupResources = (essentials, data, docType, suffix) => { - fs.writeFileSync(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}/${RESOURCES}/${docType||essentials[CUSTOMER][DOCUMENT_TYPE]}${_JSON}`, data) + fs.writeFileSync(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${RESOURCES}/${docType||essentials[CUSTOMER][DOCUMENT_TYPE]}${_JSON}`, data) } let settingupSampleData = (essential, isDataRequired) => { From c5f5719a5be4394d35d4174b42c5a43ae6d934c3 Mon Sep 17 00:00:00 2001 From: Bhuvanesh Arasu Date: Tue, 8 Oct 2019 16:02:15 -0400 Subject: [PATCH 2/6] Removed unwanted module --- utility/customerUtility/setupCustomerAxusCode.js | 2 +- utils.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/utility/customerUtility/setupCustomerAxusCode.js b/utility/customerUtility/setupCustomerAxusCode.js index bf54772..fbc1f08 100644 --- a/utility/customerUtility/setupCustomerAxusCode.js +++ b/utility/customerUtility/setupCustomerAxusCode.js @@ -73,7 +73,7 @@ let constructCode = (essentials, jiraNumber, date, who, description) => { * * (B)ug/(E)nh/(I)DB # Date Who Description * ------------------- ---------- --- --------------------------------------------------------------- - * ${jiraNumber}\t\t\t\t\t\t ${date} ${who}\t${description} + * ${jiraNumber}\t\t\t\t\t\t ${date} \t${who}\t${description} */ let chai = require('chai'); chai.use(require('chai-things')); diff --git a/utils.js b/utils.js index 3563995..abfbdb8 100644 --- a/utils.js +++ b/utils.js @@ -181,7 +181,7 @@ let processCustomer = (essentials) => { await setupSampleData(essentials) await setupCutomerBaseCode(essentials) await setupCustomerAxusCode(essentials) - await setupCustomerResources(essentials) + // await setupCustomerResources(essentials) resolve() }) } From 3e45be726ac4f5d7f09966099c4f6ddee6577ae4 Mon Sep 17 00:00:00 2001 From: Bhuvanesh Arasu Date: Wed, 9 Oct 2019 16:47:30 -0400 Subject: [PATCH 3/6] Preparing module for platform changes STAGE:1 --- TypeExtensionManager.js | 4 +- constants.js | 40 ++- package.json | 3 +- .../customerUtility/setupCustomerAxusCode.js | 6 +- .../setupCustomerDirectories.js | 2 +- utility/customerUtility/setupCustomerFiles.js | 99 +++--- .../customerUtility/setupCutomerBaseCode.js | 18 +- utility/fileUtility/isFileExisting.js | 21 +- .../platformUtility/createPlatformFiles.js | 46 +++ .../platformUtility/createPlatformFolders.js | 33 ++ utility/platformUtility/index.js | 2 + utility/platformUtility/setupPlatformFile.js | 298 ++++++++++++++++++ utils.js | 41 ++- 13 files changed, 544 insertions(+), 69 deletions(-) create mode 100644 utility/platformUtility/createPlatformFiles.js create mode 100644 utility/platformUtility/createPlatformFolders.js create mode 100644 utility/platformUtility/index.js create mode 100644 utility/platformUtility/setupPlatformFile.js diff --git a/TypeExtensionManager.js b/TypeExtensionManager.js index 89d1ec2..a23473b 100644 --- a/TypeExtensionManager.js +++ b/TypeExtensionManager.js @@ -7,7 +7,7 @@ import utils from './utils' import CONSTANTS from './constants' import { runConfig } from './utility/customerUtility'; -let {initModules, writeUserData, getBasicKey, processCustomer} = utils +let {initModules, writeUserData, getBasicKey, processCustomer, processPlatformModule} = utils let {CMD_ARGUMENTS:{DOC_ARG, TYPE_ARG, HELP_ARG}, STARTUP_LOG, MESSAGES:{HELP:{HELP_TEXT}}} = CONSTANTS const main = async () => { @@ -34,6 +34,8 @@ const main = async () => { runConfig(essentials, configType, rulesetType) } await processCustomer(essentials) + await processPlatformModule(essentials) + console.log(essentials) process.exit() }) } diff --git a/constants.js b/constants.js index c9d628f..96cb314 100644 --- a/constants.js +++ b/constants.js @@ -36,7 +36,11 @@ const fields = { EVENT: `Event`, MODULE_NAME: `moduleName`, IS_SAMPLE_REQUIRED: `isSampleRequired`, + MODULE_PATH: `modulePath`, + ADD_PLATFORM_FILE: `addPlatformFile`, FILE: `file`, + RANK: `rank`, + PLATFORM_FILE: `platformFile`, IS_CONFIG: `isConfig`, HTTP_HEADER:{ headers:{ @@ -66,6 +70,33 @@ const CMD_ARGUMENTS = { HELP_ARG: `--h` } +const PLATFORM = { + FOLDERS:{ + $TYPE_EXTENSION_D1: `$TypeExtensionD1`, + CUSTOM_OBJECT_MODULE: `CustomObjectModule`, + PLATFORM_LOCALIZATION: `PlatformLocalization`, + TYPE_EXTENSION_SCRIPT: `typeExtensionScript` + }, + FILES:{ + METADATA_PROPERTIES: `metadata.properties`, + DEFAULT_RANK: 10, + RANK: 10, + PLATFORM_MODULE: `PlatformModule`, + FILE_NAME: ``, + set SET_RANK (rank) { + this.RANK = `${rank}` + }, + get GET_RANK () { + return this.RANK + }, + set SET_FILE_NAME (name) { + this.FILE_NAME = `${name}__Rank-${this.GET_RANK}` + }, + get GET_FILE_NAME () { + return this.FILE_NAME + } + } +} const GENERAL = { ENCODING_UTF8: `utf8`, @@ -101,7 +132,8 @@ const GTNEXUS = { OQL: `oql`, QUERY: `query`, VERSION:{ - LATEST: `3.1` + LATEST: `3.1`, + FULL_VERSION: `310` }, }, get SUPQ_URL() { @@ -118,7 +150,8 @@ const FILES = { JS: `.js`, SPEC: `.spec.js`, _JSON: `.json`, - INI: `.ini` + INI: `.ini`, + XML: `.xml` }, RESOURCES: `resources`, TYPE_EXTENSION_MODULE: `TypeExtensionModule` @@ -372,5 +405,6 @@ export default{ OPTIONS, fields, CMD_ARGUMENTS, - STARTUP_LOG + STARTUP_LOG, + PLATFORM } \ No newline at end of file diff --git a/package.json b/package.json index 107c644..bdef8d7 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,8 @@ "node-cmd": "^3.0.0", "shelljs": "^0.8.3", "slash": "^3.0.0", - "upath": "^1.2.0" + "upath": "^1.2.0", + "xml-js": "^1.6.11" }, "devDependencies": { "babel-cli": "^6.26.0", diff --git a/utility/customerUtility/setupCustomerAxusCode.js b/utility/customerUtility/setupCustomerAxusCode.js index fbc1f08..b66bd58 100644 --- a/utility/customerUtility/setupCustomerAxusCode.js +++ b/utility/customerUtility/setupCustomerAxusCode.js @@ -45,11 +45,15 @@ export default (essentials) => { let who = `${essentials[USER][USER_NAME].charAt(0).toUpperCase()}${essentials[USER][USER_NAME].charAt(1).toUpperCase()}` || WHO let description = `${DESCRIPTION}` let code = constructCode(essentials, jiraNumber, date, who, description) - isFileExisting(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/`,`${essentials[CUSTOMER][RULE_SET_TYPE]}${SPEC}`,`${SPEC}`).then((res) => { + isFileExisting(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/`,`${essentials[CUSTOMER][RULE_SET_TYPE]}`,`${SPEC}`).then((res) => { let data = fs.readFileSync(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${SPEC}`, ENCODING_UTF8) if(data && data != ``){ console.log(DATA_ALREADY_PRESENT) resolve() + }else{ + fs.writeFileSync(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${SPEC}`, code) + console.log(`${AXUS_INITIAL_CODE_SETUP}`) + resolve() } }) .catch((res) => { diff --git a/utility/customerUtility/setupCustomerDirectories.js b/utility/customerUtility/setupCustomerDirectories.js index 87bc74f..69c6349 100644 --- a/utility/customerUtility/setupCustomerDirectories.js +++ b/utility/customerUtility/setupCustomerDirectories.js @@ -1,4 +1,4 @@ -import CONSTANTS from '../../constants' + import CONSTANTS from '../../constants' import { createFolder } from '../fileUtility' diff --git a/utility/customerUtility/setupCustomerFiles.js b/utility/customerUtility/setupCustomerFiles.js index d325151..bdadf3f 100644 --- a/utility/customerUtility/setupCustomerFiles.js +++ b/utility/customerUtility/setupCustomerFiles.js @@ -1,56 +1,67 @@ import { createFile, isFileExisting - } from '../fileUtility' - import CONSTANTS from '../../constants' - const { +} from '../fileUtility' +import CONSTANTS from '../../constants' + +const { fields: { - CUSTOMER, - RULE_SET_TYPE, - CUSTOMER_NAME, - FILE, - CUSTOMER_DIRECTORY, - CUSTOMER_TEST_DIRECTORY, - MODULE_NAME + CUSTOMER, + RULE_SET_TYPE, + CUSTOMER_NAME, + FILE, + CUSTOMER_DIRECTORY, + CUSTOMER_TEST_DIRECTORY, + MODULE_NAME, + MODULE_PATH, + ADD_PLATFORM_FILE }, FILES: { - EXTENSIONS: { - JS, - SPEC - } + EXTENSIONS: { + JS, + SPEC + } }, MESSAGES: { - INFO: { - COULD_NOT_CREATE_AXUS_TEST_FILE, - DATA_ALREADY_PRESENT - } + INFO: { + COULD_NOT_CREATE_AXUS_TEST_FILE, + DATA_ALREADY_PRESENT + } } - } = CONSTANTS - - - export default (essentials) => { +} = CONSTANTS + + +export default (essentials) => { return new Promise((resolve, reject) => { - if (essentials && essentials[CUSTOMER] && essentials[CUSTOMER][CUSTOMER_NAME] && essentials[CUSTOMER][MODULE_NAME]) { - isFileExisting(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `js`).then((isExisting) => { - console.log(DATA_ALREADY_PRESENT) - resolve() - }).catch((nonExisting) => { - createFile(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${JS}`).then((fileCreationStatus) => { - createFile(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${SPEC}`) - .then(() => { - resolve() - }) - .catch(() => { - console.log(COULD_NOT_CREATE_AXUS_TEST_FILE) - resolve() - }) + if (essentials && essentials[CUSTOMER] && essentials[CUSTOMER][CUSTOMER_NAME] && essentials[CUSTOMER][MODULE_NAME]) { + isFileExisting(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${JS}`).then((isExisting) => { + if (isExisting) { + essentials[CUSTOMER][MODULE_PATH] = `${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}` + essentials[CUSTOMER][ADD_PLATFORM_FILE] = false + console.log(DATA_ALREADY_PRESENT) + } else { + createFile(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${JS}`).then((fileCreationStatus) => { + essentials[CUSTOMER][ADD_PLATFORM_FILE] = true + createFile(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${SPEC}`) + .then(() => { + essentials[CUSTOMER][MODULE_PATH] = `${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}` + resolve() + }) + .catch(() => { + console.log(COULD_NOT_CREATE_AXUS_TEST_FILE) + resolve() + }) + }) + .catch((fileCreationStatus) => { + reject() + }) + } + resolve() + }).catch((nonExisting) => { + reject() }) - .catch((fileCreationStatus) => { - reject() - }) - }) - } else { - reject() - } + } else { + reject() + } }) - } \ No newline at end of file +} \ No newline at end of file diff --git a/utility/customerUtility/setupCutomerBaseCode.js b/utility/customerUtility/setupCutomerBaseCode.js index c133e74..c84659f 100644 --- a/utility/customerUtility/setupCutomerBaseCode.js +++ b/utility/customerUtility/setupCutomerBaseCode.js @@ -1,6 +1,7 @@ import fs from 'fs'; import moment from 'moment'; import CONSTANTS from '../../constants'; +import {isFileExisting} from "../fileUtility"; const { fields: { CUSTOMER, @@ -36,17 +37,24 @@ const { } = CONSTANTS export default (essentials) => { - return new Promise((resolve, reject) => { + return new Promise(async (resolve, reject) => { if (essentials && essentials[CUSTOMER][DOC_SHORT_FORM] && essentials[CUSTOMER][JIRA_NUMBER]) { let jiraNumber = essentials[CUSTOMER][JIRA_NUMBER] let date = `${moment().format(DATE_FORMAT)}` let who = `${essentials[USER][USER_NAME].charAt(0).toUpperCase()}${essentials[USER][USER_NAME].charAt(1).toUpperCase()}` || WHO let description = `${DESCRIPTION}` let code = constructCode(essentials, jiraNumber, date, who, description) - let data = fs.readFileSync(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${JS}`, ENCODING_UTF8) - if (data && data != ``) { - console.log(DATA_ALREADY_PRESENT) - resolve() + let boolIsFileExisting = await isFileExisting(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}`,`${essentials[CUSTOMER][RULE_SET_TYPE]}`,`${JS}`) + console.log(boolIsFileExisting+ ":"+"->") + if (boolIsFileExisting) { + let data = fs.readFileSync(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${JS}`) + if(data.length != 0){ + console.log(DATA_ALREADY_PRESENT) + resolve() + }else{ + fs.writeFileSync(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${JS}`, code) + resolve() + } } else { fs.writeFileSync(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${JS}`, code) console.log(`${TYPE_EXTENSION_INITIAL_CODE_SETUP}`) diff --git a/utility/fileUtility/isFileExisting.js b/utility/fileUtility/isFileExisting.js index 04f3026..c88e132 100644 --- a/utility/fileUtility/isFileExisting.js +++ b/utility/fileUtility/isFileExisting.js @@ -4,16 +4,25 @@ export default (path, fileName, fileExtension) => { return new Promise((resolve, reject) => { if(path && fileExtension && fileName){ try{ - let data = fs.readFileSync(`${path}/${fileName}.${fileExtension}`, 'utf8') - if(data){ - resolve(true) + const isFileExisting = fs.existsSync(`${path}/${fileName}${fileExtension}`) + if(isFileExisting){ + let data = fs.readFileSync(`${path}/${fileName}${fileExtension}`, 'utf8') + if(data){ + resolve(true) + }else if(data.length === 0){ + resolve(true) + }else{ + console.log(data) + resolve(false) + } }else{ - console.log(data) - reject(false) + resolve(false) } }catch(fe){ - reject(false) + reject(false) } + }else{ + resolve(false) } }) } \ No newline at end of file diff --git a/utility/platformUtility/createPlatformFiles.js b/utility/platformUtility/createPlatformFiles.js new file mode 100644 index 0000000..9eff172 --- /dev/null +++ b/utility/platformUtility/createPlatformFiles.js @@ -0,0 +1,46 @@ +import createFile from '../fileUtility/createFile' +import isFileExisting from '../fileUtility/isFileExisting' +import readFromFile from '../fileUtility/readFromFile' +import CONSTANTS from '../../constants' + +const { + fields: { + CUSTOMER, + RANK, + MODULE_PATH, + DOCUMENT_TYPE, + ADD_PLATFORM_FILE + }, + FILES:{ + EXTENSIONS:{ + XML + } + }, + PLATFORM: { + FILES, + FOLDERS: { + $TYPE_EXTENSION_D1, + TYPE_EXTENSION_SCRIPT + } + } +} = CONSTANTS + +export default (essentials) => { + return new Promise(async (resolve, reject) => { + const $typeExtensionD1 = `${essentials[CUSTOMER][MODULE_PATH]}/${$TYPE_EXTENSION_D1}` + FILES.SET_FILE_NAME = `${essentials[CUSTOMER][DOCUMENT_TYPE]}` + let boolIsFileExisting = true + let rank = 0 + while(boolIsFileExisting) { + rank+=10 + FILES.SET_RANK = rank + FILES.SET_FILE_NAME = `${essentials[CUSTOMER][DOCUMENT_TYPE]}` + boolIsFileExisting = await isFileExisting(`${$typeExtensionD1}`, `${FILES.GET_FILE_NAME}`, `${XML}`) + } + if(essentials[CUSTOMER][ADD_PLATFORM_FILE]){ + await createFile($typeExtensionD1, FILES.GET_FILE_NAME, `${XML}`) + essentials[CUSTOMER][RANK] = FILES.GET_RANK + } + resolve() + }) +} diff --git a/utility/platformUtility/createPlatformFolders.js b/utility/platformUtility/createPlatformFolders.js new file mode 100644 index 0000000..c233ae3 --- /dev/null +++ b/utility/platformUtility/createPlatformFolders.js @@ -0,0 +1,33 @@ +import {createFolder} from "../fileUtility"; +import CONSTANTS from '../../constants' + +const { + fields:{ + CUSTOMER_DIRECTORY, + CUSTOMER, + RULE_SET_TYPE, + MODULE_NAME, + MODULE_PATH + }, + PLATFORM:{ + FOLDERS:{ + $TYPE_EXTENSION_D1, + PLATFORM_LOCALIZATION, + TYPE_EXTENSION_SCRIPT + } + } +} = CONSTANTS + +export default (essentials) => { + return new Promise(async (resolve, reject) => { + console.log(essentials) + const $typeExtensionPathD1 = `${essentials[CUSTOMER][MODULE_PATH]}/${$TYPE_EXTENSION_D1}` + const platformLocalization = `${essentials[CUSTOMER][MODULE_PATH]}/${PLATFORM_LOCALIZATION}` + const typeExtensionScript = `${essentials[CUSTOMER][MODULE_PATH]}/${TYPE_EXTENSION_SCRIPT}` + + await createFolder($typeExtensionPathD1) + await createFolder(platformLocalization) + await createFolder(typeExtensionScript) + resolve() + }) +} \ No newline at end of file diff --git a/utility/platformUtility/index.js b/utility/platformUtility/index.js new file mode 100644 index 0000000..2cef6b8 --- /dev/null +++ b/utility/platformUtility/index.js @@ -0,0 +1,2 @@ +export { default as createPlatformFiles } from './createPlatformFiles' +export { default as createPlatformFolders } from './createPlatformFolders' \ No newline at end of file diff --git a/utility/platformUtility/setupPlatformFile.js b/utility/platformUtility/setupPlatformFile.js new file mode 100644 index 0000000..7b5c184 --- /dev/null +++ b/utility/platformUtility/setupPlatformFile.js @@ -0,0 +1,298 @@ +import xmljsonParser from 'xml-js' +import CONSTANTS from '../../constants' +import fs from 'fs' + + +const { + fields: { + CUSTOMER, + DOCUMENT_TYPE, + RANK, + EVENT, + ADD_PLATFORM_FILE, + PLATFORM_FILE, + MODULE_PATH + }, + PLATFORM:{ + FILES, + FOLDERS:{ + $TYPE_EXTENSION_D1 + } + }, + FILES:{ + EXTENSIONS:{ + XML + } + }, + GTNEXUS: { + API: { + VERSION: { + FULL_VERSION, + LATEST + } + } + } +} = CONSTANTS + +export default (essentials) => { + return new Promise((resolve, reject) => { + if (essentials[CUSTOMER][ADD_PLATFORM_FILE]) { + let platformData = ` + { + "elements": [ + { + "type": "element", + "name": "TYPEEXTENSIOND1", + "elements": [ + { + "type": "element", + "name": "__metadata", + "elements": [ + { + "type": "element", + "name": "apiVersion", + "elements": [ + { + "type": "text", + "text": "${LATEST}" + } + ] + }, + { + "type": "element", + "name": "type", + "elements": [ + { + "type": "text", + "text": "$TypeExtensionD1" + } + ] + }, + { + "type": "element", + "name": "uid", + "elements": [ + { + "type": "text", + "text": "" + } + ] + }, + { + "type": "element", + "name": "createTimestamp", + "elements": [ + { + "type": "text", + "text": "" + } + ] + }, + { + "type": "element", + "name": "modifyTimestamp", + "elements": [ + { + "type": "text", + "text": "" + } + ] + }, + { + "type": "element", + "name": "status", + "elements": [ + { + "type": "text", + "text": "Active" + } + ] + }, + { + "type": "element", + "name": "userModRev", + "elements": [ + { + "type": "text", + "text": "1" + } + ] + }, + { + "type": "element", + "name": "creatorId", + "elements": [ + { + "type": "text", + "text": "-1" + } + ] + }, + { + "type": "element", + "name": "fingerprint", + "elements": [ + { + "type": "text", + "text": "" + } + ] + }, + { + "type": "element", + "name": "redirectUrl", + "elements": [ + { + "type": "text", + "text": "" + } + ] + }, + { + "type": "element", + "name": "self", + "elements": [ + { + "type": "text", + "text": "" + } + ] + } + ] + }, + { + "type": "element", + "name": "type", + "elements": [ + { + "type": "text", + "text": "$TypeExtensionD1" + } + ] + }, + { + "type": "element", + "name": "platformModuleType", + "elements": [ + { + "type": "text", + "text": "PlatformModule" + } + ] + }, + { + "type": "element", + "name": "documentType", + "elements": [ + { + "type": "text", + "text": "${essentials[CUSTOMER][DOCUMENT_TYPE]}" + } + ] + }, + { + "type": "element", + "name": "apiVersion", + "elements": [ + { + "type": "text", + "text": "${FULL_VERSION}" + } + ] + }, + { + "type": "element", + "name": "status", + "elements": [ + { + "type": "text", + "text": "Active" + } + ] + }, + { + "type": "element", + "name": "rank", + "elements": [ + { + "type": "text", + "text": "${essentials[CUSTOMER][RANK]}" + } + ] + }, + { + "type": "element", + "name": "callbacks", + "elements": [ + { + "type": "element", + "name": "uid", + "elements": [ + { + "type": "text", + "text": "" + } + ] + }, + { + "type": "element", + "name": "event", + "elements": [ + { + "type": "text", + "text": "on${essentials[CUSTOMER][EVENT]}" + } + ] + }, + { + "type": "element", + "name": "role", + "elements": [ + { + "type": "text", + "text": "Buyer" + } + ] + }, + { + "type": "element", + "name": "functionName", + "elements": [ + { + "type": "text", + "text": "fnOn${essentials[CUSTOMER][EVENT]}" + } + ] + } + ] + }, + { + "type": "element", + "name": "fingerprint", + "elements": [ + { + "type": "text", + "text": "" + } + ] + } + ] + } + ] + } + ` + let options = {compact: false, ignoreComment: true, spaces: 4}; + try { + let result = xmljsonParser.json2xml(JSON.parse(platformData), options); + essentials[CUSTOMER][PLATFORM_FILE] = result + fs.writeFileSync(`${essentials[CUSTOMER][MODULE_PATH]}/${$TYPE_EXTENSION_D1}/${FILES.GET_FILE_NAME}${XML}`, essentials[CUSTOMER][PLATFORM_FILE]) + resolve() + } catch (parseError) { + reject() + } + } else { + resolve() + } + + }) +} \ No newline at end of file diff --git a/utils.js b/utils.js index abfbdb8..c2fd74c 100644 --- a/utils.js +++ b/utils.js @@ -1,6 +1,7 @@ import CONSTANTS from './constants' import path from 'path' import Cryptr from 'cryptr' +import setupPlatformFile from './utility/platformUtility/setupPlatformFile' const cryptr = new Cryptr('gtnexusisBest@123') @@ -23,6 +24,11 @@ const { setupCustomerResources, } = require('./utility/customerUtility') +const { + createPlatformFolders, + createPlatformFiles +} = require('./utility/platformUtility') + let { GENERAL: { ENCODING_UTF8, @@ -60,12 +66,23 @@ let { let initModules = () => { console.log(`HELP: npm start -- --h`) return new Promise((resolve, reject) => { - isFileExisting(`.`, `${configFile}`, `ini`).then((isExisting) => { - readFile(`.`, `${configFile}`, `ini`).then((data) => { - essentials = JSON.parse(data) - essentials[EXISTING] = isExisting - resolve(essentials) - }) + isFileExisting(`.`, `${configFile}`, `.ini`).then((isExisting) => { + if(!isExisting){ + createFile(`.`, `${configFile}`, `.ini`).then(() => { + essentials[EXISTING] = false + resolve(essentials) + }) + .catch((err) => { + console.log(err) + reject() + }) + }else{ + readFile(`.`, `${configFile}`, `ini`).then((data) => { + essentials = JSON.parse(data) + essentials[EXISTING] = isExisting + resolve(essentials) + }) + } }).catch((nonExistent) => { createFile(`.`, `${configFile}`, `.ini`).then(() => { essentials[EXISTING] = nonExistent @@ -186,10 +203,20 @@ let processCustomer = (essentials) => { }) } +let processPlatformModule = (essentials) => { + return new Promise(async (resolve, reject) => { + await createPlatformFolders(essentials) + await createPlatformFiles(essentials) + await setupPlatformFile(essentials) + resolve() + }) +} + export default { initModules, writeUserData, getBasicKey, - processCustomer + processCustomer, + processPlatformModule } \ No newline at end of file From 11409343f969940e2e713396f0b9440447bd9137 Mon Sep 17 00:00:00 2001 From: Bhuvanesh Arasu Date: Fri, 11 Oct 2019 14:58:45 -0400 Subject: [PATCH 4/6] TypeExtension Platform ready module --- constants.js | 6 +- .../setupCustomerDirectories.js | 9 +- utility/customerUtility/setupCustomerFiles.js | 9 +- .../customerUtility/setupCutomerBaseCode.js | 22 +- .../platformUtility/createPlatformFiles.js | 18 +- utility/platformUtility/setupPlatformFile.js | 299 +++++++++++++++++- 6 files changed, 340 insertions(+), 23 deletions(-) diff --git a/constants.js b/constants.js index 96cb314..97043c5 100644 --- a/constants.js +++ b/constants.js @@ -78,7 +78,7 @@ const PLATFORM = { TYPE_EXTENSION_SCRIPT: `typeExtensionScript` }, FILES:{ - METADATA_PROPERTIES: `metadata.properties`, + METADATA_PROPERTIES: `metadata`, DEFAULT_RANK: 10, RANK: 10, PLATFORM_MODULE: `PlatformModule`, @@ -106,6 +106,7 @@ const GENERAL = { JIRA_BUG_HEADER: `GTBUG-`, JIRA_DEFAULT_TEXT: `CHANGEME`, DATE_FORMAT: `MM/DD/YYYY`, + FULL_DATE_FORMAT: `YYYY-MM-DD HH:mm:ss.SSS`, WHO: `¯\\_(ツ)_/¯`, DESCRIPTION: `New`, AFFIRM: [`YES`, `Y`], @@ -151,7 +152,8 @@ const FILES = { SPEC: `.spec.js`, _JSON: `.json`, INI: `.ini`, - XML: `.xml` + XML: `.xml`, + PROPERTIES: `.properties` }, RESOURCES: `resources`, TYPE_EXTENSION_MODULE: `TypeExtensionModule` diff --git a/utility/customerUtility/setupCustomerDirectories.js b/utility/customerUtility/setupCustomerDirectories.js index 69c6349..2db57d1 100644 --- a/utility/customerUtility/setupCustomerDirectories.js +++ b/utility/customerUtility/setupCustomerDirectories.js @@ -17,9 +17,14 @@ const { CUSTOMER_TEST_DIRECTORY, MODULE_NAME }, + PLATFORM:{ + FOLDERS:{ + TYPE_EXTENSION_SCRIPT + } + }, FILES: { RESOURCES - } + }, } = CONSTANTS @@ -28,7 +33,7 @@ export default (essential) => { return new Promise((resolve, reject) => { if (essential[CUSTOMER] && essential[CUSTOMER][CUSTOMER_NAME]) { const customerName = essential[CUSTOMER][CUSTOMER_NAME] - createFolder(`${essential[FILE][CUSTOMER_DIRECTORY]}/${customerName}/${essential[CUSTOMER][MODULE_NAME]}`) + createFolder(`${essential[FILE][CUSTOMER_DIRECTORY]}/${customerName}/${essential[CUSTOMER][MODULE_NAME]}/${TYPE_EXTENSION_SCRIPT}`) .then((customerFolderCreationStauts) => { createFolder(`${essential[FILE][CUSTOMER_TEST_DIRECTORY]}/${customerName}/${essential[CUSTOMER][MODULE_NAME]}`) .then(() => { diff --git a/utility/customerUtility/setupCustomerFiles.js b/utility/customerUtility/setupCustomerFiles.js index bdadf3f..deb9629 100644 --- a/utility/customerUtility/setupCustomerFiles.js +++ b/utility/customerUtility/setupCustomerFiles.js @@ -22,6 +22,11 @@ const { SPEC } }, + PLATFORM:{ + FOLDERS:{ + TYPE_EXTENSION_SCRIPT + } + }, MESSAGES: { INFO: { COULD_NOT_CREATE_AXUS_TEST_FILE, @@ -34,13 +39,13 @@ const { export default (essentials) => { return new Promise((resolve, reject) => { if (essentials && essentials[CUSTOMER] && essentials[CUSTOMER][CUSTOMER_NAME] && essentials[CUSTOMER][MODULE_NAME]) { - isFileExisting(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${JS}`).then((isExisting) => { + isFileExisting(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${TYPE_EXTENSION_SCRIPT}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${JS}`).then((isExisting) => { if (isExisting) { essentials[CUSTOMER][MODULE_PATH] = `${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}` essentials[CUSTOMER][ADD_PLATFORM_FILE] = false console.log(DATA_ALREADY_PRESENT) } else { - createFile(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${JS}`).then((fileCreationStatus) => { + createFile(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${TYPE_EXTENSION_SCRIPT}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${JS}`).then((fileCreationStatus) => { essentials[CUSTOMER][ADD_PLATFORM_FILE] = true createFile(`${essentials[FILE][CUSTOMER_TEST_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}`, `${essentials[CUSTOMER][RULE_SET_TYPE]}`, `${SPEC}`) .then(() => { diff --git a/utility/customerUtility/setupCutomerBaseCode.js b/utility/customerUtility/setupCutomerBaseCode.js index c84659f..27f2a20 100644 --- a/utility/customerUtility/setupCutomerBaseCode.js +++ b/utility/customerUtility/setupCutomerBaseCode.js @@ -1,5 +1,5 @@ import fs from 'fs'; -import moment from 'moment'; +import moment from 'moment' import CONSTANTS from '../../constants'; import {isFileExisting} from "../fileUtility"; const { @@ -21,6 +21,11 @@ const { JS, } }, + PLATFORM:{ + FOLDERS:{ + TYPE_EXTENSION_SCRIPT + } + }, GENERAL: { DATE_FORMAT, WHO, @@ -44,19 +49,19 @@ export default (essentials) => { let who = `${essentials[USER][USER_NAME].charAt(0).toUpperCase()}${essentials[USER][USER_NAME].charAt(1).toUpperCase()}` || WHO let description = `${DESCRIPTION}` let code = constructCode(essentials, jiraNumber, date, who, description) - let boolIsFileExisting = await isFileExisting(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}`,`${essentials[CUSTOMER][RULE_SET_TYPE]}`,`${JS}`) + let boolIsFileExisting = await isFileExisting(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${TYPE_EXTENSION_SCRIPT}`,`${essentials[CUSTOMER][RULE_SET_TYPE]}`,`${JS}`) console.log(boolIsFileExisting+ ":"+"->") if (boolIsFileExisting) { - let data = fs.readFileSync(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${JS}`) + let data = fs.readFileSync(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${TYPE_EXTENSION_SCRIPT}/${essentials[CUSTOMER][RULE_SET_TYPE]}${JS}`) if(data.length != 0){ console.log(DATA_ALREADY_PRESENT) resolve() }else{ - fs.writeFileSync(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${JS}`, code) + fs.writeFileSync(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${TYPE_EXTENSION_SCRIPT}/${essentials[CUSTOMER][RULE_SET_TYPE]}${JS}`, code) resolve() } } else { - fs.writeFileSync(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${essentials[CUSTOMER][RULE_SET_TYPE]}${JS}`, code) + fs.writeFileSync(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${TYPE_EXTENSION_SCRIPT}/${essentials[CUSTOMER][RULE_SET_TYPE]}${JS}`, code) console.log(`${TYPE_EXTENSION_INITIAL_CODE_SETUP}`) resolve() } @@ -70,8 +75,7 @@ export default (essentials) => { let constructCode = (essentials, jiraNumber, date, who, description) => { let eventType = `${essentials[CUSTOMER][EVENT]}` - let sampleCode = ` - /** + let sampleCode = `/** * C H A N G E L O G * * (B)ug/(E)nh/(I)DB # Date Who Description @@ -82,7 +86,7 @@ let constructCode = (essentials, jiraNumber, date, who, description) => { /** * THIS IS AUTO GENERATED */ - console.log(${(essentials[CUSTOMER][DOC_SHORT_FORM]).toLowerCase()}) + console.log(${(essentials[CUSTOMER][DOC_SHORT_FORM]).toLowerCase()}); } \n\n\n\n\n\n\n\n\n //Utility @@ -92,5 +96,5 @@ let constructCode = (essentials, jiraNumber, date, who, description) => { } } ` - return '\uFEFF' + sampleCode.replace(/\n/g, '\r\n') + return sampleCode.replace(/\n/g, '\r\n') } \ No newline at end of file diff --git a/utility/platformUtility/createPlatformFiles.js b/utility/platformUtility/createPlatformFiles.js index 9eff172..5f47aa5 100644 --- a/utility/platformUtility/createPlatformFiles.js +++ b/utility/platformUtility/createPlatformFiles.js @@ -13,14 +13,19 @@ const { }, FILES:{ EXTENSIONS:{ - XML + XML, + PROPERTIES } }, PLATFORM: { FILES, + FILES:{ + PLATFORM_MODULE, + METADATA_PROPERTIES + }, FOLDERS: { $TYPE_EXTENSION_D1, - TYPE_EXTENSION_SCRIPT + PLATFORM_LOCALIZATION } } } = CONSTANTS @@ -41,6 +46,15 @@ export default (essentials) => { await createFile($typeExtensionD1, FILES.GET_FILE_NAME, `${XML}`) essentials[CUSTOMER][RANK] = FILES.GET_RANK } + if(essentials[CUSTOMER][ADD_PLATFORM_FILE]){ + await createFile(`${essentials[CUSTOMER][MODULE_PATH]}`,`${PLATFORM_MODULE}`,`${XML}` ) + } + if(essentials[CUSTOMER][ADD_PLATFORM_FILE]){ + await createFile(`${essentials[CUSTOMER][MODULE_PATH]}`,`${METADATA_PROPERTIES}`,`${PROPERTIES}` ) + } + if(essentials[CUSTOMER][ADD_PLATFORM_FILE]){ + await createFile(`${essentials[CUSTOMER][MODULE_PATH]}/${PLATFORM_LOCALIZATION}`,`${METADATA_PROPERTIES}`,`${PROPERTIES}` ) + } resolve() }) } diff --git a/utility/platformUtility/setupPlatformFile.js b/utility/platformUtility/setupPlatformFile.js index 7b5c184..2cc39bf 100644 --- a/utility/platformUtility/setupPlatformFile.js +++ b/utility/platformUtility/setupPlatformFile.js @@ -1,6 +1,8 @@ import xmljsonParser from 'xml-js' import CONSTANTS from '../../constants' +import moment from 'moment' import fs from 'fs' +import {isFileExisting} from "../fileUtility"; const { @@ -11,17 +13,28 @@ const { EVENT, ADD_PLATFORM_FILE, PLATFORM_FILE, - MODULE_PATH + MODULE_PATH, + MODULE_NAME, + CUSTOMER_NAME + }, + GENERAL:{ + FULL_DATE_FORMAT }, PLATFORM:{ FILES, + FILES:{ + PLATFORM_MODULE, + METADATA_PROPERTIES + }, FOLDERS:{ - $TYPE_EXTENSION_D1 + $TYPE_EXTENSION_D1, + PLATFORM_LOCALIZATION } }, FILES:{ EXTENSIONS:{ - XML + XML, + PROPERTIES } }, GTNEXUS: { @@ -36,6 +49,9 @@ const { export default (essentials) => { return new Promise((resolve, reject) => { + setupPlatformModuleFile(essentials) + setupMetaPropertiesFile(essentials) + setupPlatformLocalizationMetaProperties(essentials) if (essentials[CUSTOMER][ADD_PLATFORM_FILE]) { let platformData = ` { @@ -84,7 +100,7 @@ export default (essentials) => { "elements": [ { "type": "text", - "text": "" + "text": "${moment().format(FULL_DATE_FORMAT)}" } ] }, @@ -94,7 +110,7 @@ export default (essentials) => { "elements": [ { "type": "text", - "text": "" + "text": "${moment().format(FULL_DATE_FORMAT)}" } ] }, @@ -240,7 +256,7 @@ export default (essentials) => { "elements": [ { "type": "text", - "text": "on${essentials[CUSTOMER][EVENT]}" + "text": "on${essentials[CUSTOMER][EVENT] === "Populate"?"Save":essentials[CUSTOMER][EVENT]}" } ] }, @@ -295,4 +311,275 @@ export default (essentials) => { } }) +} + +let setupMetaPropertiesFile = (essentials) => { + let boolMetaProperties = fs.existsSync(`${essentials[CUSTOMER][MODULE_PATH]}/${METADATA_PROPERTIES}${PROPERTIES}`) + let metaProperties = `environment.name= +source.id= +source.type=${PLATFORM_MODULE} +source.revision= +data.format=v100 +export.timestamp= +name=${essentials[CUSTOMER][MODULE_NAME]} +ownerId= + ` + if(boolMetaProperties){ + let metaPropertiesData = fs.readFileSync(`${essentials[CUSTOMER][MODULE_PATH]}/${METADATA_PROPERTIES}${PROPERTIES}`) + if(metaPropertiesData.length === 0){ + + fs.writeFileSync(`${essentials[CUSTOMER][MODULE_PATH]}/${METADATA_PROPERTIES}${PROPERTIES}`, metaProperties) + } + }else{ + fs.writeFileSync(`${essentials[CUSTOMER][MODULE_PATH]}/${METADATA_PROPERTIES}${PROPERTIES}`, metaProperties) + } +} + +let setupPlatformLocalizationMetaProperties = (essentials) => { + let boolMetaProperties = fs.existsSync(`${essentials[CUSTOMER][MODULE_PATH]}/${PLATFORM_LOCALIZATION}/${METADATA_PROPERTIES}${PROPERTIES}`) + let metaProperties = `environment.name= +source.id= +source.type=${PLATFORM_LOCALIZATION} +source.revision= +data.format=v100 +export.timestamp= + ` + if(boolMetaProperties){ + let metaPropertiesData = fs.readFileSync(`${essentials[CUSTOMER][MODULE_PATH]}/${PLATFORM_LOCALIZATION}/${METADATA_PROPERTIES}${PROPERTIES}`) + if(metaPropertiesData.length === 0){ + + fs.writeFileSync(`${essentials[CUSTOMER][MODULE_PATH]}/${PLATFORM_LOCALIZATION}/${METADATA_PROPERTIES}${PROPERTIES}`, metaProperties) + } + }else{ + fs.writeFileSync(`${essentials[CUSTOMER][MODULE_PATH]}/${PLATFORM_LOCALIZATION}/${METADATA_PROPERTIES}${PROPERTIES}`, metaProperties) + } +} + +let setupPlatformModuleFile = (essentials) =>{ + // const boolIsExisting = await isFileExisting(`${essentials[CUSTOMER][MODULE_PATH]}`,`${PLATFORM_MODULE}`, `${XML}`) + const boolIsExisting = fs.existsSync(`${essentials[CUSTOMER][MODULE_PATH]}/${PLATFORM_MODULE}${XML}`) + let isDataExisting = false + let platformModuleFile = ` + { + "elements": [ + { + "type": "element", + "name": "PlatformModule400", + "elements": [ + { + "type": "element", + "name": "__metadata", + "elements": [ + { + "type": "element", + "name": "apiVersion", + "elements": [ + { + "type": "text", + "text": "3.1" + } + ] + }, + { + "type": "element", + "name": "type", + "elements": [ + { + "type": "text", + "text": "PlatformModule" + } + ] + }, + { + "type": "element", + "name": "uid", + "elements": [ + { + "type": "text", + "text": "" + } + ] + }, + { + "type": "element", + "name": "createTimestamp", + "elements": [ + { + "type": "text", + "text": "${moment().format(FULL_DATE_FORMAT)}" + } + ] + }, + { + "type": "element", + "name": "modifyTimestamp", + "elements": [ + { + "type": "text", + "text": "${moment().format(FULL_DATE_FORMAT)}" + } + ] + }, + { + "type": "element", + "name": "status", + "elements": [ + { + "type": "text", + "text": "Active" + } + ] + }, + { + "type": "element", + "name": "fingerprint", + "elements": [ + { + "type": "text", + "text": "" + } + ] + }, + { + "type": "element", + "name": "self", + "elements": [ + { + "type": "text", + "text": "" + } + ] + } + ] + }, + { + "type": "element", + "name": "moduleId", + "elements": [ + { + "type": "text", + "text": "" + } + ] + }, + { + "type": "element", + "name": "createTimestamp", + "elements": [ + { + "type": "text", + "text": "${moment().format(FULL_DATE_FORMAT)}" + } + ] + }, + { + "type": "element", + "name": "modifyTimestamp", + "elements": [ + { + "type": "text", + "text": "${moment().format(FULL_DATE_FORMAT)}" + } + ] + }, + { + "type": "element", + "name": "authorId", + "elements": [ + { + "type": "text", + "text": "" + } + ] + }, + { + "type": "element", + "name": "authorType", + "elements": [ + { + "type": "text", + "text": "Organization" + } + ] + }, + { + "type": "element", + "name": "ownerId", + "elements": [ + { + "type": "text", + "text": "" + } + ] + }, + { + "type": "element", + "name": "ownerType", + "elements": [ + { + "type": "text", + "text": "TradeCustomer" + } + ] + }, + { + "type": "element", + "name": "name", + "elements": [ + { + "type": "text", + "text": "${essentials[CUSTOMER][MODULE_NAME]}" + } + ] + }, + { + "type": "element", + "name": "description", + "elements": [ + { + "type": "text", + "text": "${essentials[CUSTOMER][CUSTOMER_NAME]} ${essentials[CUSTOMER][DOCUMENT_TYPE]} TypeExtension Module" + } + ] + }, + { + "type": "element", + "name": "userVersion", + "elements": [ + { + "type": "text", + "text": "1.0" + } + ] + } + ] + } + ] +} + ` + console.log(`BOOLISEXISTING `+boolIsExisting) + if(boolIsExisting){ + const data = fs.readFileSync(`${essentials[CUSTOMER][MODULE_PATH]}/${PLATFORM_MODULE}${XML}`, 'utf8') + console.log("DATA:"+data.length) + if(data.length === 0){ + isDataExisting = false + }else{ + isDataExisting = true + console.log("YES DATA EXISTS") + } + }else{ + isDataExisting = false + } + if(isDataExisting){ + return + }else{ + let options = {compact: false, ignoreComment: true, spaces: 4}; + try { + let result = xmljsonParser.json2xml(JSON.parse(platformModuleFile), options); + fs.writeFileSync(`${essentials[CUSTOMER][MODULE_PATH]}/${PLATFORM_MODULE}${XML}`, result) + } catch (parseError) { + + } + } + console.log(`ISDATAEXISTING `+isDataExisting) } \ No newline at end of file From ade8299b041371e30c99ad75e0139b326e00eecb Mon Sep 17 00:00:00 2001 From: Bhuvanesh Arasu Date: Fri, 11 Oct 2019 15:17:22 -0400 Subject: [PATCH 5/6] Cleaned up the code --- TypeExtensionManager.js | 1 - utility/customerUtility/setupCutomerBaseCode.js | 1 - utility/platformUtility/setupPlatformFile.js | 4 ---- 3 files changed, 6 deletions(-) diff --git a/TypeExtensionManager.js b/TypeExtensionManager.js index a23473b..08e9ac2 100644 --- a/TypeExtensionManager.js +++ b/TypeExtensionManager.js @@ -35,7 +35,6 @@ const main = async () => { } await processCustomer(essentials) await processPlatformModule(essentials) - console.log(essentials) process.exit() }) } diff --git a/utility/customerUtility/setupCutomerBaseCode.js b/utility/customerUtility/setupCutomerBaseCode.js index 27f2a20..d84bd75 100644 --- a/utility/customerUtility/setupCutomerBaseCode.js +++ b/utility/customerUtility/setupCutomerBaseCode.js @@ -50,7 +50,6 @@ export default (essentials) => { let description = `${DESCRIPTION}` let code = constructCode(essentials, jiraNumber, date, who, description) let boolIsFileExisting = await isFileExisting(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${TYPE_EXTENSION_SCRIPT}`,`${essentials[CUSTOMER][RULE_SET_TYPE]}`,`${JS}`) - console.log(boolIsFileExisting+ ":"+"->") if (boolIsFileExisting) { let data = fs.readFileSync(`${essentials[FILE][CUSTOMER_DIRECTORY]}/${essentials[CUSTOMER][CUSTOMER_NAME]}/${essentials[CUSTOMER][MODULE_NAME]}/${TYPE_EXTENSION_SCRIPT}/${essentials[CUSTOMER][RULE_SET_TYPE]}${JS}`) if(data.length != 0){ diff --git a/utility/platformUtility/setupPlatformFile.js b/utility/platformUtility/setupPlatformFile.js index 2cc39bf..43a4e93 100644 --- a/utility/platformUtility/setupPlatformFile.js +++ b/utility/platformUtility/setupPlatformFile.js @@ -557,15 +557,12 @@ let setupPlatformModuleFile = (essentials) =>{ ] } ` - console.log(`BOOLISEXISTING `+boolIsExisting) if(boolIsExisting){ const data = fs.readFileSync(`${essentials[CUSTOMER][MODULE_PATH]}/${PLATFORM_MODULE}${XML}`, 'utf8') - console.log("DATA:"+data.length) if(data.length === 0){ isDataExisting = false }else{ isDataExisting = true - console.log("YES DATA EXISTS") } }else{ isDataExisting = false @@ -581,5 +578,4 @@ let setupPlatformModuleFile = (essentials) =>{ } } - console.log(`ISDATAEXISTING `+isDataExisting) } \ No newline at end of file From 4fde6398f31f43538cc234d11477ce89544ac632 Mon Sep 17 00:00:00 2001 From: Bhuvanesh Arasu Date: Tue, 15 Oct 2019 15:22:08 -0400 Subject: [PATCH 6/6] Letting user pick their objectUid if the query returns more than one object --- utility/customerUtility/fetchDocument.js | 41 +++++++++++++++++++----- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/utility/customerUtility/fetchDocument.js b/utility/customerUtility/fetchDocument.js index c16a547..2843fc7 100644 --- a/utility/customerUtility/fetchDocument.js +++ b/utility/customerUtility/fetchDocument.js @@ -8,6 +8,9 @@ const { ENVIRONMENT, QUERY_URL, FETCH_URL, + UID: OBJECT_UID, + DOCUMENT_TYPE, + SAMPLE_REF_NUMBER, }, GENERAL: { GET, @@ -21,22 +24,44 @@ const { META_DATA, UID }, + rl } = CONSTANTS export default (queriedObject, essential, options, poNumber) => { if (!poNumber) { return new Promise((resolve, reject) => { + console.log(JSON.stringify(queriedObject)) if (essential[CUSTOMER][QUERY_URL] && essential[CUSTOMER][FETCH_URL] && queriedObject) { if (queriedObject && queriedObject[RESULT] && queriedObject[RESULT].length > 0) { - let objectUid = queriedObject[RESULT][0][DOCTYPES[`${essential[CUSTOMER][DOC_SHORT_FORM]}`][OBJECT_FIELDS][Object.keys(DOCTYPES[`${essential[CUSTOMER][DOC_SHORT_FORM]}`][OBJECT_FIELDS])]] - needle(GET, `${essential[CUSTOMER][FETCH_URL]}${objectUid}`, options) - .then((result) => { - let fetchedObject = result.body - resolve(fetchedObject) - }) - .catch((err) => { - reject(err) + let objectUidsList = [...new Set(queriedObject[RESULT].map(item => item[`${DOCTYPES[essential[CUSTOMER][DOC_SHORT_FORM]][OBJECT_UID]}`]))] + let objectUid = null + if(objectUidsList.length > 1){ + let i = 0; + for(i; i < objectUidsList.length; i++){ + console.log(`${i}.${objectUidsList[i]}`) + } + rl.question(`Looks like there are too many ${essential[CUSTOMER][DOCUMENT_TYPE]}'s with the same ${DOCTYPES[essential[CUSTOMER][DOC_SHORT_FORM]].SHORT_FORM}:#${essential[CUSTOMER][SAMPLE_REF_NUMBER]}. Please choose a UID:\n`, (uidOption) => { + objectUid = objectUidsList[uidOption] + needle(GET, `${essential[CUSTOMER][FETCH_URL]}${objectUid}`, options) + .then((result) => { + let fetchedObject = result.body + resolve(fetchedObject) + }) + .catch((err) => { + reject(err) + }) }) + }else{ + objectUid = queriedObject[RESULT][0][DOCTYPES[`${essential[CUSTOMER][DOC_SHORT_FORM]}`][OBJECT_FIELDS][Object.keys(DOCTYPES[`${essential[CUSTOMER][DOC_SHORT_FORM]}`][OBJECT_FIELDS])]] + needle(GET, `${essential[CUSTOMER][FETCH_URL]}${objectUid}`, options) + .then((result) => { + let fetchedObject = result.body + resolve(fetchedObject) + }) + .catch((err) => { + reject(err) + }) + } } } })