@rockcarver/frodo-cli 2.0.0-32 → 2.0.0-33
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 +5 -1
- package/esm/cli/FrodoCommand.js +8 -1
- package/esm/cli/FrodoCommand.js.map +1 -1
- 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.js +1 -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/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 +112 -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 +13 -11
- 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 +14 -12
- package/esm/ops/VariablesOps.js.map +1 -1
- package/esm/utils/Console.js +68 -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 +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SecretsOps.js","names":["frodo","state","createKeyValueTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","saveToFile","titleCase","wordwrap","resolveUserName","idm","managed","readSecrets","createSecret","_createSecret","readVersionsOfSecret","readSecret","exportSecret","exportSecrets","enableVersionOfSecret","disableVersionOfSecret","createVersionOfSecret","_createVersionOfSecret","updateSecretDescription","deleteSecret","_deleteSecret","deleteVersionOfSecret","_deleteVersionOfSecret","cloud","secret","getFilePath","utils","listSecrets","long","secrets","sort","a","b","_id","localeCompare","error","message","response","data","table","hAlign","content","push","activeVersion","loadedVersion","loaded","description","getUseBearerTokenForAmApis","lastChangedBy","Date","lastChangeDate","toUTCString","toString","forEach","id","value","encoding","useInPlaceholders","code","setSecretDescription","secretId","deleteSecrets","length","listSecretVersions","versions","statusMap","ENABLED","DISABLED","DESTROYED","version","status","createDate","toLocaleString","describeSecret","exportSecretToFile","file","fileName","filePath","fileData","brightCyan","err","exportSecretsToFile","getRealm","secretsExport","_error$response","exportSecretsToFiles","allSecretsData","activateVersionOfSecret","deactivateVersionOfSecret"],"sources":["../../src/ops/SecretsOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\n\nimport {\n createKeyValueTable,\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n saveToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport wordwrap from './utils/Wordwrap';\n\nconst { resolveUserName } = frodo.idm.managed;\nconst {\n readSecrets,\n createSecret: _createSecret,\n readVersionsOfSecret,\n readSecret,\n exportSecret,\n exportSecrets,\n enableVersionOfSecret,\n disableVersionOfSecret,\n createVersionOfSecret: _createVersionOfSecret,\n updateSecretDescription,\n deleteSecret: _deleteSecret,\n deleteVersionOfSecret: _deleteVersionOfSecret,\n} = frodo.cloud.secret;\n\nconst { getFilePath } = frodo.utils;\n\n/**\n * List secrets\n * @param {boolean} long Long version, all the fields\n */\nexport async function listSecrets(long) {\n let secrets = [];\n try {\n secrets = await readSecrets();\n secrets.sort((a, b) => a._id.localeCompare(b._id));\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n if (long) {\n const table = createTable([\n 'Id'['brightCyan'],\n { hAlign: 'right', content: 'Active\\nVersion'['brightCyan'] },\n { hAlign: 'right', content: 'Loaded\\nVersion'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Description'['brightCyan'],\n 'Modifier'['brightCyan'],\n 'Modified (UTC)'['brightCyan'],\n ]);\n for (const secret of secrets) {\n table.push([\n secret._id,\n { hAlign: 'right', content: secret.activeVersion },\n { hAlign: 'right', content: secret.loadedVersion },\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n wordwrap(secret.description, 40),\n state.getUseBearerTokenForAmApis()\n ? secret.lastChangedBy\n : await resolveUserName('teammember', secret.lastChangedBy),\n new Date(secret.lastChangeDate).toUTCString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n secrets.forEach((secret) => {\n printMessage(secret._id, 'data');\n });\n }\n}\n\n/**\n * Create secret\n * @param {String} id secret id\n * @param {String} value secret value\n * @param {String} description secret description\n * @param {String} encoding secret encoding\n * @param {boolean} useInPlaceholders use secret in placeholders\n */\nexport async function createSecret(\n id,\n value,\n description,\n encoding,\n useInPlaceholders\n) {\n showSpinner(`Creating secret ${id}...`);\n try {\n await _createSecret(id, value, description, encoding, useInPlaceholders);\n succeedSpinner(`Created secret ${id}`);\n } catch (error) {\n failSpinner(\n error.response\n ? `Error: ${error.response.data.code} - ${error.response.data.message}`\n : error\n );\n }\n}\n\n/**\n * Set description of secret\n * @param {String} secretId secret id\n * @param {String} description secret description\n */\nexport async function setSecretDescription(secretId, description) {\n showSpinner(`Setting description of secret ${secretId}...`);\n try {\n await updateSecretDescription(secretId, description);\n succeedSpinner(`Set description of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete a secret\n * @param {String} secretId secret id\n */\nexport async function deleteSecret(secretId) {\n showSpinner(`Deleting secret ${secretId}...`);\n try {\n await _deleteSecret(secretId);\n succeedSpinner(`Deleted secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete all secrets\n */\nexport async function deleteSecrets() {\n try {\n const secrets = await readSecrets();\n createProgressBar(secrets.length, `Deleting secrets...`);\n for (const secret of secrets) {\n try {\n await _deleteSecret(secret._id);\n updateProgressBar(`Deleted secret ${secret._id}`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n }\n stopProgressBar(`Secrets deleted.`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n}\n\n/**\n * List all the versions of the secret\n * @param {String} secretId secret id\n */\nexport async function listSecretVersions(secretId) {\n let versions = [];\n try {\n versions = await readVersionsOfSecret(secretId);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n const table = createTable([\n { hAlign: 'right', content: 'Version'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Loaded'['brightCyan'],\n 'Created'['brightCyan'],\n ]);\n // versions.sort((a, b) => a._id.localeCompare(b._id));\n const statusMap = {\n ENABLED: 'active'['brightGreen'],\n DISABLED: 'inactive'['brightRed'],\n DESTROYED: 'deleted'['brightRed'],\n };\n for (const version of versions) {\n table.push([\n { hAlign: 'right', content: version.version },\n statusMap[version.status],\n version.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n new Date(version.createDate).toLocaleString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n}\n\n/**\n * Describe a secret\n * @param {String} secretId Secret id\n */\nexport async function describeSecret(secretId) {\n const secret = await readSecret(secretId);\n const table = createKeyValueTable();\n table.push(['Name'['brightCyan'], secret._id]);\n table.push(['Active Version'['brightCyan'], secret.activeVersion]);\n table.push(['Loaded Version'['brightCyan'], secret.loadedVersion]);\n table.push([\n 'Status'['brightCyan'],\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n ]);\n table.push(['Description'['brightCyan'], wordwrap(secret.description, 60)]);\n table.push([\n 'Modified'['brightCyan'],\n new Date(secret.lastChangeDate).toLocaleString(),\n ]);\n table.push([\n 'Modifier'['brightCyan'],\n await resolveUserName('teammember', secret.lastChangedBy),\n ]);\n table.push(['Modifier UUID'['brightCyan'], secret.lastChangedBy]);\n table.push(['Encoding'['brightCyan'], secret.encoding]);\n table.push(['Use In Placeholders'['brightCyan'], secret.useInPlaceholders]);\n printMessage(table.toString(), 'data');\n printMessage('\\nSecret Versions:', 'data');\n await listSecretVersions(secretId);\n}\n\n/**\n * Export a single secret to file\n * @param {String} secretId Secret id\n * @param {String} file Optional filename\n */\nexport async function exportSecretToFile(\n secretId: string,\n file: string | null\n) {\n debugMessage(\n `Cli.SecretsOps.exportSecretToFile: start [secretId=${secretId}, file=${file}]`\n );\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(secretId, 'secret');\n }\n const filePath = getFilePath(fileName, true);\n try {\n createProgressBar(1, `Exporting secret ${secretId}`);\n const fileData = await exportSecret(secretId);\n saveJsonToFile(fileData, filePath);\n updateProgressBar(`Exported secret ${secretId}`);\n stopProgressBar(\n // @ts-expect-error - brightCyan colors the string, even though it is not a property of string\n `Exported ${secretId.brightCyan} to ${filePath.brightCyan}.`\n );\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(err, 'error');\n }\n debugMessage(\n `Cli.SecretsOps.exportSecretToFile: end [secretId=${secretId}, file=${file}]`\n );\n}\n\n/**\n * Export all secrets to single file\n * @param {string} file Optional filename\n */\nexport async function exportSecretsToFile(file: string) {\n debugMessage(`Cli.SecretsOps.exportSecretsToFile: start [file=${file}]`);\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(\n `all${titleCase(state.getRealm())}Secrets`,\n 'secret'\n );\n }\n try {\n const secretsExport = await exportSecrets();\n saveJsonToFile(secretsExport, getFilePath(fileName, true));\n } catch (error) {\n printMessage(error.message, 'error');\n printMessage(`exportSecretsToFile: ${error.response?.status}`, 'error');\n }\n debugMessage(`Cli.SecretsOps.exportSecretsToFile: end [file=${file}]`);\n}\n\n/**\n * Export all secrets to individual files\n */\nexport async function exportSecretsToFiles() {\n const allSecretsData = await readSecrets();\n createProgressBar(allSecretsData.length, 'Exporting secrets');\n for (const secret of allSecretsData) {\n updateProgressBar(`Writing secret ${secret._id}`);\n const fileName = getTypedFilename(secret._id, 'secret');\n saveToFile('secret', secret, '_id', getFilePath(fileName, true));\n }\n stopProgressBar(`${allSecretsData.length} secrets exported.`);\n}\n\n/**\n * Create new version of secret\n * @param {String} secretId secret id\n * @param {String} value secret value\n */\nexport async function createVersionOfSecret(secretId, value) {\n showSpinner(`Creating new version of secret ${secretId}...`);\n try {\n const version = await _createVersionOfSecret(secretId, value);\n succeedSpinner(`Created version ${version.version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Activate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function activateVersionOfSecret(secretId, version) {\n showSpinner(`Activating version ${version} of secret ${secretId}...`);\n try {\n await enableVersionOfSecret(secretId, version);\n succeedSpinner(`Activated version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Deactivate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function deactivateVersionOfSecret(secretId, version) {\n showSpinner(`Deactivating version ${version} of secret ${secretId}...`);\n try {\n await disableVersionOfSecret(secretId, version);\n succeedSpinner(`Deactivated version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete version of secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function deleteVersionOfSecret(secretId, version) {\n showSpinner(`Deleting version ${version} of secret ${secretId}...`);\n try {\n await _deleteVersionOfSecret(secretId, version);\n succeedSpinner(`Deleted version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SecretsOps.js","names":["frodo","state","createKeyValueTable","createProgressIndicator","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressIndicator","succeedSpinner","updateProgressIndicator","getTypedFilename","saveJsonToFile","saveToFile","titleCase","wordwrap","resolveUserName","idm","managed","readSecrets","createSecret","_createSecret","readVersionsOfSecret","readSecret","exportSecret","exportSecrets","enableVersionOfSecret","disableVersionOfSecret","createVersionOfSecret","_createVersionOfSecret","updateSecretDescription","deleteSecret","_deleteSecret","deleteVersionOfSecret","_deleteVersionOfSecret","cloud","secret","getFilePath","utils","listSecrets","long","secrets","sort","a","b","_id","localeCompare","error","message","response","data","table","hAlign","content","push","activeVersion","loadedVersion","loaded","description","getUseBearerTokenForAmApis","lastChangedBy","Date","lastChangeDate","toUTCString","toString","forEach","id","value","encoding","useInPlaceholders","code","setSecretDescription","secretId","deleteSecrets","indicatorId","length","listSecretVersions","versions","statusMap","ENABLED","DISABLED","DESTROYED","version","status","createDate","toLocaleString","describeSecret","exportSecretToFile","file","fileName","filePath","fileData","brightCyan","err","exportSecretsToFile","getRealm","secretsExport","_error$response","exportSecretsToFiles","allSecretsData","activateVersionOfSecret","deactivateVersionOfSecret"],"sources":["../../src/ops/SecretsOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\n\nimport {\n createKeyValueTable,\n createProgressIndicator,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressIndicator,\n succeedSpinner,\n updateProgressIndicator,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n saveToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport wordwrap from './utils/Wordwrap';\n\nconst { resolveUserName } = frodo.idm.managed;\nconst {\n readSecrets,\n createSecret: _createSecret,\n readVersionsOfSecret,\n readSecret,\n exportSecret,\n exportSecrets,\n enableVersionOfSecret,\n disableVersionOfSecret,\n createVersionOfSecret: _createVersionOfSecret,\n updateSecretDescription,\n deleteSecret: _deleteSecret,\n deleteVersionOfSecret: _deleteVersionOfSecret,\n} = frodo.cloud.secret;\n\nconst { getFilePath } = frodo.utils;\n\n/**\n * List secrets\n * @param {boolean} long Long version, all the fields\n */\nexport async function listSecrets(long) {\n let secrets = [];\n try {\n secrets = await readSecrets();\n secrets.sort((a, b) => a._id.localeCompare(b._id));\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n if (long) {\n const table = createTable([\n 'Id'['brightCyan'],\n { hAlign: 'right', content: 'Active\\nVersion'['brightCyan'] },\n { hAlign: 'right', content: 'Loaded\\nVersion'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Description'['brightCyan'],\n 'Modifier'['brightCyan'],\n 'Modified (UTC)'['brightCyan'],\n ]);\n for (const secret of secrets) {\n table.push([\n secret._id,\n { hAlign: 'right', content: secret.activeVersion },\n { hAlign: 'right', content: secret.loadedVersion },\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n wordwrap(secret.description, 40),\n state.getUseBearerTokenForAmApis()\n ? secret.lastChangedBy\n : await resolveUserName('teammember', secret.lastChangedBy),\n new Date(secret.lastChangeDate).toUTCString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n secrets.forEach((secret) => {\n printMessage(secret._id, 'data');\n });\n }\n}\n\n/**\n * Create secret\n * @param {String} id secret id\n * @param {String} value secret value\n * @param {String} description secret description\n * @param {String} encoding secret encoding\n * @param {boolean} useInPlaceholders use secret in placeholders\n */\nexport async function createSecret(\n id,\n value,\n description,\n encoding,\n useInPlaceholders\n) {\n showSpinner(`Creating secret ${id}...`);\n try {\n await _createSecret(id, value, description, encoding, useInPlaceholders);\n succeedSpinner(`Created secret ${id}`);\n } catch (error) {\n failSpinner(\n error.response\n ? `Error: ${error.response.data.code} - ${error.response.data.message}`\n : error\n );\n }\n}\n\n/**\n * Set description of secret\n * @param {String} secretId secret id\n * @param {String} description secret description\n */\nexport async function setSecretDescription(secretId, description) {\n showSpinner(`Setting description of secret ${secretId}...`);\n try {\n await updateSecretDescription(secretId, description);\n succeedSpinner(`Set description of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete a secret\n * @param {String} secretId secret id\n */\nexport async function deleteSecret(secretId) {\n showSpinner(`Deleting secret ${secretId}...`);\n try {\n await _deleteSecret(secretId);\n succeedSpinner(`Deleted secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete all secrets\n */\nexport async function deleteSecrets() {\n let indicatorId: string;\n try {\n const secrets = await readSecrets();\n indicatorId = createProgressIndicator(\n 'determinate',\n secrets.length,\n `Deleting secrets...`\n );\n for (const secret of secrets) {\n try {\n await _deleteSecret(secret._id);\n updateProgressIndicator(indicatorId, `Deleted secret ${secret._id}`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n }\n stopProgressIndicator(indicatorId, `Secrets deleted.`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n}\n\n/**\n * List all the versions of the secret\n * @param {String} secretId secret id\n */\nexport async function listSecretVersions(secretId) {\n let versions = [];\n try {\n versions = await readVersionsOfSecret(secretId);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n const table = createTable([\n { hAlign: 'right', content: 'Version'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Loaded'['brightCyan'],\n 'Created'['brightCyan'],\n ]);\n // versions.sort((a, b) => a._id.localeCompare(b._id));\n const statusMap = {\n ENABLED: 'active'['brightGreen'],\n DISABLED: 'inactive'['brightRed'],\n DESTROYED: 'deleted'['brightRed'],\n };\n for (const version of versions) {\n table.push([\n { hAlign: 'right', content: version.version },\n statusMap[version.status],\n version.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n new Date(version.createDate).toLocaleString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n}\n\n/**\n * Describe a secret\n * @param {String} secretId Secret id\n */\nexport async function describeSecret(secretId) {\n const secret = await readSecret(secretId);\n const table = createKeyValueTable();\n table.push(['Name'['brightCyan'], secret._id]);\n table.push(['Active Version'['brightCyan'], secret.activeVersion]);\n table.push(['Loaded Version'['brightCyan'], secret.loadedVersion]);\n table.push([\n 'Status'['brightCyan'],\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n ]);\n table.push(['Description'['brightCyan'], wordwrap(secret.description, 60)]);\n table.push([\n 'Modified'['brightCyan'],\n new Date(secret.lastChangeDate).toLocaleString(),\n ]);\n table.push([\n 'Modifier'['brightCyan'],\n await resolveUserName('teammember', secret.lastChangedBy),\n ]);\n table.push(['Modifier UUID'['brightCyan'], secret.lastChangedBy]);\n table.push(['Encoding'['brightCyan'], secret.encoding]);\n table.push(['Use In Placeholders'['brightCyan'], secret.useInPlaceholders]);\n printMessage(table.toString(), 'data');\n printMessage('\\nSecret Versions:', 'data');\n await listSecretVersions(secretId);\n}\n\n/**\n * Export a single secret to file\n * @param {String} secretId Secret id\n * @param {String} file Optional filename\n */\nexport async function exportSecretToFile(\n secretId: string,\n file: string | null\n) {\n debugMessage(\n `Cli.SecretsOps.exportSecretToFile: start [secretId=${secretId}, file=${file}]`\n );\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(secretId, 'secret');\n }\n const filePath = getFilePath(fileName, true);\n let indicatorId: string;\n try {\n indicatorId = createProgressIndicator(\n 'determinate',\n 1,\n `Exporting secret ${secretId}`\n );\n const fileData = await exportSecret(secretId);\n saveJsonToFile(fileData, filePath);\n updateProgressIndicator(indicatorId, `Exported secret ${secretId}`);\n stopProgressIndicator(\n indicatorId,\n // @ts-expect-error - brightCyan colors the string, even though it is not a property of string\n `Exported ${secretId.brightCyan} to ${filePath.brightCyan}.`\n );\n } catch (err) {\n stopProgressIndicator(indicatorId, `${err}`);\n printMessage(err, 'error');\n }\n debugMessage(\n `Cli.SecretsOps.exportSecretToFile: end [secretId=${secretId}, file=${file}]`\n );\n}\n\n/**\n * Export all secrets to single file\n * @param {string} file Optional filename\n */\nexport async function exportSecretsToFile(file: string) {\n debugMessage(`Cli.SecretsOps.exportSecretsToFile: start [file=${file}]`);\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(\n `all${titleCase(state.getRealm())}Secrets`,\n 'secret'\n );\n }\n try {\n const secretsExport = await exportSecrets();\n saveJsonToFile(secretsExport, getFilePath(fileName, true));\n } catch (error) {\n printMessage(error.message, 'error');\n printMessage(`exportSecretsToFile: ${error.response?.status}`, 'error');\n }\n debugMessage(`Cli.SecretsOps.exportSecretsToFile: end [file=${file}]`);\n}\n\n/**\n * Export all secrets to individual files\n */\nexport async function exportSecretsToFiles() {\n const allSecretsData = await readSecrets();\n const indicatorId = createProgressIndicator(\n 'determinate',\n allSecretsData.length,\n 'Exporting secrets'\n );\n for (const secret of allSecretsData) {\n updateProgressIndicator(indicatorId, `Writing secret ${secret._id}`);\n const fileName = getTypedFilename(secret._id, 'secret');\n saveToFile('secret', secret, '_id', getFilePath(fileName, true));\n }\n stopProgressIndicator(\n indicatorId,\n `${allSecretsData.length} secrets exported.`\n );\n}\n\n/**\n * Create new version of secret\n * @param {String} secretId secret id\n * @param {String} value secret value\n */\nexport async function createVersionOfSecret(secretId, value) {\n showSpinner(`Creating new version of secret ${secretId}...`);\n try {\n const version = await _createVersionOfSecret(secretId, value);\n succeedSpinner(`Created version ${version.version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Activate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function activateVersionOfSecret(secretId, version) {\n showSpinner(`Activating version ${version} of secret ${secretId}...`);\n try {\n await enableVersionOfSecret(secretId, version);\n succeedSpinner(`Activated version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Deactivate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function deactivateVersionOfSecret(secretId, version) {\n showSpinner(`Deactivating version ${version} of secret ${secretId}...`);\n try {\n await disableVersionOfSecret(secretId, version);\n succeedSpinner(`Deactivated version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete version of secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function deleteVersionOfSecret(secretId, version) {\n showSpinner(`Deleting version ${version} of secret ${secretId}...`);\n try {\n await _deleteVersionOfSecret(secretId, version);\n succeedSpinner(`Deleted version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n"],"mappings":"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"}
|
package/esm/ops/ThemeOps.js
CHANGED
|
@@ -2,7 +2,7 @@ import { frodo } from '@rockcarver/frodo-lib';
|
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import { v4 as uuidv4 } from 'uuid';
|
|
4
4
|
import { createProgressIndicator, createTable, printMessage, stopProgressIndicator, updateProgressIndicator } from '../utils/Console';
|
|
5
|
-
import { getTypedFilename, saveToFile } from '../utils/ExportImportUtils';
|
|
5
|
+
import { getTypedFilename, saveJsonToFile, saveToFile } from '../utils/ExportImportUtils';
|
|
6
6
|
const {
|
|
7
7
|
getRealmString,
|
|
8
8
|
validateImport,
|
|
@@ -16,6 +16,7 @@ const {
|
|
|
16
16
|
updateThemeByName,
|
|
17
17
|
updateTheme,
|
|
18
18
|
updateThemes,
|
|
19
|
+
exportThemes,
|
|
19
20
|
deleteTheme,
|
|
20
21
|
deleteThemeByName,
|
|
21
22
|
deleteThemes
|
|
@@ -83,15 +84,15 @@ export async function exportThemeByName(name, file) {
|
|
|
83
84
|
fileName = file;
|
|
84
85
|
}
|
|
85
86
|
const filePath = getFilePath(fileName, true);
|
|
86
|
-
createProgressIndicator('determinate', 1, `Exporting ${name}`);
|
|
87
|
+
const indicatorId = createProgressIndicator('determinate', 1, `Exporting ${name}`);
|
|
87
88
|
try {
|
|
88
89
|
const themeData = await readThemeByName(name);
|
|
89
90
|
if (!themeData._id) themeData._id = uuidv4();
|
|
90
|
-
updateProgressIndicator(`Writing file to ${filePath}`);
|
|
91
|
+
updateProgressIndicator(indicatorId, `Writing file to ${filePath}`);
|
|
91
92
|
saveToFile('theme', [themeData], '_id', filePath);
|
|
92
|
-
stopProgressIndicator(`Successfully exported theme ${name}.`);
|
|
93
|
+
stopProgressIndicator(indicatorId, `Successfully exported theme ${name}.`);
|
|
93
94
|
} catch (error) {
|
|
94
|
-
stopProgressIndicator(`${error.message}`);
|
|
95
|
+
stopProgressIndicator(indicatorId, `${error.message}`);
|
|
95
96
|
printMessage(`${error.message}`, 'error');
|
|
96
97
|
}
|
|
97
98
|
}
|
|
@@ -107,14 +108,14 @@ export async function exportThemeById(id, file) {
|
|
|
107
108
|
fileName = file;
|
|
108
109
|
}
|
|
109
110
|
const filePath = getFilePath(fileName, true);
|
|
110
|
-
createProgressIndicator('determinate', 1, `Exporting ${id}`);
|
|
111
|
+
const indicatorId = createProgressIndicator('determinate', 1, `Exporting ${id}`);
|
|
111
112
|
try {
|
|
112
113
|
const themeData = await readTheme(id);
|
|
113
|
-
updateProgressIndicator(`Writing file to ${filePath}`);
|
|
114
|
+
updateProgressIndicator(indicatorId, `Writing file to ${filePath}`);
|
|
114
115
|
saveToFile('theme', [themeData], '_id', filePath);
|
|
115
|
-
stopProgressIndicator(`Successfully exported theme ${id}.`);
|
|
116
|
+
stopProgressIndicator(indicatorId, `Successfully exported theme ${id}.`);
|
|
116
117
|
} catch (error) {
|
|
117
|
-
stopProgressIndicator(`${error.message}`);
|
|
118
|
+
stopProgressIndicator(indicatorId, `${error.message}`);
|
|
118
119
|
printMessage(`${error.message}`, 'error');
|
|
119
120
|
}
|
|
120
121
|
}
|
|
@@ -129,29 +130,26 @@ export async function exportThemesToFile(file) {
|
|
|
129
130
|
fileName = file;
|
|
130
131
|
}
|
|
131
132
|
const filePath = getFilePath(fileName, true);
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
for (const themeData of allThemesData) {
|
|
135
|
-
if (!themeData._id) themeData._id = uuidv4();
|
|
136
|
-
updateProgressIndicator(`Exporting theme ${themeData.name}`);
|
|
137
|
-
}
|
|
138
|
-
saveToFile('theme', allThemesData, '_id', filePath);
|
|
139
|
-
stopProgressIndicator(`${allThemesData.length} themes exported to ${filePath}.`);
|
|
133
|
+
const exportData = await exportThemes();
|
|
134
|
+
saveJsonToFile(exportData, filePath);
|
|
140
135
|
}
|
|
141
136
|
|
|
142
137
|
/**
|
|
143
138
|
* Export all themes to separate files
|
|
144
139
|
*/
|
|
145
140
|
export async function exportThemesToFiles() {
|
|
146
|
-
const
|
|
147
|
-
createProgressIndicator('determinate',
|
|
148
|
-
for (const
|
|
149
|
-
if (!
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
141
|
+
const themes = await readThemes();
|
|
142
|
+
const barId = createProgressIndicator('determinate', themes.length, 'Exporting themes');
|
|
143
|
+
for (const theme of themes) {
|
|
144
|
+
if (!theme._id) theme._id = uuidv4();
|
|
145
|
+
const fileBarId = createProgressIndicator('determinate', 1, `Exporting theme ${theme.name}...`);
|
|
146
|
+
updateProgressIndicator(barId, `Exporting theme ${theme.name}`);
|
|
147
|
+
const file = getFilePath(getTypedFilename(theme.name, 'theme'), true);
|
|
148
|
+
saveToFile('theme', theme, '_id', file);
|
|
149
|
+
updateProgressIndicator(fileBarId, `${theme.name} saved to ${file}`);
|
|
150
|
+
stopProgressIndicator(fileBarId, `${theme.name} saved to ${file}.`);
|
|
153
151
|
}
|
|
154
|
-
stopProgressIndicator(`${
|
|
152
|
+
stopProgressIndicator(barId, `${themes.length} themes exported.`);
|
|
155
153
|
}
|
|
156
154
|
|
|
157
155
|
/**
|
|
@@ -160,35 +158,31 @@ export async function exportThemesToFiles() {
|
|
|
160
158
|
* @param {String} file import file name
|
|
161
159
|
*/
|
|
162
160
|
export async function importThemeByName(name, file) {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
stopProgressIndicator(`Error importing theme ${themeData.theme[id].name}: ${error.message}`);
|
|
179
|
-
printMessage(`Error importing theme ${themeData.theme[id].name}: ${error.message}`, 'error');
|
|
180
|
-
}
|
|
181
|
-
break;
|
|
182
|
-
}
|
|
161
|
+
try {
|
|
162
|
+
const data = fs.readFileSync(getFilePath(file), 'utf8');
|
|
163
|
+
const themeExport = JSON.parse(data);
|
|
164
|
+
const indicatorId = createProgressIndicator('determinate', 1, 'Importing theme...');
|
|
165
|
+
let found = false;
|
|
166
|
+
for (const id of Object.keys(themeExport.theme)) {
|
|
167
|
+
if (themeExport.theme[id].name === name) {
|
|
168
|
+
found = true;
|
|
169
|
+
updateProgressIndicator(indicatorId, `Importing ${themeExport.theme[id].name}`);
|
|
170
|
+
try {
|
|
171
|
+
await updateThemeByName(name, themeExport.theme[id]);
|
|
172
|
+
stopProgressIndicator(indicatorId, `Successfully imported theme ${name}.`);
|
|
173
|
+
} catch (error) {
|
|
174
|
+
stopProgressIndicator(indicatorId, `Error importing theme ${themeExport.theme[id].name}: ${error.message}`);
|
|
175
|
+
printMessage(`Error importing theme ${themeExport.theme[id].name}: ${error.message}`, 'error');
|
|
183
176
|
}
|
|
177
|
+
break;
|
|
184
178
|
}
|
|
185
|
-
if (!found) {
|
|
186
|
-
stopProgressIndicator(`Theme ${name} not found!`);
|
|
187
|
-
}
|
|
188
|
-
} else {
|
|
189
|
-
printMessage('Import validation failed...', 'error');
|
|
190
179
|
}
|
|
191
|
-
|
|
180
|
+
if (!found) {
|
|
181
|
+
stopProgressIndicator(indicatorId, `Theme ${name} not found!`);
|
|
182
|
+
}
|
|
183
|
+
} catch (error) {
|
|
184
|
+
printMessage(`Error importing theme ${name}: ${error}`, 'error');
|
|
185
|
+
}
|
|
192
186
|
}
|
|
193
187
|
|
|
194
188
|
/**
|
|
@@ -197,35 +191,31 @@ export async function importThemeByName(name, file) {
|
|
|
197
191
|
* @param {String} file import file name
|
|
198
192
|
*/
|
|
199
193
|
export async function importThemeById(id, file) {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
stopProgressIndicator(`Error importing theme ${themeData.theme[themeId]._id}: ${error.message}`);
|
|
216
|
-
printMessage(`Error importing theme ${themeData.theme[themeId]._id}: ${error.message}`, 'error');
|
|
217
|
-
}
|
|
218
|
-
break;
|
|
219
|
-
}
|
|
194
|
+
try {
|
|
195
|
+
const data = fs.readFileSync(getFilePath(file), 'utf8');
|
|
196
|
+
const themeExport = JSON.parse(data);
|
|
197
|
+
const indicatorId = createProgressIndicator('determinate', 1, 'Importing theme...');
|
|
198
|
+
let found = false;
|
|
199
|
+
for (const themeId of Object.keys(themeExport.theme)) {
|
|
200
|
+
if (themeId === id) {
|
|
201
|
+
found = true;
|
|
202
|
+
updateProgressIndicator(indicatorId, `Importing ${themeExport.theme[themeId]._id}`);
|
|
203
|
+
try {
|
|
204
|
+
await updateTheme(themeId, themeExport.theme[themeId]);
|
|
205
|
+
stopProgressIndicator(indicatorId, `Successfully imported theme ${id}.`);
|
|
206
|
+
} catch (error) {
|
|
207
|
+
stopProgressIndicator(indicatorId, `Error importing theme ${themeExport.theme[themeId]._id}: ${error.message}`);
|
|
208
|
+
printMessage(`Error importing theme ${themeExport.theme[themeId]._id}: ${error.message}`, 'error');
|
|
220
209
|
}
|
|
210
|
+
break;
|
|
221
211
|
}
|
|
222
|
-
if (!found) {
|
|
223
|
-
stopProgressIndicator(`Theme ${id} not found!`);
|
|
224
|
-
}
|
|
225
|
-
} else {
|
|
226
|
-
printMessage('Import validation failed...', 'error');
|
|
227
212
|
}
|
|
228
|
-
|
|
213
|
+
if (!found) {
|
|
214
|
+
stopProgressIndicator(indicatorId, `Theme ${id} not found!`);
|
|
215
|
+
}
|
|
216
|
+
} catch (error) {
|
|
217
|
+
printMessage(`Error importing theme ${id}: ${error}`, 'error');
|
|
218
|
+
}
|
|
229
219
|
}
|
|
230
220
|
|
|
231
221
|
/**
|
|
@@ -234,28 +224,23 @@ export async function importThemeById(id, file) {
|
|
|
234
224
|
*/
|
|
235
225
|
export async function importThemesFromFile(file) {
|
|
236
226
|
const filePath = getFilePath(file);
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
if (result == null) {
|
|
249
|
-
stopProgressIndicator(`Error importing ${Object.keys(fileData.theme).length} themes!`);
|
|
250
|
-
printMessage(`Error importing ${Object.keys(fileData.theme).length} themes from ${filePath}`, 'error');
|
|
251
|
-
} else {
|
|
252
|
-
stopProgressIndicator(`Successfully imported ${Object.keys(fileData.theme).length} themes.`);
|
|
253
|
-
}
|
|
254
|
-
});
|
|
227
|
+
try {
|
|
228
|
+
const data = fs.readFileSync(filePath, 'utf8');
|
|
229
|
+
const themeExport = JSON.parse(data);
|
|
230
|
+
const indicatorId = createProgressIndicator('determinate', Object.keys(themeExport.theme).length, 'Importing themes...');
|
|
231
|
+
for (const id of Object.keys(themeExport.theme)) {
|
|
232
|
+
updateProgressIndicator(indicatorId, `Importing ${themeExport.theme[id].name}`);
|
|
233
|
+
}
|
|
234
|
+
const result = await updateThemes(themeExport.theme);
|
|
235
|
+
if (result == null) {
|
|
236
|
+
stopProgressIndicator(indicatorId, `Error importing ${Object.keys(themeExport.theme).length} themes!`);
|
|
237
|
+
printMessage(`Error importing ${Object.keys(themeExport.theme).length} themes from ${filePath}`, 'error');
|
|
255
238
|
} else {
|
|
256
|
-
|
|
239
|
+
stopProgressIndicator(indicatorId, `Successfully imported ${Object.keys(themeExport.theme).length} themes.`);
|
|
257
240
|
}
|
|
258
|
-
})
|
|
241
|
+
} catch (error) {
|
|
242
|
+
printMessage(`Error importing themes: ${error}`, 'error');
|
|
243
|
+
}
|
|
259
244
|
}
|
|
260
245
|
|
|
261
246
|
/**
|
|
@@ -264,7 +249,7 @@ export async function importThemesFromFile(file) {
|
|
|
264
249
|
export async function importThemesFromFiles() {
|
|
265
250
|
const names = fs.readdirSync(getWorkingDirectory());
|
|
266
251
|
const jsonFiles = names.filter(name => name.toLowerCase().endsWith('.theme.json')).map(name => getFilePath(name));
|
|
267
|
-
createProgressIndicator('determinate', jsonFiles.length, 'Importing themes...');
|
|
252
|
+
const indicatorId = createProgressIndicator('determinate', jsonFiles.length, 'Importing themes...');
|
|
268
253
|
let fileData = null;
|
|
269
254
|
let count = 0;
|
|
270
255
|
let total = 0;
|
|
@@ -281,13 +266,13 @@ export async function importThemesFromFiles() {
|
|
|
281
266
|
} else {
|
|
282
267
|
files += 1;
|
|
283
268
|
total += count;
|
|
284
|
-
updateProgressIndicator(`Imported ${count} theme(s) from ${file}`);
|
|
269
|
+
updateProgressIndicator(indicatorId, `Imported ${count} theme(s) from ${file}`);
|
|
285
270
|
}
|
|
286
271
|
} else {
|
|
287
272
|
printMessage(`Validation of ${file} failed!`, 'error');
|
|
288
273
|
}
|
|
289
274
|
}
|
|
290
|
-
stopProgressIndicator(`Finished importing ${total} theme(s) from ${files} file(s).`);
|
|
275
|
+
stopProgressIndicator(indicatorId, `Finished importing ${total} theme(s) from ${files} file(s).`);
|
|
291
276
|
}
|
|
292
277
|
|
|
293
278
|
/**
|
|
@@ -295,29 +280,25 @@ export async function importThemesFromFiles() {
|
|
|
295
280
|
* @param {String} file import file name
|
|
296
281
|
*/
|
|
297
282
|
export async function importFirstThemeFromFile(file) {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
const
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
} else {
|
|
311
|
-
stopProgressIndicator(`Successfully imported theme ${themeData.theme[id].name}`);
|
|
312
|
-
}
|
|
313
|
-
});
|
|
314
|
-
break;
|
|
283
|
+
try {
|
|
284
|
+
const data = fs.readFileSync(getFilePath(file), 'utf8');
|
|
285
|
+
const themeExport = JSON.parse(data);
|
|
286
|
+
const indicatorId = createProgressIndicator('determinate', 1, 'Importing theme...');
|
|
287
|
+
for (const id of Object.keys(themeExport.theme)) {
|
|
288
|
+
updateProgressIndicator(indicatorId, `Importing ${themeExport.theme[id].name}`);
|
|
289
|
+
updateTheme(id, themeExport.theme[id]).then(result => {
|
|
290
|
+
if (result == null) {
|
|
291
|
+
stopProgressIndicator(indicatorId, `Error importing theme ${themeExport.theme[id].name}`);
|
|
292
|
+
printMessage(`Error importing theme ${themeExport.theme[id].name}`, 'error');
|
|
293
|
+
} else {
|
|
294
|
+
stopProgressIndicator(indicatorId, `Successfully imported theme ${themeExport.theme[id].name}`);
|
|
315
295
|
}
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
printMessage('Import validation failed...', 'error');
|
|
296
|
+
});
|
|
297
|
+
break;
|
|
319
298
|
}
|
|
320
|
-
})
|
|
299
|
+
} catch (error) {
|
|
300
|
+
printMessage(`Error importing themes: ${error}`, 'error');
|
|
301
|
+
}
|
|
321
302
|
}
|
|
322
303
|
|
|
323
304
|
/**
|
|
@@ -325,12 +306,12 @@ export async function importFirstThemeFromFile(file) {
|
|
|
325
306
|
* @param {String} id theme id
|
|
326
307
|
*/
|
|
327
308
|
export async function deleteThemeCmd(id) {
|
|
328
|
-
createProgressIndicator('indeterminate', undefined, `Deleting ${id}...`);
|
|
309
|
+
const indicatorId = createProgressIndicator('indeterminate', undefined, `Deleting ${id}...`);
|
|
329
310
|
try {
|
|
330
311
|
await deleteTheme(id);
|
|
331
|
-
stopProgressIndicator(`Deleted ${id}.`, 'success');
|
|
312
|
+
stopProgressIndicator(indicatorId, `Deleted ${id}.`, 'success');
|
|
332
313
|
} catch (error) {
|
|
333
|
-
stopProgressIndicator(`Error: ${error.message}`, 'fail');
|
|
314
|
+
stopProgressIndicator(indicatorId, `Error: ${error.message}`, 'fail');
|
|
334
315
|
}
|
|
335
316
|
}
|
|
336
317
|
|
|
@@ -339,12 +320,12 @@ export async function deleteThemeCmd(id) {
|
|
|
339
320
|
* @param {String} name theme name
|
|
340
321
|
*/
|
|
341
322
|
export async function deleteThemeByNameCmd(name) {
|
|
342
|
-
createProgressIndicator('indeterminate', undefined, `Deleting ${name}...`);
|
|
323
|
+
const indicatorId = createProgressIndicator('indeterminate', undefined, `Deleting ${name}...`);
|
|
343
324
|
try {
|
|
344
325
|
await deleteThemeByName(name);
|
|
345
|
-
stopProgressIndicator(`Deleted ${name}.`, 'success');
|
|
326
|
+
stopProgressIndicator(indicatorId, `Deleted ${name}.`, 'success');
|
|
346
327
|
} catch (error) {
|
|
347
|
-
stopProgressIndicator(`Error: ${error.message}`, 'fail');
|
|
328
|
+
stopProgressIndicator(indicatorId, `Error: ${error.message}`, 'fail');
|
|
348
329
|
}
|
|
349
330
|
}
|
|
350
331
|
|
|
@@ -352,12 +333,12 @@ export async function deleteThemeByNameCmd(name) {
|
|
|
352
333
|
* Delete all themes
|
|
353
334
|
*/
|
|
354
335
|
export async function deleteAllThemes() {
|
|
355
|
-
createProgressIndicator('indeterminate', undefined, `Deleting all realm themes...`);
|
|
336
|
+
const indicatorId = createProgressIndicator('indeterminate', undefined, `Deleting all realm themes...`);
|
|
356
337
|
try {
|
|
357
338
|
await deleteThemes();
|
|
358
|
-
stopProgressIndicator(`Deleted all realm themes.`, 'success');
|
|
339
|
+
stopProgressIndicator(indicatorId, `Deleted all realm themes.`, 'success');
|
|
359
340
|
} catch (error) {
|
|
360
|
-
stopProgressIndicator(`Error: ${error.message}`, 'fail');
|
|
341
|
+
stopProgressIndicator(indicatorId, `Error: ${error.message}`, 'fail');
|
|
361
342
|
}
|
|
362
343
|
}
|
|
363
344
|
|