@rockcarver/frodo-cli 2.0.0-21 → 2.0.0-23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/esm/cli/FrodoCommand.js +3 -1
  3. package/esm/cli/FrodoCommand.js.map +1 -1
  4. package/esm/cli/agent/agent-web.js +2 -2
  5. package/esm/cli/agent/agent-web.js.map +1 -1
  6. package/esm/cli/app/app-import.js +1 -1
  7. package/esm/cli/app/app-import.js.map +1 -1
  8. package/esm/cli/idm/idm-export.js +14 -8
  9. package/esm/cli/idm/idm-export.js.map +1 -1
  10. package/esm/cli/idm/idm-import.js +14 -8
  11. package/esm/cli/idm/idm-import.js.map +1 -1
  12. package/esm/cli/journey/journey-export.js +2 -3
  13. package/esm/cli/journey/journey-export.js.map +1 -1
  14. package/esm/cli/oauth/oauth-client-import.js +1 -1
  15. package/esm/cli/oauth/oauth-client-import.js.map +1 -1
  16. package/esm/cli/service/service-import.js +2 -3
  17. package/esm/cli/service/service-import.js.map +1 -1
  18. package/esm/ops/AdminFederationOps.js +29 -20
  19. package/esm/ops/AdminFederationOps.js.map +1 -1
  20. package/esm/ops/AgentOps.js +41 -34
  21. package/esm/ops/AgentOps.js.map +1 -1
  22. package/esm/ops/ApplicationOps.js +23 -17
  23. package/esm/ops/ApplicationOps.js.map +1 -1
  24. package/esm/ops/CirclesOfTrustOps.js +27 -20
  25. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  26. package/esm/ops/EmailTemplateOps.js +19 -14
  27. package/esm/ops/EmailTemplateOps.js.map +1 -1
  28. package/esm/ops/IdmOps.js +14 -22
  29. package/esm/ops/IdmOps.js.map +1 -1
  30. package/esm/ops/IdpOps.js +27 -19
  31. package/esm/ops/IdpOps.js.map +1 -1
  32. package/esm/ops/JourneyOps.js +18 -51
  33. package/esm/ops/JourneyOps.js.map +1 -1
  34. package/esm/ops/OAuth2ClientOps.js +23 -17
  35. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  36. package/esm/ops/PolicyOps.js +27 -20
  37. package/esm/ops/PolicyOps.js.map +1 -1
  38. package/esm/ops/PolicySetOps.js +23 -17
  39. package/esm/ops/PolicySetOps.js.map +1 -1
  40. package/esm/ops/ResourceTypeOps.js +27 -20
  41. package/esm/ops/ResourceTypeOps.js.map +1 -1
  42. package/esm/ops/Saml2Ops.js +22 -14
  43. package/esm/ops/Saml2Ops.js.map +1 -1
  44. package/esm/ops/ScriptOps.js +22 -15
  45. package/esm/ops/ScriptOps.js.map +1 -1
  46. package/esm/ops/ServiceOps.js +21 -16
  47. package/esm/ops/ServiceOps.js.map +1 -1
  48. package/esm/ops/ThemeOps.js +21 -15
  49. package/esm/ops/ThemeOps.js.map +1 -1
  50. package/package.json +2 -2
@@ -10,6 +10,10 @@ const {
10
10
  importAdminFederationProviders,
11
11
  importFirstAdminFederationProvider
12
12
  } = frodo.cloud.adminFed;
13
+ const {
14
+ getFilePath,
15
+ getWorkingDirectory
16
+ } = frodo.utils;
13
17
 
14
18
  /**
15
19
  * List providers
@@ -43,12 +47,13 @@ export async function exportAdminFederationProviderToFile(providerId, file = '')
43
47
  if (!fileName) {
44
48
  fileName = getTypedFilename(providerId, 'admin.federation');
45
49
  }
50
+ const filePath = getFilePath(fileName, true);
46
51
  createProgressBar(1, `Exporting ${providerId}`);
47
52
  try {
48
- updateProgressBar(`Writing file ${fileName}`);
53
+ updateProgressBar(`Writing file ${filePath}`);
49
54
  const fileData = await exportAdminFederationProvider(providerId);
50
- saveJsonToFile(fileData, fileName);
51
- stopProgressBar(`Exported ${providerId['brightCyan']} to ${fileName['brightCyan']}.`);
55
+ saveJsonToFile(fileData, filePath);
56
+ stopProgressBar(`Exported ${providerId['brightCyan']} to ${filePath['brightCyan']}.`);
52
57
  outcome = true;
53
58
  } catch (err) {
54
59
  stopProgressBar(`${err}`);
@@ -70,9 +75,10 @@ export async function exportAdminFederationProvidersToFile(file = '') {
70
75
  if (!fileName) {
71
76
  fileName = getTypedFilename(`allProviders`, 'admin.federation');
72
77
  }
78
+ const filePath = getFilePath(fileName, true);
73
79
  const fileData = await exportAdminFederationProviders();
74
- saveJsonToFile(fileData, fileName);
75
- succeedSpinner(`Exported all providers to ${fileName}`);
80
+ saveJsonToFile(fileData, filePath);
81
+ succeedSpinner(`Exported all providers to ${filePath}`);
76
82
  outcome = true;
77
83
  } catch (error) {
78
84
  var _error$response;
@@ -95,7 +101,7 @@ export async function exportAdminFederationProvidersToFiles() {
95
101
  updateProgressBar(`Writing provider ${idpData._id}`);
96
102
  const fileName = getTypedFilename(idpData._id, 'admin.federation');
97
103
  const fileData = await exportAdminFederationProvider(idpData._id);
98
- saveJsonToFile(fileData, fileName);
104
+ saveJsonToFile(fileData, getFilePath(fileName, true));
99
105
  }
100
106
  stopProgressBar(`${allIdpsData.length} providers exported.`);
101
107
  outcome = true;
@@ -115,16 +121,17 @@ export async function exportAdminFederationProvidersToFiles() {
115
121
  */
116
122
  export async function importAdminFederationProviderFromFile(providerId, file) {
117
123
  let outcome = false;
118
- showSpinner(`Importing provider ${providerId} from ${file}...`);
124
+ const filePath = getFilePath(file);
125
+ showSpinner(`Importing provider ${providerId} from ${filePath}...`);
119
126
  try {
120
- const data = fs.readFileSync(file, 'utf8');
127
+ const data = fs.readFileSync(filePath, 'utf8');
121
128
  const fileData = JSON.parse(data);
122
129
  await importAdminFederationProvider(providerId, fileData);
123
- succeedSpinner(`Successfully imported provider ${providerId} from ${file}.`);
130
+ succeedSpinner(`Successfully imported provider ${providerId} from ${filePath}.`);
124
131
  outcome = true;
125
132
  } catch (error) {
126
133
  var _error$response3;
127
- failSpinner(`Error importing provider ${providerId} from ${file}.`);
134
+ failSpinner(`Error importing provider ${providerId} from ${filePath}.`);
128
135
  printMessage(((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.data) || error, 'error');
129
136
  }
130
137
  return outcome;
@@ -138,16 +145,17 @@ export async function importAdminFederationProviderFromFile(providerId, file) {
138
145
  export async function importFirstAdminFederationProviderFromFile(file) {
139
146
  let outcome = false;
140
147
  debugMessage(`cli.AdminFederationOps.importFirstAdminFederationProviderFromFile: begin`);
141
- showSpinner(`Importing first provider from ${file}...`);
148
+ const filePath = getFilePath(file);
149
+ showSpinner(`Importing first provider from ${filePath}...`);
142
150
  try {
143
- const data = fs.readFileSync(file, 'utf8');
151
+ const data = fs.readFileSync(filePath, 'utf8');
144
152
  const fileData = JSON.parse(data);
145
153
  await importFirstAdminFederationProvider(fileData);
146
- succeedSpinner(`Successfully imported first provider from ${file}.`);
154
+ succeedSpinner(`Successfully imported first provider from ${filePath}.`);
147
155
  outcome = true;
148
156
  } catch (error) {
149
157
  var _error$response4;
150
- failSpinner(`Error importing first provider from ${file}.`);
158
+ failSpinner(`Error importing first provider from ${filePath}.`);
151
159
  printMessage(((_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : _error$response4.data) || error, 'error');
152
160
  }
153
161
  debugMessage(`cli.AdminFederationOps.importFirstAdminFederationProviderFromFile: end`);
@@ -162,16 +170,17 @@ export async function importFirstAdminFederationProviderFromFile(file) {
162
170
  export async function importAdminFederationProvidersFromFile(file) {
163
171
  let outcome = false;
164
172
  debugMessage(`cli.AdminFederationOps.importAdminFederationProvidersFromFile: begin`);
165
- showSpinner(`Importing providers from ${file}...`);
173
+ const filePath = getFilePath(file);
174
+ showSpinner(`Importing providers from ${filePath}...`);
166
175
  try {
167
- const data = fs.readFileSync(file, 'utf8');
176
+ const data = fs.readFileSync(filePath, 'utf8');
168
177
  const fileData = JSON.parse(data);
169
178
  await importAdminFederationProviders(fileData);
170
- succeedSpinner(`Imported providers from ${file}.`);
179
+ succeedSpinner(`Imported providers from ${filePath}.`);
171
180
  outcome = true;
172
181
  } catch (error) {
173
182
  var _error$response5;
174
- failSpinner(`Error importing ${file}.`);
183
+ failSpinner(`Error importing ${filePath}.`);
175
184
  printMessage(((_error$response5 = error.response) === null || _error$response5 === void 0 ? void 0 : _error$response5.data) || error, 'error');
176
185
  }
177
186
  debugMessage(`cli.AdminFederationOps.importAdminFederationProvidersFromFile: end`);
@@ -186,8 +195,8 @@ export async function importAdminFederationProvidersFromFiles() {
186
195
  const errors = [];
187
196
  try {
188
197
  debugMessage(`cli.AdminFederationOps.importAdminFederationProvidersFromFiles: begin`);
189
- const names = fs.readdirSync('.');
190
- const files = names.filter(name => name.toLowerCase().endsWith('.admin.federation.json'));
198
+ const names = fs.readdirSync(getWorkingDirectory());
199
+ const files = names.filter(name => name.toLowerCase().endsWith('.admin.federation.json')).map(name => getFilePath(name));
191
200
  createProgressBar(files.length, 'Importing providers...');
192
201
  let total = 0;
193
202
  for (const file of files) {
@@ -1 +1 @@
1
- {"version":3,"file":"AdminFederationOps.js","names":["frodo","fs","createProgressBar","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","readAdminFederationProviders","exportAdminFederationProvider","exportAdminFederationProviders","importAdminFederationProvider","importAdminFederationProviders","importFirstAdminFederationProvider","cloud","adminFed","listAdminFederationProviders","outcome","providers","sort","a","b","_id","localeCompare","forEach","socialIdentityProvider","err","message","exportAdminFederationProviderToFile","providerId","file","fileName","fileData","exportAdminFederationProvidersToFile","error","_error$response","response","data","exportAdminFederationProvidersToFiles","allIdpsData","length","idpData","_error$response2","importAdminFederationProviderFromFile","readFileSync","JSON","parse","_error$response3","importFirstAdminFederationProviderFromFile","_error$response4","importAdminFederationProvidersFromFile","_error$response5","importAdminFederationProvidersFromFiles","errors","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","idp","push"],"sources":["../../src/ops/AdminFederationOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\n\nimport {\n createProgressBar,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport { getTypedFilename, saveJsonToFile } from '../utils/ExportImportUtils';\n\nconst {\n readAdminFederationProviders,\n exportAdminFederationProvider,\n exportAdminFederationProviders,\n importAdminFederationProvider,\n importAdminFederationProviders,\n importFirstAdminFederationProvider,\n} = frodo.cloud.adminFed;\n\n/**\n * List providers\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listAdminFederationProviders(): Promise<boolean> {\n let outcome = false;\n try {\n const providers = await readAdminFederationProviders();\n providers.sort((a, b) => a._id.localeCompare(b._id));\n providers.forEach((socialIdentityProvider) => {\n printMessage(`${socialIdentityProvider._id}`, 'data');\n });\n outcome = true;\n } catch (err) {\n printMessage(`listAdminFederationProviders ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Export provider by id\n * @param {string} providerId provider id/name\n * @param {string} file optional export file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportAdminFederationProviderToFile(\n providerId: string,\n file = ''\n): Promise<boolean> {\n let outcome = false;\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(providerId, 'admin.federation');\n }\n createProgressBar(1, `Exporting ${providerId}`);\n try {\n updateProgressBar(`Writing file ${fileName}`);\n const fileData = await exportAdminFederationProvider(providerId);\n saveJsonToFile(fileData, fileName);\n stopProgressBar(\n `Exported ${providerId['brightCyan']} to ${fileName['brightCyan']}.`\n );\n outcome = true;\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(`${err}`, 'error');\n }\n return outcome;\n}\n\n/**\n * Export all providers\n * @param {string} file optional export file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportAdminFederationProvidersToFile(\n file = ''\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Exporting all providers...`);\n try {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`allProviders`, 'admin.federation');\n }\n const fileData = await exportAdminFederationProviders();\n saveJsonToFile(fileData, fileName);\n succeedSpinner(`Exported all providers to ${fileName}`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting all providers.`);\n printMessage(error.response?.data || error, 'error');\n }\n return outcome;\n}\n\n/**\n * Export all providers to individual files\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportAdminFederationProvidersToFiles(): Promise<boolean> {\n let outcome = false;\n try {\n const allIdpsData = await readAdminFederationProviders();\n createProgressBar(allIdpsData.length, 'Exporting providers');\n for (const idpData of allIdpsData) {\n updateProgressBar(`Writing provider ${idpData._id}`);\n const fileName = getTypedFilename(idpData._id, 'admin.federation');\n const fileData = await exportAdminFederationProvider(idpData._id);\n saveJsonToFile(fileData, fileName);\n }\n stopProgressBar(`${allIdpsData.length} providers exported.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting all providers.`);\n printMessage(error.response?.data || error, 'error');\n }\n return outcome;\n}\n\n/**\n * Import provider by id/name\n * @param {string} providerId provider id/name\n * @param {string} file import file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importAdminFederationProviderFromFile(\n providerId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing provider ${providerId} from ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importAdminFederationProvider(providerId, fileData);\n succeedSpinner(\n `Successfully imported provider ${providerId} from ${file}.`\n );\n outcome = true;\n } catch (error) {\n failSpinner(`Error importing provider ${providerId} from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n return outcome;\n}\n\n/**\n * Import first provider from file\n * @param {String} file import file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstAdminFederationProviderFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(\n `cli.AdminFederationOps.importFirstAdminFederationProviderFromFile: begin`\n );\n showSpinner(`Importing first provider from ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstAdminFederationProvider(fileData);\n succeedSpinner(`Successfully imported first provider from ${file}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error importing first provider from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n debugMessage(\n `cli.AdminFederationOps.importFirstAdminFederationProviderFromFile: end`\n );\n return outcome;\n}\n\n/**\n * Import all providers from file\n * @param {string} file import file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importAdminFederationProvidersFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(\n `cli.AdminFederationOps.importAdminFederationProvidersFromFile: begin`\n );\n showSpinner(`Importing providers from ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importAdminFederationProviders(fileData);\n succeedSpinner(`Imported providers from ${file}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n debugMessage(\n `cli.AdminFederationOps.importAdminFederationProvidersFromFile: end`\n );\n return outcome;\n}\n\n/**\n * Import providers from *.idp.json files in current working directory\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importAdminFederationProvidersFromFiles(): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(\n `cli.AdminFederationOps.importAdminFederationProvidersFromFiles: begin`\n );\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.admin.federation.json')\n );\n createProgressBar(files.length, 'Importing providers...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n const count = Object.keys(fileData.idp).length;\n total += count;\n await importAdminFederationProviders(fileData);\n updateProgressBar(`Imported ${count} provider(s) from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing provider(s) from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} provider(s) from ${files.length} file(s).`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing provider(s) from file(s).`);\n printMessage(error, 'error');\n }\n debugMessage(\n `cli.AdminFederationOps.importAdminFederationProvidersFromFiles: end`\n );\n return 0 === errors.length;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AdminFederationOps.js","names":["frodo","fs","createProgressBar","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","readAdminFederationProviders","exportAdminFederationProvider","exportAdminFederationProviders","importAdminFederationProvider","importAdminFederationProviders","importFirstAdminFederationProvider","cloud","adminFed","getFilePath","getWorkingDirectory","utils","listAdminFederationProviders","outcome","providers","sort","a","b","_id","localeCompare","forEach","socialIdentityProvider","err","message","exportAdminFederationProviderToFile","providerId","file","fileName","filePath","fileData","exportAdminFederationProvidersToFile","error","_error$response","response","data","exportAdminFederationProvidersToFiles","allIdpsData","length","idpData","_error$response2","importAdminFederationProviderFromFile","readFileSync","JSON","parse","_error$response3","importFirstAdminFederationProviderFromFile","_error$response4","importAdminFederationProvidersFromFile","_error$response5","importAdminFederationProvidersFromFiles","errors","names","readdirSync","files","filter","name","toLowerCase","endsWith","map","total","count","Object","keys","idp","push"],"sources":["../../src/ops/AdminFederationOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\n\nimport {\n createProgressBar,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport { getTypedFilename, saveJsonToFile } from '../utils/ExportImportUtils';\n\nconst {\n readAdminFederationProviders,\n exportAdminFederationProvider,\n exportAdminFederationProviders,\n importAdminFederationProvider,\n importAdminFederationProviders,\n importFirstAdminFederationProvider,\n} = frodo.cloud.adminFed;\n\nconst { getFilePath, getWorkingDirectory } = frodo.utils;\n\n/**\n * List providers\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listAdminFederationProviders(): Promise<boolean> {\n let outcome = false;\n try {\n const providers = await readAdminFederationProviders();\n providers.sort((a, b) => a._id.localeCompare(b._id));\n providers.forEach((socialIdentityProvider) => {\n printMessage(`${socialIdentityProvider._id}`, 'data');\n });\n outcome = true;\n } catch (err) {\n printMessage(`listAdminFederationProviders ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Export provider by id\n * @param {string} providerId provider id/name\n * @param {string} file optional export file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportAdminFederationProviderToFile(\n providerId: string,\n file = ''\n): Promise<boolean> {\n let outcome = false;\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(providerId, 'admin.federation');\n }\n const filePath = getFilePath(fileName, true);\n createProgressBar(1, `Exporting ${providerId}`);\n try {\n updateProgressBar(`Writing file ${filePath}`);\n const fileData = await exportAdminFederationProvider(providerId);\n saveJsonToFile(fileData, filePath);\n stopProgressBar(\n `Exported ${providerId['brightCyan']} to ${filePath['brightCyan']}.`\n );\n outcome = true;\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(`${err}`, 'error');\n }\n return outcome;\n}\n\n/**\n * Export all providers\n * @param {string} file optional export file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportAdminFederationProvidersToFile(\n file = ''\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Exporting all providers...`);\n try {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`allProviders`, 'admin.federation');\n }\n const filePath = getFilePath(fileName, true);\n const fileData = await exportAdminFederationProviders();\n saveJsonToFile(fileData, filePath);\n succeedSpinner(`Exported all providers to ${filePath}`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting all providers.`);\n printMessage(error.response?.data || error, 'error');\n }\n return outcome;\n}\n\n/**\n * Export all providers to individual files\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportAdminFederationProvidersToFiles(): Promise<boolean> {\n let outcome = false;\n try {\n const allIdpsData = await readAdminFederationProviders();\n createProgressBar(allIdpsData.length, 'Exporting providers');\n for (const idpData of allIdpsData) {\n updateProgressBar(`Writing provider ${idpData._id}`);\n const fileName = getTypedFilename(idpData._id, 'admin.federation');\n const fileData = await exportAdminFederationProvider(idpData._id);\n saveJsonToFile(fileData, getFilePath(fileName, true));\n }\n stopProgressBar(`${allIdpsData.length} providers exported.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting all providers.`);\n printMessage(error.response?.data || error, 'error');\n }\n return outcome;\n}\n\n/**\n * Import provider by id/name\n * @param {string} providerId provider id/name\n * @param {string} file import file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importAdminFederationProviderFromFile(\n providerId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n const filePath = getFilePath(file);\n showSpinner(`Importing provider ${providerId} from ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importAdminFederationProvider(providerId, fileData);\n succeedSpinner(\n `Successfully imported provider ${providerId} from ${filePath}.`\n );\n outcome = true;\n } catch (error) {\n failSpinner(`Error importing provider ${providerId} from ${filePath}.`);\n printMessage(error.response?.data || error, 'error');\n }\n return outcome;\n}\n\n/**\n * Import first provider from file\n * @param {String} file import file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstAdminFederationProviderFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(\n `cli.AdminFederationOps.importFirstAdminFederationProviderFromFile: begin`\n );\n const filePath = getFilePath(file);\n showSpinner(`Importing first provider from ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstAdminFederationProvider(fileData);\n succeedSpinner(`Successfully imported first provider from ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error importing first provider from ${filePath}.`);\n printMessage(error.response?.data || error, 'error');\n }\n debugMessage(\n `cli.AdminFederationOps.importFirstAdminFederationProviderFromFile: end`\n );\n return outcome;\n}\n\n/**\n * Import all providers from file\n * @param {string} file import file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importAdminFederationProvidersFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(\n `cli.AdminFederationOps.importAdminFederationProvidersFromFile: begin`\n );\n const filePath = getFilePath(file);\n showSpinner(`Importing providers from ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importAdminFederationProviders(fileData);\n succeedSpinner(`Imported providers from ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error importing ${filePath}.`);\n printMessage(error.response?.data || error, 'error');\n }\n debugMessage(\n `cli.AdminFederationOps.importAdminFederationProvidersFromFile: end`\n );\n return outcome;\n}\n\n/**\n * Import providers from *.idp.json files in current working directory\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importAdminFederationProvidersFromFiles(): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(\n `cli.AdminFederationOps.importAdminFederationProvidersFromFiles: begin`\n );\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.admin.federation.json'))\n .map((name) => getFilePath(name));\n createProgressBar(files.length, 'Importing providers...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n const count = Object.keys(fileData.idp).length;\n total += count;\n await importAdminFederationProviders(fileData);\n updateProgressBar(`Imported ${count} provider(s) from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing provider(s) from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} provider(s) from ${files.length} file(s).`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing provider(s) from file(s).`);\n printMessage(error, 'error');\n }\n debugMessage(\n `cli.AdminFederationOps.importAdminFederationProvidersFromFiles: end`\n );\n return 0 === errors.length;\n}\n"],"mappings":"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"}
@@ -3,7 +3,9 @@ import fs from 'fs';
3
3
  import { createTable, debugMessage, failSpinner, printMessage, showSpinner, succeedSpinner } from '../utils/Console';
4
4
  import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImportUtils';
5
5
  const {
6
- getRealmName
6
+ getRealmName,
7
+ getFilePath,
8
+ getWorkingDirectory
7
9
  } = frodo.utils;
8
10
  const {
9
11
  createAgentExportTemplate,
@@ -148,7 +150,7 @@ export async function exportAgentsToFile(file) {
148
150
  if (file) {
149
151
  fileName = file;
150
152
  }
151
- saveJsonToFile(exportData, fileName);
153
+ saveJsonToFile(exportData, getFilePath(fileName, true));
152
154
  }
153
155
 
154
156
  /**
@@ -161,7 +163,7 @@ export async function exportIdentityGatewayAgentsToFile(file) {
161
163
  if (file) {
162
164
  fileName = file;
163
165
  }
164
- saveJsonToFile(exportData, fileName);
166
+ saveJsonToFile(exportData, getFilePath(fileName, true));
165
167
  }
166
168
 
167
169
  /**
@@ -174,7 +176,7 @@ export async function exportJavaAgentsToFile(file) {
174
176
  if (file) {
175
177
  fileName = file;
176
178
  }
177
- saveJsonToFile(exportData, fileName);
179
+ saveJsonToFile(exportData, getFilePath(fileName, true));
178
180
  }
179
181
 
180
182
  /**
@@ -187,7 +189,7 @@ export async function exportWebAgentsToFile(file) {
187
189
  if (file) {
188
190
  fileName = file;
189
191
  }
190
- saveJsonToFile(exportData, fileName);
192
+ saveJsonToFile(exportData, getFilePath(fileName, true));
191
193
  }
192
194
 
193
195
  /**
@@ -201,7 +203,7 @@ export async function exportAgentToFile(agentId, file) {
201
203
  if (file) {
202
204
  fileName = file;
203
205
  }
204
- saveJsonToFile(exportData, fileName);
206
+ saveJsonToFile(exportData, getFilePath(fileName, true));
205
207
  }
206
208
 
207
209
  /**
@@ -215,7 +217,7 @@ export async function exportIdentityGatewayAgentToFile(agentId, file) {
215
217
  if (file) {
216
218
  fileName = file;
217
219
  }
218
- saveJsonToFile(exportData, fileName);
220
+ saveJsonToFile(exportData, getFilePath(fileName, true));
219
221
  }
220
222
 
221
223
  /**
@@ -229,7 +231,7 @@ export async function exportJavaAgentToFile(agentId, file) {
229
231
  if (file) {
230
232
  fileName = file;
231
233
  }
232
- saveJsonToFile(exportData, fileName);
234
+ saveJsonToFile(exportData, getFilePath(fileName, true));
233
235
  }
234
236
 
235
237
  /**
@@ -243,7 +245,7 @@ export async function exportWebAgentToFile(agentId, file) {
243
245
  if (file) {
244
246
  fileName = file;
245
247
  }
246
- saveJsonToFile(exportData, fileName);
248
+ saveJsonToFile(exportData, getFilePath(fileName, true));
247
249
  }
248
250
 
249
251
  /**
@@ -254,10 +256,11 @@ export async function exportAgentsToFiles() {
254
256
  debugMessage(`exportAgentsToFiles: ${agents.length} agents`);
255
257
  for (const agent of agents) {
256
258
  const fileName = getTypedFilename(agent._id, agentTypeToFileIdMap[agent._type._id]);
259
+ const filePath = getFilePath(fileName, true);
257
260
  const exportData = createAgentExportTemplate();
258
261
  exportData.agents[agent._id] = agent;
259
- debugMessage(`exportAgentsToFiles: exporting ${agent._id} to ${fileName}`);
260
- saveJsonToFile(exportData, fileName);
262
+ debugMessage(`exportAgentsToFiles: exporting ${agent._id} to ${filePath}`);
263
+ saveJsonToFile(exportData, filePath);
261
264
  }
262
265
  debugMessage(`exportAgentsToFiles: done.`);
263
266
  }
@@ -271,7 +274,7 @@ export async function exportIdentityGatewayAgentsToFiles() {
271
274
  const fileName = getTypedFilename(agent._id, agentTypeToFileIdMap[agent._type._id]);
272
275
  const exportData = createAgentExportTemplate();
273
276
  exportData.agents[agent._id] = agent;
274
- saveJsonToFile(exportData, fileName);
277
+ saveJsonToFile(exportData, getFilePath(fileName, true));
275
278
  }
276
279
  }
277
280
 
@@ -284,7 +287,7 @@ export async function exportJavaAgentsToFiles() {
284
287
  const fileName = getTypedFilename(agent._id, agentTypeToFileIdMap[agent._type._id]);
285
288
  const exportData = createAgentExportTemplate();
286
289
  exportData.agents[agent._id] = agent;
287
- saveJsonToFile(exportData, fileName);
290
+ saveJsonToFile(exportData, getFilePath(fileName, true));
288
291
  }
289
292
  }
290
293
 
@@ -297,7 +300,7 @@ export async function exportWebAgentsToFiles() {
297
300
  const fileName = getTypedFilename(agent._id, agentTypeToFileIdMap[agent._type._id]);
298
301
  const exportData = createAgentExportTemplate();
299
302
  exportData.agents[agent._id] = agent;
300
- saveJsonToFile(exportData, fileName);
303
+ saveJsonToFile(exportData, getFilePath(fileName, true));
301
304
  }
302
305
  }
303
306
 
@@ -308,7 +311,7 @@ export async function exportWebAgentsToFiles() {
308
311
  */
309
312
  export async function importAgentFromFile(agentId, file) {
310
313
  const verbose = state.getVerbose();
311
- fs.readFile(file, 'utf8', async (err, data) => {
314
+ fs.readFile(getFilePath(file), 'utf8', async (err, data) => {
312
315
  if (err) throw err;
313
316
  const importData = JSON.parse(data);
314
317
  // check if this is a file with multiple agents and get agent by id
@@ -343,7 +346,7 @@ export async function importAgentFromFile(agentId, file) {
343
346
  */
344
347
  export async function importFirstAgentFromFile(file) {
345
348
  const verbose = state.getVerbose();
346
- fs.readFile(file, 'utf8', async (err, data) => {
349
+ fs.readFile(getFilePath(file), 'utf8', async (err, data) => {
347
350
  if (err) throw err;
348
351
  const importData = JSON.parse(data);
349
352
  if (Object.keys(importData.agents).length > 0) {
@@ -372,9 +375,10 @@ export async function importFirstAgentFromFile(file) {
372
375
  */
373
376
  export async function importAgentsFromFile(file) {
374
377
  debugMessage(`importAgentsFromFile: start`);
375
- fs.readFile(file, 'utf8', async (err, data) => {
378
+ const filePath = getFilePath(file);
379
+ fs.readFile(filePath, 'utf8', async (err, data) => {
376
380
  if (err) throw err;
377
- debugMessage(`importAgentsFromFile: importing ${file}`);
381
+ debugMessage(`importAgentsFromFile: importing ${filePath}`);
378
382
  const importData = JSON.parse(data);
379
383
  try {
380
384
  await importAgents(importData);
@@ -390,7 +394,7 @@ export async function importAgentsFromFile(file) {
390
394
  * Import all agents from separate files
391
395
  */
392
396
  export async function importAgentsFromFiles() {
393
- const names = fs.readdirSync('.');
397
+ const names = fs.readdirSync(getWorkingDirectory());
394
398
  const agentFiles = names.filter(name => name.toLowerCase().endsWith('.agent.json'));
395
399
  for (const file of agentFiles) {
396
400
  await importAgentsFromFile(file);
@@ -405,7 +409,7 @@ export async function importAgentsFromFiles() {
405
409
  export async function importIdentityGatewayAgentFromFile(agentId, file) {
406
410
  debugMessage(`cli.AgentOps.importIdentityGatewayAgentFromFile: start`);
407
411
  const verbose = state.getVerbose();
408
- fs.readFile(file, 'utf8', async (err, data) => {
412
+ fs.readFile(getFilePath(file), 'utf8', async (err, data) => {
409
413
  if (err) throw err;
410
414
  const importData = JSON.parse(data);
411
415
  // check if this is a file with multiple agents and get agent by id
@@ -441,7 +445,7 @@ export async function importIdentityGatewayAgentFromFile(agentId, file) {
441
445
  export async function importFirstIdentityGatewayAgentFromFile(file) {
442
446
  debugMessage(`cli.AgentOps.importFirstIdentityGatewayAgentFromFile: start`);
443
447
  const verbose = state.getVerbose();
444
- fs.readFile(file, 'utf8', async (err, data) => {
448
+ fs.readFile(getFilePath(file), 'utf8', async (err, data) => {
445
449
  if (err) throw err;
446
450
  const importData = JSON.parse(data);
447
451
  if (Object.keys(importData.agents).length > 0) {
@@ -470,9 +474,10 @@ export async function importFirstIdentityGatewayAgentFromFile(file) {
470
474
  */
471
475
  export async function importIdentityGatewayAgentsFromFile(file) {
472
476
  debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFile: start`);
473
- fs.readFile(file, 'utf8', async (err, data) => {
477
+ const filePath = getFilePath(file);
478
+ fs.readFile(filePath, 'utf8', async (err, data) => {
474
479
  if (err) throw err;
475
- debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFile: importing ${file}`);
480
+ debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFile: importing ${filePath}`);
476
481
  const importData = JSON.parse(data);
477
482
  try {
478
483
  await importIdentityGatewayAgents(importData);
@@ -489,7 +494,7 @@ export async function importIdentityGatewayAgentsFromFile(file) {
489
494
  */
490
495
  export async function importIdentityGatewayAgentsFromFiles() {
491
496
  debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFiles: start`);
492
- const names = fs.readdirSync('.');
497
+ const names = fs.readdirSync(getWorkingDirectory());
493
498
  const agentFiles = names.filter(name => name.toLowerCase().endsWith('.agent.json'));
494
499
  for (const file of agentFiles) {
495
500
  await importIdentityGatewayAgentsFromFile(file);
@@ -505,7 +510,7 @@ export async function importIdentityGatewayAgentsFromFiles() {
505
510
  export async function importJavaAgentFromFile(agentId, file) {
506
511
  debugMessage(`cli.AgentOps.importJavaAgentFromFile: start`);
507
512
  const verbose = state.getVerbose();
508
- fs.readFile(file, 'utf8', async (err, data) => {
513
+ fs.readFile(getFilePath(file), 'utf8', async (err, data) => {
509
514
  if (err) throw err;
510
515
  const importData = JSON.parse(data);
511
516
  // check if this is a file with multiple agents and get agent by id
@@ -541,7 +546,7 @@ export async function importJavaAgentFromFile(agentId, file) {
541
546
  export async function importFirstJavaAgentFromFile(file) {
542
547
  debugMessage(`cli.AgentOps.importFirstJavaAgentFromFile: start`);
543
548
  const verbose = state.getVerbose();
544
- fs.readFile(file, 'utf8', async (err, data) => {
549
+ fs.readFile(getFilePath(file), 'utf8', async (err, data) => {
545
550
  if (err) throw err;
546
551
  const importData = JSON.parse(data);
547
552
  if (Object.keys(importData.agents).length > 0) {
@@ -570,9 +575,10 @@ export async function importFirstJavaAgentFromFile(file) {
570
575
  */
571
576
  export async function importJavaAgentsFromFile(file) {
572
577
  debugMessage(`cli.AgentOps.importJavaAgentsFromFile: start`);
573
- fs.readFile(file, 'utf8', async (err, data) => {
578
+ const filePath = getFilePath(file);
579
+ fs.readFile(filePath, 'utf8', async (err, data) => {
574
580
  if (err) throw err;
575
- debugMessage(`cli.AgentOps.importJavaAgentsFromFile: importing ${file}`);
581
+ debugMessage(`cli.AgentOps.importJavaAgentsFromFile: importing ${filePath}`);
576
582
  const importData = JSON.parse(data);
577
583
  try {
578
584
  await importJavaAgents(importData);
@@ -589,7 +595,7 @@ export async function importJavaAgentsFromFile(file) {
589
595
  */
590
596
  export async function importJavaAgentsFromFiles() {
591
597
  debugMessage(`cli.AgentOps.importJavaAgentsFromFiles: start`);
592
- const names = fs.readdirSync('.');
598
+ const names = fs.readdirSync(getWorkingDirectory());
593
599
  const agentFiles = names.filter(name => name.toLowerCase().endsWith('.agent.json'));
594
600
  for (const file of agentFiles) {
595
601
  await importJavaAgentsFromFile(file);
@@ -605,7 +611,7 @@ export async function importJavaAgentsFromFiles() {
605
611
  export async function importWebAgentFromFile(agentId, file) {
606
612
  debugMessage(`cli.AgentOps.importWebAgentFromFile: start`);
607
613
  const verbose = state.getVerbose();
608
- fs.readFile(file, 'utf8', async (err, data) => {
614
+ fs.readFile(getFilePath(file), 'utf8', async (err, data) => {
609
615
  if (err) throw err;
610
616
  const importData = JSON.parse(data);
611
617
  // check if this is a file with multiple agents and get agent by id
@@ -641,7 +647,7 @@ export async function importWebAgentFromFile(agentId, file) {
641
647
  export async function importFirstWebAgentFromFile(file) {
642
648
  debugMessage(`cli.AgentOps.importFirstWebAgentFromFile: start`);
643
649
  const verbose = state.getVerbose();
644
- fs.readFile(file, 'utf8', async (err, data) => {
650
+ fs.readFile(getFilePath(file), 'utf8', async (err, data) => {
645
651
  if (err) throw err;
646
652
  const importData = JSON.parse(data);
647
653
  if (Object.keys(importData.agents).length > 0) {
@@ -670,9 +676,10 @@ export async function importFirstWebAgentFromFile(file) {
670
676
  */
671
677
  export async function importWebAgentsFromFile(file) {
672
678
  debugMessage(`cli.AgentOps.importWebAgentsFromFile: start`);
673
- fs.readFile(file, 'utf8', async (err, data) => {
679
+ const filePath = getFilePath(file);
680
+ fs.readFile(filePath, 'utf8', async (err, data) => {
674
681
  if (err) throw err;
675
- debugMessage(`cli.AgentOps.importWebAgentsFromFile: importing ${file}`);
682
+ debugMessage(`cli.AgentOps.importWebAgentsFromFile: importing ${filePath}`);
676
683
  const importData = JSON.parse(data);
677
684
  try {
678
685
  await importWebAgents(importData);
@@ -689,7 +696,7 @@ export async function importWebAgentsFromFile(file) {
689
696
  */
690
697
  export async function importWebAgentsFromFiles() {
691
698
  debugMessage(`cli.AgentOps.importWebAgentsFromFiles: start`);
692
- const names = fs.readdirSync('.');
699
+ const names = fs.readdirSync(getWorkingDirectory());
693
700
  const agentFiles = names.filter(name => name.toLowerCase().endsWith('.agent.json'));
694
701
  for (const file of agentFiles) {
695
702
  await importWebAgentsFromFile(file);