@rockcarver/frodo-cli 2.0.0-32 → 2.0.0-34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -1
- package/esm/cli/FrodoCommand.js +8 -1
- package/esm/cli/FrodoCommand.js.map +1 -1
- package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js +41 -0
- package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js.map +1 -0
- package/esm/cli/admin/admin-export-full-cloud-config.js +44 -0
- package/esm/cli/admin/admin-export-full-cloud-config.js.map +1 -0
- package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artifacts.js +43 -0
- package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artifacts.js.map +1 -0
- package/esm/cli/admin/admin.js +3 -0
- package/esm/cli/admin/admin.js.map +1 -1
- package/esm/cli/authz/authz-policy-export.js +1 -1
- package/esm/cli/authz/authz-policy-export.js.map +1 -1
- package/esm/cli/authz/authz-policy-import.js +1 -1
- package/esm/cli/authz/authz-policy-import.js.map +1 -1
- package/esm/cli/authz/authz-policy-list.js +2 -2
- package/esm/cli/authz/authz-policy-list.js.map +1 -1
- package/esm/cli/authz/authz-set-delete.js +2 -2
- package/esm/cli/authz/authz-set-delete.js.map +1 -1
- package/esm/cli/authz/authz-set-export.js +1 -1
- package/esm/cli/authz/authz-set-export.js.map +1 -1
- package/esm/cli/authz/authz-set-import.js +1 -1
- package/esm/cli/authz/authz-set-import.js.map +1 -1
- package/esm/cli/authz/authz-set-list.js +1 -1
- package/esm/cli/authz/authz-set-list.js.map +1 -1
- package/esm/cli/authz/authz-type-delete.js +3 -3
- package/esm/cli/authz/authz-type-delete.js.map +1 -1
- package/esm/cli/authz/authz-type-export.js +2 -2
- package/esm/cli/authz/authz-type-export.js.map +1 -1
- package/esm/cli/authz/authz-type-import.js +2 -2
- package/esm/cli/authz/authz-type-import.js.map +1 -1
- package/esm/cli/authz/authz-type-list.js +1 -1
- package/esm/cli/authz/authz-type-list.js.map +1 -1
- package/esm/cli/email/email-template-export.js +3 -3
- package/esm/cli/email/email-template-export.js.map +1 -1
- package/esm/cli/email/email-template-import.js +4 -4
- package/esm/cli/email/email-template-import.js.map +1 -1
- package/esm/cli/email/email-template-list.js +1 -1
- package/esm/cli/email/email-template-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-create.js +2 -1
- package/esm/cli/esv/esv-secret-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-delete.js +4 -3
- package/esm/cli/esv/esv-secret-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-describe.js +2 -1
- package/esm/cli/esv/esv-secret-describe.js.map +1 -1
- package/esm/cli/esv/esv-secret-export.js +6 -4
- package/esm/cli/esv/esv-secret-export.js.map +1 -1
- package/esm/cli/esv/esv-secret-list.js +2 -1
- package/esm/cli/esv/esv-secret-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-set.js +2 -1
- package/esm/cli/esv/esv-secret-set.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-activate.js +2 -2
- package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-create.js +2 -1
- package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-deactivate.js +2 -2
- package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-delete.js +4 -3
- package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-list.js +2 -1
- package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-create.js +2 -1
- package/esm/cli/esv/esv-variable-create.js.map +1 -1
- package/esm/cli/esv/esv-variable-delete.js +4 -2
- package/esm/cli/esv/esv-variable-delete.js.map +1 -1
- package/esm/cli/esv/esv-variable-describe.js +2 -1
- package/esm/cli/esv/esv-variable-describe.js.map +1 -1
- package/esm/cli/esv/esv-variable-export.js +6 -3
- package/esm/cli/esv/esv-variable-export.js.map +1 -1
- package/esm/cli/esv/esv-variable-list.js +2 -1
- package/esm/cli/esv/esv-variable-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-set.js +4 -2
- package/esm/cli/esv/esv-variable-set.js.map +1 -1
- package/esm/cli/idm/idm-count.js +1 -1
- package/esm/cli/idm/idm-count.js.map +1 -1
- package/esm/cli/idm/idm-export.js +3 -3
- package/esm/cli/idm/idm-export.js.map +1 -1
- package/esm/cli/idm/idm-list.js +2 -2
- package/esm/cli/idm/idm-list.js.map +1 -1
- package/esm/cli/idp/idp-export.js +3 -3
- package/esm/cli/idp/idp-export.js.map +1 -1
- package/esm/cli/idp/idp-import.js +4 -4
- package/esm/cli/idp/idp-import.js.map +1 -1
- package/esm/cli/idp/idp-list.js +1 -1
- package/esm/cli/idp/idp-list.js.map +1 -1
- package/esm/cli/journey/journey-delete.js +6 -2
- package/esm/cli/journey/journey-delete.js.map +1 -1
- package/esm/cli/journey/journey-disable.js +4 -10
- package/esm/cli/journey/journey-disable.js.map +1 -1
- package/esm/cli/journey/journey-enable.js +4 -10
- package/esm/cli/journey/journey-enable.js.map +1 -1
- package/esm/cli/journey/journey-import.js +4 -4
- package/esm/cli/journey/journey-import.js.map +1 -1
- package/esm/cli/journey/journey-list.js +1 -1
- package/esm/cli/journey/journey-list.js.map +1 -1
- package/esm/cli/saml/saml-cot-export.js +3 -3
- package/esm/cli/saml/saml-cot-export.js.map +1 -1
- package/esm/cli/saml/saml-cot-list.js +1 -1
- package/esm/cli/saml/saml-cot-list.js.map +1 -1
- package/esm/cli/saml/saml-describe.js +1 -1
- package/esm/cli/saml/saml-describe.js.map +1 -1
- package/esm/cli/saml/saml-import.js +4 -4
- package/esm/cli/saml/saml-import.js.map +1 -1
- package/esm/cli/saml/saml-list.js +1 -1
- package/esm/cli/saml/saml-list.js.map +1 -1
- package/esm/cli/saml/saml-metadata-export.js +1 -1
- package/esm/cli/saml/saml-metadata-export.js.map +1 -1
- package/esm/cli/script/script-export.js +2 -6
- package/esm/cli/script/script-export.js.map +1 -1
- package/esm/cli/theme/theme-delete.js +3 -3
- package/esm/cli/theme/theme-delete.js.map +1 -1
- package/esm/cli/theme/theme-export.js +4 -4
- package/esm/cli/theme/theme-export.js.map +1 -1
- package/esm/cli/theme/theme-import.js +4 -4
- package/esm/cli/theme/theme-import.js.map +1 -1
- package/esm/cli/theme/theme-list.js +1 -1
- package/esm/cli/theme/theme-list.js.map +1 -1
- package/esm/ops/AdminFederationOps.js +28 -26
- package/esm/ops/AdminFederationOps.js.map +1 -1
- package/esm/ops/AdminOps.js +241 -0
- package/esm/ops/AdminOps.js.map +1 -0
- package/esm/ops/AgentOps.js +59 -51
- package/esm/ops/AgentOps.js.map +1 -1
- package/esm/ops/ApplicationOps.js +19 -13
- package/esm/ops/ApplicationOps.js.map +1 -1
- package/esm/ops/CirclesOfTrustOps.js +28 -26
- package/esm/ops/CirclesOfTrustOps.js.map +1 -1
- package/esm/ops/EmailTemplateOps.js +78 -94
- package/esm/ops/EmailTemplateOps.js.map +1 -1
- package/esm/ops/IdmOps.js +8 -31
- package/esm/ops/IdmOps.js.map +1 -1
- package/esm/ops/IdpOps.js +49 -54
- package/esm/ops/IdpOps.js.map +1 -1
- package/esm/ops/JourneyOps.js +91 -70
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/OAuth2ClientOps.js +13 -11
- package/esm/ops/OAuth2ClientOps.js.map +1 -1
- package/esm/ops/PolicyOps.js +31 -26
- package/esm/ops/PolicyOps.js.map +1 -1
- package/esm/ops/PolicySetOps.js +42 -39
- package/esm/ops/PolicySetOps.js.map +1 -1
- package/esm/ops/ResourceTypeOps.js +19 -16
- package/esm/ops/ResourceTypeOps.js.map +1 -1
- package/esm/ops/Saml2Ops.js +49 -45
- package/esm/ops/Saml2Ops.js.map +1 -1
- package/esm/ops/ScriptOps.js +36 -55
- package/esm/ops/ScriptOps.js.map +1 -1
- package/esm/ops/SecretsOps.js +159 -60
- package/esm/ops/SecretsOps.js.map +1 -1
- package/esm/ops/ThemeOps.js +111 -130
- package/esm/ops/ThemeOps.js.map +1 -1
- package/esm/ops/VariablesOps.js +126 -56
- package/esm/ops/VariablesOps.js.map +1 -1
- package/esm/utils/Console.js +69 -30
- package/esm/utils/Console.js.map +1 -1
- package/esm/utils/ExportImportUtils.js +4 -12
- package/esm/utils/ExportImportUtils.js.map +1 -1
- package/package.json +10 -2
package/esm/ops/PolicySetOps.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { frodo, state } from '@rockcarver/frodo-lib';
|
|
2
2
|
import fs from 'fs';
|
|
3
|
-
import { createObjectTable,
|
|
3
|
+
import { createObjectTable, createProgressIndicator, debugMessage, printMessage, stopProgressIndicator, updateProgressIndicator } from '../utils/Console';
|
|
4
4
|
import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImportUtils';
|
|
5
5
|
const {
|
|
6
6
|
getRealmName,
|
|
@@ -68,7 +68,7 @@ export async function describePolicySet(policySetId, json = false) {
|
|
|
68
68
|
*/
|
|
69
69
|
export async function deletePolicySetById(policySetId) {
|
|
70
70
|
debugMessage(`cli.PolicySetOps.deletePolicySet: begin`);
|
|
71
|
-
|
|
71
|
+
const indicatorId = createProgressIndicator('indeterminate', 0, `Deleting ${policySetId}...`);
|
|
72
72
|
let outcome = false;
|
|
73
73
|
const errors = [];
|
|
74
74
|
const policies = await readPoliciesByPolicySet(policySetId);
|
|
@@ -78,21 +78,20 @@ export async function deletePolicySetById(policySetId) {
|
|
|
78
78
|
await deletePolicy(policy._id);
|
|
79
79
|
} catch (error) {
|
|
80
80
|
error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;
|
|
81
|
-
printMessage(error.message, 'error');
|
|
82
81
|
errors.push(error);
|
|
83
82
|
}
|
|
84
83
|
}
|
|
85
84
|
if (errors.length) {
|
|
86
85
|
const errorMessages = errors.map(error => error.message).join('\n');
|
|
87
|
-
|
|
86
|
+
stopProgressIndicator(indicatorId, `Error deleting policies in policy set ${policySetId}: ${errorMessages}`, 'fail');
|
|
88
87
|
} else {
|
|
89
88
|
try {
|
|
90
89
|
debugMessage(`Deleting policy set ${policySetId}`);
|
|
91
90
|
await deletePolicySet(policySetId);
|
|
92
|
-
|
|
91
|
+
stopProgressIndicator(indicatorId, `Deleted ${policySetId}.`, 'success');
|
|
93
92
|
outcome = true;
|
|
94
93
|
} catch (error) {
|
|
95
|
-
|
|
94
|
+
stopProgressIndicator(indicatorId, `Error deleting policy set ${policySetId}: ${error}`, 'fail');
|
|
96
95
|
}
|
|
97
96
|
}
|
|
98
97
|
debugMessage(`cli.PolicySetOps.deletePolicySet: end [outcome=${outcome}]`);
|
|
@@ -108,17 +107,19 @@ export async function deletePolicySets() {
|
|
|
108
107
|
let outcome = false;
|
|
109
108
|
const errors = [];
|
|
110
109
|
let policySets = [];
|
|
110
|
+
let indicatorId;
|
|
111
|
+
let indicatorId2;
|
|
111
112
|
try {
|
|
112
|
-
|
|
113
|
+
indicatorId = createProgressIndicator('indeterminate', 0, `Retrieving all policy sets...`);
|
|
113
114
|
try {
|
|
114
115
|
policySets = await readPolicySets();
|
|
115
|
-
|
|
116
|
+
stopProgressIndicator(indicatorId, `Found ${policySets.length} policy sets.`, 'success');
|
|
116
117
|
} catch (error) {
|
|
117
118
|
error.message = `Error retrieving all policy sets: ${error.message}`;
|
|
118
|
-
|
|
119
|
+
stopProgressIndicator(indicatorId, error.message, 'fail');
|
|
119
120
|
throw error;
|
|
120
121
|
}
|
|
121
|
-
if (policySets.length)
|
|
122
|
+
if (policySets.length) indicatorId2 = createProgressIndicator('determinate', policySets.length, `Deleting ${policySets.length} policy sets...`);
|
|
122
123
|
for (const policySet of policySets) {
|
|
123
124
|
const policySetId = policySet.name;
|
|
124
125
|
try {
|
|
@@ -139,10 +140,10 @@ export async function deletePolicySets() {
|
|
|
139
140
|
try {
|
|
140
141
|
debugMessage(`Deleting policy set ${policySetId}`);
|
|
141
142
|
await deletePolicySet(policySetId);
|
|
142
|
-
|
|
143
|
+
updateProgressIndicator(indicatorId2, `Deleted ${policySetId}`);
|
|
143
144
|
} catch (error) {
|
|
144
145
|
error.message = `Error deleting policy set ${policySetId}: ${error}`;
|
|
145
|
-
|
|
146
|
+
updateProgressIndicator(indicatorId2, error.message);
|
|
146
147
|
errors.push(error);
|
|
147
148
|
}
|
|
148
149
|
}
|
|
@@ -152,9 +153,9 @@ export async function deletePolicySets() {
|
|
|
152
153
|
} finally {
|
|
153
154
|
if (errors.length) {
|
|
154
155
|
const errorMessages = errors.map(error => error.message).join('\n');
|
|
155
|
-
if (policySets.length)
|
|
156
|
+
if (policySets.length) stopProgressIndicator(indicatorId2, `Error deleting all policy sets: ${errorMessages}`);
|
|
156
157
|
} else {
|
|
157
|
-
if (policySets.length)
|
|
158
|
+
if (policySets.length) stopProgressIndicator(indicatorId2, `Deleted ${policySets.length} policy sets.`);
|
|
158
159
|
outcome = true;
|
|
159
160
|
}
|
|
160
161
|
}
|
|
@@ -176,7 +177,7 @@ export async function exportPolicySetToFile(policySetId, file, options = {
|
|
|
176
177
|
}) {
|
|
177
178
|
let outcome = false;
|
|
178
179
|
debugMessage(`cli.PolicySetOps.exportPolicySetToFile: begin`);
|
|
179
|
-
|
|
180
|
+
const indicatorId = createProgressIndicator('indeterminate', 0, `Exporting ${policySetId}...`);
|
|
180
181
|
try {
|
|
181
182
|
let fileName = getTypedFilename(policySetId, 'policyset.authz');
|
|
182
183
|
if (file) {
|
|
@@ -185,10 +186,10 @@ export async function exportPolicySetToFile(policySetId, file, options = {
|
|
|
185
186
|
const filePath = getFilePath(fileName, true);
|
|
186
187
|
const exportData = await exportPolicySet(policySetId, options);
|
|
187
188
|
saveJsonToFile(exportData, filePath);
|
|
188
|
-
|
|
189
|
+
stopProgressIndicator(indicatorId, `Exported ${policySetId} to ${filePath}.`, 'success');
|
|
189
190
|
outcome = true;
|
|
190
191
|
} catch (error) {
|
|
191
|
-
|
|
192
|
+
stopProgressIndicator(indicatorId, `Error exporting ${policySetId}: ${error.message}`, 'fail');
|
|
192
193
|
}
|
|
193
194
|
debugMessage(`cli.PolicySetOps.exportPolicySetToFile: end`);
|
|
194
195
|
return outcome;
|
|
@@ -207,7 +208,7 @@ export async function exportPolicySetsToFile(file, options = {
|
|
|
207
208
|
}) {
|
|
208
209
|
let outcome = false;
|
|
209
210
|
debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: begin`);
|
|
210
|
-
|
|
211
|
+
const indicatorId = createProgressIndicator('indeterminate', 0, `Exporting all policy sets...`);
|
|
211
212
|
try {
|
|
212
213
|
let fileName = getTypedFilename(`all${titleCase(getRealmName(state.getRealm()))}PolicySets`, 'policyset.authz');
|
|
213
214
|
if (file) {
|
|
@@ -216,10 +217,10 @@ export async function exportPolicySetsToFile(file, options = {
|
|
|
216
217
|
const filePath = getFilePath(fileName, true);
|
|
217
218
|
const exportData = await exportPolicySets(options);
|
|
218
219
|
saveJsonToFile(exportData, filePath);
|
|
219
|
-
|
|
220
|
+
stopProgressIndicator(indicatorId, `Exported all policy sets to ${filePath}.`, 'success');
|
|
220
221
|
outcome = true;
|
|
221
222
|
} catch (error) {
|
|
222
|
-
|
|
223
|
+
stopProgressIndicator(indicatorId, `Error exporting policy sets: ${error.message}`, 'fail');
|
|
223
224
|
}
|
|
224
225
|
debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: end`);
|
|
225
226
|
return outcome;
|
|
@@ -237,24 +238,25 @@ export async function exportPolicySetsToFiles(options = {
|
|
|
237
238
|
}) {
|
|
238
239
|
debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: begin`);
|
|
239
240
|
const errors = [];
|
|
241
|
+
let indicatorId;
|
|
240
242
|
try {
|
|
241
243
|
const policySets = await readPolicySets();
|
|
242
|
-
|
|
244
|
+
indicatorId = createProgressIndicator('determinate', policySets.length, 'Exporting policy sets...');
|
|
243
245
|
for (const policySet of policySets) {
|
|
244
246
|
const file = getTypedFilename(policySet.name, 'policyset.authz');
|
|
245
247
|
try {
|
|
246
248
|
const exportData = await exportPolicySet(policySet.name, options);
|
|
247
249
|
saveJsonToFile(exportData, getFilePath(file, true));
|
|
248
|
-
|
|
250
|
+
updateProgressIndicator(indicatorId, `Exported ${policySet.name}.`);
|
|
249
251
|
} catch (error) {
|
|
250
252
|
errors.push(error);
|
|
251
|
-
|
|
253
|
+
updateProgressIndicator(indicatorId, `Error exporting ${policySet.name}.`);
|
|
252
254
|
}
|
|
253
255
|
}
|
|
254
|
-
|
|
256
|
+
stopProgressIndicator(indicatorId, `Export complete.`);
|
|
255
257
|
} catch (error) {
|
|
256
258
|
errors.push(error);
|
|
257
|
-
|
|
259
|
+
stopProgressIndicator(indicatorId, `Error exporting policy sets to files`);
|
|
258
260
|
}
|
|
259
261
|
debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: end`);
|
|
260
262
|
return 0 === errors.length;
|
|
@@ -273,15 +275,15 @@ export async function importPolicySetFromFile(policySetId, file, options = {
|
|
|
273
275
|
}) {
|
|
274
276
|
let outcome = false;
|
|
275
277
|
debugMessage(`cli.PolicySetOps.importPolicySetFromFile: begin`);
|
|
276
|
-
|
|
278
|
+
const indicatorId = createProgressIndicator('indeterminate', 0, `Importing ${policySetId}...`);
|
|
277
279
|
try {
|
|
278
280
|
const data = fs.readFileSync(getFilePath(file), 'utf8');
|
|
279
281
|
const fileData = JSON.parse(data);
|
|
280
282
|
await importPolicySet(policySetId, fileData, options);
|
|
281
283
|
outcome = true;
|
|
282
|
-
|
|
284
|
+
stopProgressIndicator(indicatorId, `Imported ${policySetId}.`, 'success');
|
|
283
285
|
} catch (error) {
|
|
284
|
-
|
|
286
|
+
stopProgressIndicator(indicatorId, `Error importing ${policySetId}.`, 'fail');
|
|
285
287
|
printMessage(error, 'error');
|
|
286
288
|
}
|
|
287
289
|
debugMessage(`cli.PolicySetOps.importPolicySetFromFile: end`);
|
|
@@ -301,15 +303,15 @@ export async function importFirstPolicySetFromFile(file, options = {
|
|
|
301
303
|
let outcome = false;
|
|
302
304
|
debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: begin`);
|
|
303
305
|
const filePath = getFilePath(file);
|
|
304
|
-
|
|
306
|
+
const indicatorId = createProgressIndicator('indeterminate', 0, `Importing first policy set from ${filePath}...`);
|
|
305
307
|
try {
|
|
306
308
|
const data = fs.readFileSync(filePath, 'utf8');
|
|
307
309
|
const fileData = JSON.parse(data);
|
|
308
310
|
const policySet = await importFirstPolicySet(fileData, options);
|
|
309
311
|
outcome = true;
|
|
310
|
-
|
|
312
|
+
stopProgressIndicator(indicatorId, `Imported first policy set with name '${policySet.name}' from ${filePath}.`, 'success');
|
|
311
313
|
} catch (error) {
|
|
312
|
-
|
|
314
|
+
stopProgressIndicator(indicatorId, `Error importing first policy set from ${filePath}.`, 'fail');
|
|
313
315
|
printMessage(error, 'error');
|
|
314
316
|
}
|
|
315
317
|
debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: end`);
|
|
@@ -329,15 +331,15 @@ export async function importPolicySetsFromFile(file, options = {
|
|
|
329
331
|
let outcome = false;
|
|
330
332
|
debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: begin`);
|
|
331
333
|
const filePath = getFilePath(file);
|
|
332
|
-
|
|
334
|
+
const indicatorId = createProgressIndicator('indeterminate', 0, `Importing ${filePath}...`);
|
|
333
335
|
try {
|
|
334
336
|
const data = fs.readFileSync(filePath, 'utf8');
|
|
335
337
|
const fileData = JSON.parse(data);
|
|
336
338
|
await importPolicySets(fileData, options);
|
|
337
339
|
outcome = true;
|
|
338
|
-
|
|
340
|
+
stopProgressIndicator(indicatorId, `Imported ${filePath}.`, 'success');
|
|
339
341
|
} catch (error) {
|
|
340
|
-
|
|
342
|
+
stopProgressIndicator(indicatorId, `Error importing ${filePath}.`, 'fail');
|
|
341
343
|
printMessage(error, 'error');
|
|
342
344
|
}
|
|
343
345
|
debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: end`);
|
|
@@ -354,11 +356,12 @@ export async function importPolicySetsFromFiles(options = {
|
|
|
354
356
|
prereqs: false
|
|
355
357
|
}) {
|
|
356
358
|
const errors = [];
|
|
359
|
+
let indicatorId;
|
|
357
360
|
try {
|
|
358
361
|
debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: begin`);
|
|
359
362
|
const names = fs.readdirSync(getWorkingDirectory());
|
|
360
363
|
const files = names.filter(name => name.toLowerCase().endsWith('.policyset.authz.json')).map(name => getFilePath(name));
|
|
361
|
-
|
|
364
|
+
indicatorId = createProgressIndicator('determinate', files.length, 'Importing policy sets...');
|
|
362
365
|
let total = 0;
|
|
363
366
|
for (const file of files) {
|
|
364
367
|
try {
|
|
@@ -367,17 +370,17 @@ export async function importPolicySetsFromFiles(options = {
|
|
|
367
370
|
const count = Object.keys(fileData.policyset).length;
|
|
368
371
|
total += count;
|
|
369
372
|
await importPolicySets(fileData, options);
|
|
370
|
-
|
|
373
|
+
updateProgressIndicator(indicatorId, `Imported ${count} policy sets from ${file}`);
|
|
371
374
|
} catch (error) {
|
|
372
375
|
errors.push(error);
|
|
373
|
-
|
|
376
|
+
updateProgressIndicator(indicatorId, `Error importing policy sets from ${file}`);
|
|
374
377
|
printMessage(error, 'error');
|
|
375
378
|
}
|
|
376
379
|
}
|
|
377
|
-
|
|
380
|
+
stopProgressIndicator(indicatorId, `Finished importing ${total} policy sets from ${files.length} files.`);
|
|
378
381
|
} catch (error) {
|
|
379
382
|
errors.push(error);
|
|
380
|
-
|
|
383
|
+
stopProgressIndicator(indicatorId, `Error importing policy sets from files.`);
|
|
381
384
|
printMessage(error, 'error');
|
|
382
385
|
}
|
|
383
386
|
debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: end`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolicySetOps.js","names":["frodo","state","fs","createObjectTable","createProgressBar","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","getRealmName","getFilePath","getWorkingDirectory","utils","readPoliciesByPolicySet","deletePolicy","authz","policy","readPolicySets","readPolicySet","exportPolicySet","exportPolicySets","importPolicySet","importFirstPolicySet","importPolicySets","deletePolicySet","policySet","listPolicySets","outcome","policySets","sort","a","b","name","localeCompare","err","message","describePolicySet","policySetId","json","table","toString","deletePolicySetById","errors","policies","_id","error","push","length","errorMessages","map","join","deletePolicySets","exportPolicySetToFile","file","options","deps","prereqs","useStringArrays","fileName","filePath","exportData","exportPolicySetsToFile","getRealm","exportPolicySetsToFiles","importPolicySetFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicySetFromFile","importPolicySetsFromFile","importPolicySetsFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["../../src/ops/PolicySetOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type PolicySkeleton } from '@rockcarver/frodo-lib/types/api/PoliciesApi';\nimport { type PolicySetSkeleton } from '@rockcarver/frodo-lib/types/api/PolicySetApi';\nimport {\n type PolicySetExportInterface,\n type PolicySetExportOptions,\n type PolicySetImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/PolicySetOps';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n createProgressBar,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\n\nconst { getRealmName, getFilePath, getWorkingDirectory } = frodo.utils;\nconst { readPoliciesByPolicySet, deletePolicy } = frodo.authz.policy;\nconst {\n readPolicySets,\n readPolicySet,\n exportPolicySet,\n exportPolicySets,\n importPolicySet,\n importFirstPolicySet,\n importPolicySets,\n deletePolicySet,\n} = frodo.authz.policySet;\n\n/**\n * List policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicySets(): Promise<boolean> {\n let outcome = false;\n try {\n const policySets = await readPolicySets();\n policySets.sort((a, b) => a.name.localeCompare(b.name));\n for (const policySet of policySets) {\n printMessage(`${policySet.name}`, 'data');\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicySets ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy set\n * @param {string} policySetId policy set id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicySet(\n policySetId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await readPolicySet(policySetId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySetById(\n policySetId: string\n): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySet: begin`);\n showSpinner(`Deleting ${policySetId}...`);\n let outcome = false;\n const errors = [];\n const policies: PolicySkeleton[] = await readPoliciesByPolicySet(policySetId);\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n printMessage(error.message, 'error');\n errors.push(error);\n }\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n failSpinner(`Error deleting ${policySetId}: ${errorMessages}`);\n } else {\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await deletePolicySet(policySetId);\n succeedSpinner(`Deleted ${policySetId}.`);\n outcome = true;\n } catch (error) {\n printMessage(\n `Error deleting policy set ${policySetId}: ${error}`,\n 'error'\n );\n }\n }\n debugMessage(`cli.PolicySetOps.deletePolicySet: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySets(): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySets: begin`);\n let outcome = false;\n const errors = [];\n let policySets: PolicySetSkeleton[] = [];\n try {\n showSpinner(`Retrieving all policy sets...`);\n try {\n policySets = await readPolicySets();\n succeedSpinner(`Found ${policySets.length} policy sets.`);\n } catch (error) {\n error.message = `Error retrieving all policy sets: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policySets.length)\n createProgressBar(\n policySets.length,\n `Deleting ${policySets.length} policy sets...`\n );\n for (const policySet of policySets) {\n const policySetId = policySet.name;\n try {\n const policies: PolicySkeleton[] =\n await readPoliciesByPolicySet(policySetId);\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n printMessage(error.message, 'error');\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await deletePolicySet(policySetId);\n updateProgressBar(`Deleted ${policySetId}`);\n } catch (error) {\n error.message = `Error deleting policy set ${policySetId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policy sets: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policySets.length)\n stopProgressBar(`Error deleting all policy sets: ${errorMessages}`);\n } else {\n if (policySets.length)\n stopProgressBar(`Deleted ${policySets.length} policy sets.`);\n outcome = true;\n }\n }\n debugMessage(`cli.PolicySetOps.deletePolicySets: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Export policy set to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetToFile(\n policySetId: string,\n file: string,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: begin`);\n showSpinner(`Exporting ${policySetId}...`);\n try {\n let fileName = getTypedFilename(policySetId, 'policyset.authz');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicySet(policySetId, options);\n saveJsonToFile(exportData, filePath);\n succeedSpinner(`Exported ${policySetId} to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${policySetId}: ${error.message}`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: end`);\n return outcome;\n}\n\n/**\n * Export policy sets to file\n * @param {string} file file name\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFile(\n file: string,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}PolicySets`,\n 'policyset.authz'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicySets(options);\n saveJsonToFile(exportData, filePath);\n succeedSpinner(`Exported all policy sets to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policy sets to separate files\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFiles(\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: begin`);\n const errors = [];\n try {\n const policySets: PolicySetSkeleton[] = await readPolicySets();\n createProgressBar(policySets.length, 'Exporting policy sets...');\n for (const policySet of policySets) {\n const file = getTypedFilename(policySet.name, 'policyset.authz');\n try {\n const exportData: PolicySetExportInterface = await exportPolicySet(\n policySet.name,\n options\n );\n saveJsonToFile(exportData, getFilePath(file, true));\n updateProgressBar(`Exported ${policySet.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policySet.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy set from file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetFromFile(\n policySetId: string,\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: begin`);\n showSpinner(`Importing ${policySetId}...`);\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySet(policySetId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${policySetId}.`);\n } catch (error) {\n failSpinner(`Error importing ${policySetId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy set from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicySetFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing first policy set from ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n const policySet = await importFirstPolicySet(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported first policy set with name '${policySet.name}' from ${filePath}.`\n );\n } catch (error) {\n failSpinner(`Error importing first policy set from ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySets(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${filePath}.`);\n } catch (error) {\n failSpinner(`Error importing ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFiles(\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.policyset.authz.json'))\n .map((name) => getFilePath(name));\n createProgressBar(files.length, 'Importing policy sets...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicySetExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicySets(fileData, options);\n updateProgressBar(`Imported ${count} policy sets from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing policy sets from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} policy sets from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing policy sets from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PolicySetOps.js","names":["frodo","state","fs","createObjectTable","createProgressIndicator","debugMessage","printMessage","stopProgressIndicator","updateProgressIndicator","getTypedFilename","saveJsonToFile","titleCase","getRealmName","getFilePath","getWorkingDirectory","utils","readPoliciesByPolicySet","deletePolicy","authz","policy","readPolicySets","readPolicySet","exportPolicySet","exportPolicySets","importPolicySet","importFirstPolicySet","importPolicySets","deletePolicySet","policySet","listPolicySets","outcome","policySets","sort","a","b","name","localeCompare","err","message","describePolicySet","policySetId","json","table","toString","deletePolicySetById","indicatorId","errors","policies","_id","error","push","length","errorMessages","map","join","deletePolicySets","indicatorId2","exportPolicySetToFile","file","options","deps","prereqs","useStringArrays","fileName","filePath","exportData","exportPolicySetsToFile","getRealm","exportPolicySetsToFiles","importPolicySetFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicySetFromFile","importPolicySetsFromFile","importPolicySetsFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["../../src/ops/PolicySetOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type PolicySkeleton } from '@rockcarver/frodo-lib/types/api/PoliciesApi';\nimport { type PolicySetSkeleton } from '@rockcarver/frodo-lib/types/api/PolicySetApi';\nimport {\n type PolicySetExportInterface,\n type PolicySetExportOptions,\n type PolicySetImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/PolicySetOps';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n createProgressIndicator,\n debugMessage,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\n\nconst { getRealmName, getFilePath, getWorkingDirectory } = frodo.utils;\nconst { readPoliciesByPolicySet, deletePolicy } = frodo.authz.policy;\nconst {\n readPolicySets,\n readPolicySet,\n exportPolicySet,\n exportPolicySets,\n importPolicySet,\n importFirstPolicySet,\n importPolicySets,\n deletePolicySet,\n} = frodo.authz.policySet;\n\n/**\n * List policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicySets(): Promise<boolean> {\n let outcome = false;\n try {\n const policySets = await readPolicySets();\n policySets.sort((a, b) => a.name.localeCompare(b.name));\n for (const policySet of policySets) {\n printMessage(`${policySet.name}`, 'data');\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicySets ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy set\n * @param {string} policySetId policy set id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicySet(\n policySetId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await readPolicySet(policySetId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySetById(\n policySetId: string\n): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySet: begin`);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Deleting ${policySetId}...`\n );\n let outcome = false;\n const errors = [];\n const policies: PolicySkeleton[] = await readPoliciesByPolicySet(policySetId);\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n errors.push(error);\n }\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n stopProgressIndicator(\n indicatorId,\n `Error deleting policies in policy set ${policySetId}: ${errorMessages}`,\n 'fail'\n );\n } else {\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await deletePolicySet(policySetId);\n stopProgressIndicator(indicatorId, `Deleted ${policySetId}.`, 'success');\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error deleting policy set ${policySetId}: ${error}`,\n 'fail'\n );\n }\n }\n debugMessage(`cli.PolicySetOps.deletePolicySet: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySets(): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySets: begin`);\n let outcome = false;\n const errors = [];\n let policySets: PolicySetSkeleton[] = [];\n let indicatorId: string;\n let indicatorId2: string;\n try {\n indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Retrieving all policy sets...`\n );\n try {\n policySets = await readPolicySets();\n stopProgressIndicator(\n indicatorId,\n `Found ${policySets.length} policy sets.`,\n 'success'\n );\n } catch (error) {\n error.message = `Error retrieving all policy sets: ${error.message}`;\n stopProgressIndicator(indicatorId, error.message, 'fail');\n throw error;\n }\n if (policySets.length)\n indicatorId2 = createProgressIndicator(\n 'determinate',\n policySets.length,\n `Deleting ${policySets.length} policy sets...`\n );\n for (const policySet of policySets) {\n const policySetId = policySet.name;\n try {\n const policies: PolicySkeleton[] =\n await readPoliciesByPolicySet(policySetId);\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n printMessage(error.message, 'error');\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await deletePolicySet(policySetId);\n updateProgressIndicator(indicatorId2, `Deleted ${policySetId}`);\n } catch (error) {\n error.message = `Error deleting policy set ${policySetId}: ${error}`;\n updateProgressIndicator(indicatorId2, error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policy sets: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policySets.length)\n stopProgressIndicator(\n indicatorId2,\n `Error deleting all policy sets: ${errorMessages}`\n );\n } else {\n if (policySets.length)\n stopProgressIndicator(\n indicatorId2,\n `Deleted ${policySets.length} policy sets.`\n );\n outcome = true;\n }\n }\n debugMessage(`cli.PolicySetOps.deletePolicySets: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Export policy set to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetToFile(\n policySetId: string,\n file: string,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: begin`);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Exporting ${policySetId}...`\n );\n try {\n let fileName = getTypedFilename(policySetId, 'policyset.authz');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicySet(policySetId, options);\n saveJsonToFile(exportData, filePath);\n stopProgressIndicator(\n indicatorId,\n `Exported ${policySetId} to ${filePath}.`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error exporting ${policySetId}: ${error.message}`,\n 'fail'\n );\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: end`);\n return outcome;\n}\n\n/**\n * Export policy sets to file\n * @param {string} file file name\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFile(\n file: string,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: begin`);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Exporting all policy sets...`\n );\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}PolicySets`,\n 'policyset.authz'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicySets(options);\n saveJsonToFile(exportData, filePath);\n stopProgressIndicator(\n indicatorId,\n `Exported all policy sets to ${filePath}.`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error exporting policy sets: ${error.message}`,\n 'fail'\n );\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policy sets to separate files\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFiles(\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: begin`);\n const errors = [];\n let indicatorId: string;\n try {\n const policySets: PolicySetSkeleton[] = await readPolicySets();\n indicatorId = createProgressIndicator(\n 'determinate',\n policySets.length,\n 'Exporting policy sets...'\n );\n for (const policySet of policySets) {\n const file = getTypedFilename(policySet.name, 'policyset.authz');\n try {\n const exportData: PolicySetExportInterface = await exportPolicySet(\n policySet.name,\n options\n );\n saveJsonToFile(exportData, getFilePath(file, true));\n updateProgressIndicator(indicatorId, `Exported ${policySet.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(\n indicatorId,\n `Error exporting ${policySet.name}.`\n );\n }\n }\n stopProgressIndicator(indicatorId, `Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(indicatorId, `Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy set from file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetFromFile(\n policySetId: string,\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: begin`);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing ${policySetId}...`\n );\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySet(policySetId, fileData, options);\n outcome = true;\n stopProgressIndicator(indicatorId, `Imported ${policySetId}.`, 'success');\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error importing ${policySetId}.`,\n 'fail'\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy set from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicySetFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: begin`);\n const filePath = getFilePath(file);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing first policy set from ${filePath}...`\n );\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n const policySet = await importFirstPolicySet(fileData, options);\n outcome = true;\n stopProgressIndicator(\n indicatorId,\n `Imported first policy set with name '${policySet.name}' from ${filePath}.`,\n 'success'\n );\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error importing first policy set from ${filePath}.`,\n 'fail'\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: begin`);\n const filePath = getFilePath(file);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing ${filePath}...`\n );\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySets(fileData, options);\n outcome = true;\n stopProgressIndicator(indicatorId, `Imported ${filePath}.`, 'success');\n } catch (error) {\n stopProgressIndicator(indicatorId, `Error importing ${filePath}.`, 'fail');\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFiles(\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n let indicatorId: string;\n try {\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.policyset.authz.json'))\n .map((name) => getFilePath(name));\n indicatorId = createProgressIndicator(\n 'determinate',\n files.length,\n 'Importing policy sets...'\n );\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicySetExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicySets(fileData, options);\n updateProgressIndicator(\n indicatorId,\n `Imported ${count} policy sets from ${file}`\n );\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(\n indicatorId,\n `Error importing policy sets from ${file}`\n );\n printMessage(error, 'error');\n }\n }\n stopProgressIndicator(\n indicatorId,\n `Finished importing ${total} policy sets from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(\n indicatorId,\n `Error importing policy sets from files.`\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { frodo, state } from '@rockcarver/frodo-lib';
|
|
2
2
|
import fs from 'fs';
|
|
3
|
-
import { createObjectTable,
|
|
3
|
+
import { createObjectTable, createProgressIndicator, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressIndicator, succeedSpinner, updateProgressIndicator } from '../utils/Console';
|
|
4
4
|
import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImportUtils';
|
|
5
5
|
const {
|
|
6
6
|
getRealmName,
|
|
@@ -162,6 +162,7 @@ export async function deleteResourceTypes() {
|
|
|
162
162
|
let outcome = false;
|
|
163
163
|
const errors = [];
|
|
164
164
|
let resourceTypes = [];
|
|
165
|
+
let indicatorId;
|
|
165
166
|
try {
|
|
166
167
|
showSpinner(`Retrieving all resource types...`);
|
|
167
168
|
try {
|
|
@@ -172,16 +173,16 @@ export async function deleteResourceTypes() {
|
|
|
172
173
|
failSpinner(error.message);
|
|
173
174
|
throw error;
|
|
174
175
|
}
|
|
175
|
-
if (resourceTypes.length)
|
|
176
|
+
if (resourceTypes.length) indicatorId = createProgressIndicator('determinate', resourceTypes.length, `Deleting ${resourceTypes.length} resource types...`);
|
|
176
177
|
for (const resourceType of resourceTypes) {
|
|
177
178
|
const resourceTypeId = resourceType.uuid;
|
|
178
179
|
try {
|
|
179
180
|
debugMessage(`Deleting resource type ${resourceTypeId}`);
|
|
180
181
|
await deleteResourceType(resourceTypeId);
|
|
181
|
-
|
|
182
|
+
updateProgressIndicator(indicatorId, `Deleted ${resourceTypeId}`);
|
|
182
183
|
} catch (error) {
|
|
183
184
|
error.message = `Error deleting resource type ${resourceTypeId}: ${error}`;
|
|
184
|
-
|
|
185
|
+
updateProgressIndicator(indicatorId, error.message);
|
|
185
186
|
errors.push(error);
|
|
186
187
|
}
|
|
187
188
|
}
|
|
@@ -191,9 +192,9 @@ export async function deleteResourceTypes() {
|
|
|
191
192
|
} finally {
|
|
192
193
|
if (errors.length) {
|
|
193
194
|
const errorMessages = errors.map(error => error.message).join('\n');
|
|
194
|
-
if (resourceTypes.length)
|
|
195
|
+
if (resourceTypes.length) stopProgressIndicator(indicatorId, `Error deleting all resource types: ${errorMessages}`);
|
|
195
196
|
} else {
|
|
196
|
-
if (resourceTypes.length)
|
|
197
|
+
if (resourceTypes.length) stopProgressIndicator(indicatorId, `Deleted ${resourceTypes.length} resource types.`);
|
|
197
198
|
outcome = true;
|
|
198
199
|
}
|
|
199
200
|
}
|
|
@@ -288,24 +289,25 @@ export async function exportResourceTypesToFile(file) {
|
|
|
288
289
|
export async function exportResourceTypesToFiles() {
|
|
289
290
|
debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: begin`);
|
|
290
291
|
const errors = [];
|
|
292
|
+
let indicatorId;
|
|
291
293
|
try {
|
|
292
294
|
const resourceTypes = await readResourceTypes();
|
|
293
|
-
|
|
295
|
+
indicatorId = createProgressIndicator('determinate', resourceTypes.length, 'Exporting resource types...');
|
|
294
296
|
for (const resourceType of resourceTypes) {
|
|
295
297
|
const file = getTypedFilename(resourceType.name, 'resourcetype.authz');
|
|
296
298
|
try {
|
|
297
299
|
const exportData = await exportResourceType(resourceType.uuid);
|
|
298
300
|
saveJsonToFile(exportData, getFilePath(file, true));
|
|
299
|
-
|
|
301
|
+
updateProgressIndicator(indicatorId, `Exported ${resourceType.name}.`);
|
|
300
302
|
} catch (error) {
|
|
301
303
|
errors.push(error);
|
|
302
|
-
|
|
304
|
+
updateProgressIndicator(indicatorId, `Error exporting ${resourceType.name}.`);
|
|
303
305
|
}
|
|
304
306
|
}
|
|
305
|
-
|
|
307
|
+
stopProgressIndicator(indicatorId, `Export complete.`);
|
|
306
308
|
} catch (error) {
|
|
307
309
|
errors.push(error);
|
|
308
|
-
|
|
310
|
+
stopProgressIndicator(indicatorId, `Error exporting resource types to files`);
|
|
309
311
|
}
|
|
310
312
|
debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: end`);
|
|
311
313
|
return 0 === errors.length;
|
|
@@ -413,11 +415,12 @@ export async function importResourceTypesFromFile(file) {
|
|
|
413
415
|
*/
|
|
414
416
|
export async function importResourceTypesFromFiles() {
|
|
415
417
|
const errors = [];
|
|
418
|
+
let indicatorId;
|
|
416
419
|
try {
|
|
417
420
|
debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: begin`);
|
|
418
421
|
const names = fs.readdirSync(getWorkingDirectory());
|
|
419
422
|
const files = names.filter(name => name.toLowerCase().endsWith('.resourcetype.authz.json')).map(name => getFilePath(name));
|
|
420
|
-
|
|
423
|
+
indicatorId = createProgressIndicator('determinate', files.length, 'Importing resource types...');
|
|
421
424
|
let total = 0;
|
|
422
425
|
for (const file of files) {
|
|
423
426
|
try {
|
|
@@ -426,17 +429,17 @@ export async function importResourceTypesFromFiles() {
|
|
|
426
429
|
const count = Object.keys(fileData.resourcetype).length;
|
|
427
430
|
total += count;
|
|
428
431
|
await importResourceTypes(fileData);
|
|
429
|
-
|
|
432
|
+
updateProgressIndicator(indicatorId, `Imported ${count} resource types from ${file}`);
|
|
430
433
|
} catch (error) {
|
|
431
434
|
errors.push(error);
|
|
432
|
-
|
|
435
|
+
updateProgressIndicator(indicatorId, `Error importing resource types from ${file}`);
|
|
433
436
|
printMessage(error, 'error');
|
|
434
437
|
}
|
|
435
438
|
}
|
|
436
|
-
|
|
439
|
+
stopProgressIndicator(indicatorId, `Finished importing ${total} resource types from ${files.length} files.`);
|
|
437
440
|
} catch (error) {
|
|
438
441
|
errors.push(error);
|
|
439
|
-
|
|
442
|
+
stopProgressIndicator(indicatorId, `Error importing resource types from files.`);
|
|
440
443
|
printMessage(error, 'error');
|
|
441
444
|
}
|
|
442
445
|
debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: end`);
|