@rockcarver/frodo-cli 0.10.4 → 0.11.1-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/README.md +3 -3
  3. package/package.json +17 -15
  4. package/src/app.js +7 -6
  5. package/src/cli/_template/cmd-delete.js +9 -8
  6. package/src/cli/_template/cmd-describe.js +9 -8
  7. package/src/cli/_template/cmd-export.js +9 -8
  8. package/src/cli/_template/cmd-import.js +9 -8
  9. package/src/cli/_template/cmd-list.js +9 -8
  10. package/src/cli/_template/cmd-sub1-delete.js +9 -8
  11. package/src/cli/_template/cmd-sub1-describe.js +9 -8
  12. package/src/cli/_template/cmd-sub1-export.js +9 -8
  13. package/src/cli/_template/cmd-sub1-import.js +9 -8
  14. package/src/cli/_template/cmd-sub1-list.js +9 -8
  15. package/src/cli/_template/cmd-sub2-delete.js +9 -8
  16. package/src/cli/_template/cmd-sub2-describe.js +9 -8
  17. package/src/cli/_template/cmd-sub2-export.js +9 -8
  18. package/src/cli/_template/cmd-sub2-import.js +9 -8
  19. package/src/cli/_template/cmd-sub2-list.js +9 -8
  20. package/src/cli/admin/admin-add-autoid-static-user-mapping.js +12 -12
  21. package/src/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +15 -18
  22. package/src/cli/admin/admin-get-access-token.js +12 -12
  23. package/src/cli/admin/admin-grant-oauth2-client-admin-privileges.js +13 -13
  24. package/src/cli/admin/admin-hide-generic-extension-attributes.js +13 -13
  25. package/src/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +13 -13
  26. package/src/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +14 -13
  27. package/src/cli/admin/admin-list-static-user-mappings.js +12 -12
  28. package/src/cli/admin/admin-remove-static-user-mapping.js +12 -12
  29. package/src/cli/admin/admin-repair-org-model.js +13 -13
  30. package/src/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +13 -13
  31. package/src/cli/admin/admin-show-generic-extension-attributes.js +13 -13
  32. package/src/cli/app/app-delete.js +9 -8
  33. package/src/cli/app/app-describe.js +9 -8
  34. package/src/cli/app/app-export.js +15 -15
  35. package/src/cli/app/app-import.js +11 -11
  36. package/src/cli/app/app-list.js +11 -12
  37. package/src/cli/conn/conn-add.js +11 -11
  38. package/src/cli/conn/conn-delete.js +3 -1
  39. package/src/cli/conn/conn-describe.js +3 -1
  40. package/src/cli/conn/conn-list.js +3 -4
  41. package/src/cli/email/email-template-export.js +16 -16
  42. package/src/cli/email/email-template-import.js +16 -16
  43. package/src/cli/email/email-template-list.js +11 -11
  44. package/src/cli/esv/esv-apply.js +12 -12
  45. package/src/cli/esv/esv-secret-create.js +11 -11
  46. package/src/cli/esv/esv-secret-delete.js +13 -13
  47. package/src/cli/esv/esv-secret-describe.js +11 -11
  48. package/src/cli/esv/esv-secret-export.js +9 -8
  49. package/src/cli/esv/esv-secret-import.js +9 -8
  50. package/src/cli/esv/esv-secret-list.js +11 -11
  51. package/src/cli/esv/esv-secret-set.js +11 -11
  52. package/src/cli/esv/esv-secret-version-activate.js +12 -12
  53. package/src/cli/esv/esv-secret-version-create.js +11 -11
  54. package/src/cli/esv/esv-secret-version-deactivate.js +12 -12
  55. package/src/cli/esv/esv-secret-version-delete.js +13 -13
  56. package/src/cli/esv/esv-secret-version-list.js +11 -11
  57. package/src/cli/esv/esv-variable-create.js +11 -11
  58. package/src/cli/esv/esv-variable-delete.js +13 -16
  59. package/src/cli/esv/esv-variable-describe.js +11 -11
  60. package/src/cli/esv/esv-variable-export.js +9 -8
  61. package/src/cli/esv/esv-variable-import.js +9 -8
  62. package/src/cli/esv/esv-variable-list.js +11 -11
  63. package/src/cli/esv/esv-variable-set.js +13 -16
  64. package/src/cli/idm/idm-count.js +11 -11
  65. package/src/cli/idm/idm-export.js +16 -16
  66. package/src/cli/idm/idm-list.js +11 -11
  67. package/src/cli/idp/idp-export.js +15 -19
  68. package/src/cli/idp/idp-import.js +18 -18
  69. package/src/cli/idp/idp-list.js +12 -12
  70. package/src/cli/info/info.js +23 -19
  71. package/src/cli/journey/journey-delete.js +14 -14
  72. package/src/cli/journey/journey-describe.js +26 -35
  73. package/src/cli/journey/journey-export.js +18 -21
  74. package/src/cli/journey/journey-import.js +17 -17
  75. package/src/cli/journey/journey-list.js +12 -12
  76. package/src/cli/journey/journey-prune.js +12 -12
  77. package/src/cli/logging/logs-list.js +33 -28
  78. package/src/cli/logging/logs-tail.js +26 -22
  79. package/src/cli/realm/realm-add-custom-domain.js +13 -13
  80. package/src/cli/realm/realm-describe.js +14 -14
  81. package/src/cli/realm/realm-list.js +11 -11
  82. package/src/cli/realm/realm-remove-custom-domain.js +16 -13
  83. package/src/cli/saml/saml-cot-export.js +16 -16
  84. package/src/cli/saml/saml-cot-import.js +18 -18
  85. package/src/cli/saml/saml-cot-list.js +12 -12
  86. package/src/cli/saml/saml-describe.js +12 -12
  87. package/src/cli/saml/saml-export.js +16 -19
  88. package/src/cli/saml/saml-import.js +19 -18
  89. package/src/cli/saml/saml-list.js +12 -12
  90. package/src/cli/saml/saml-metadata-export.js +15 -19
  91. package/src/cli/script/script-delete.js +9 -8
  92. package/src/cli/script/script-describe.js +9 -8
  93. package/src/cli/script/script-export.js +18 -20
  94. package/src/cli/script/script-import.js +13 -12
  95. package/src/cli/script/script-list.js +12 -12
  96. package/src/cli/theme/theme-delete.js +17 -21
  97. package/src/cli/theme/theme-export.js +19 -18
  98. package/src/cli/theme/theme-import.js +21 -20
  99. package/src/cli/theme/theme-list.js +12 -12
  100. package/.eslintrc +0 -29
  101. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -30
  102. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  103. package/.github/README.md +0 -273
  104. package/.github/workflows/pipeline.yml +0 -487
  105. package/.prettierrc +0 -6
  106. package/CODE_OF_CONDUCT.md +0 -128
  107. package/docs/BINARIES.md +0 -22
  108. package/docs/CONTRIBUTE.md +0 -96
  109. package/docs/PIPELINE.md +0 -169
  110. package/docs/images/macos_warn1.png +0 -0
  111. package/docs/images/macos_warn2.png +0 -0
  112. package/docs/images/macos_warn3.png +0 -0
  113. package/docs/images/npm_versioning_guidelines.png +0 -0
  114. package/docs/images/release_pipeline.png +0 -0
  115. package/gulpfile.js +0 -49
  116. package/jsconfig.json +0 -6
  117. package/resources/sampleEntitiesFile.json +0 -8
  118. package/resources/sampleEnvFile.env +0 -2
  119. package/src/api/AuthenticateApi.js +0 -33
  120. package/src/api/BaseApi.js +0 -242
  121. package/src/api/CirclesOfTrustApi.js +0 -87
  122. package/src/api/EmailTemplateApi.js +0 -37
  123. package/src/api/IdmConfigApi.js +0 -88
  124. package/src/api/LogApi.js +0 -45
  125. package/src/api/ManagedObjectApi.js +0 -62
  126. package/src/api/OAuth2ClientApi.js +0 -69
  127. package/src/api/OAuth2OIDCApi.js +0 -73
  128. package/src/api/OAuth2ProviderApi.js +0 -32
  129. package/src/api/RealmApi.js +0 -99
  130. package/src/api/Saml2Api.js +0 -176
  131. package/src/api/ScriptApi.js +0 -84
  132. package/src/api/SecretsApi.js +0 -151
  133. package/src/api/ServerInfoApi.js +0 -41
  134. package/src/api/SocialIdentityProvidersApi.js +0 -114
  135. package/src/api/StartupApi.js +0 -45
  136. package/src/api/ThemeApi.js +0 -181
  137. package/src/api/TreeApi.js +0 -207
  138. package/src/api/VariablesApi.js +0 -104
  139. package/src/api/utils/ApiUtils.js +0 -77
  140. package/src/api/utils/Base64.js +0 -62
  141. package/src/cli/journey/journey-delete.e2e.test.js +0 -380
  142. package/src/cli/journey/journey-list.e2e.test.js +0 -141
  143. package/src/cli/theme/theme-delete.e2e.test.js +0 -178
  144. package/src/cli/theme/theme-list.e2e.test.js +0 -119
  145. package/src/ops/AdminOps.js +0 -901
  146. package/src/ops/AuthenticateOps.js +0 -342
  147. package/src/ops/CirclesOfTrustOps.js +0 -350
  148. package/src/ops/ConnectionProfileOps.js +0 -254
  149. package/src/ops/EmailTemplateOps.js +0 -326
  150. package/src/ops/IdmOps.js +0 -227
  151. package/src/ops/IdpOps.js +0 -342
  152. package/src/ops/JourneyOps.js +0 -2026
  153. package/src/ops/LogOps.js +0 -357
  154. package/src/ops/ManagedObjectOps.js +0 -34
  155. package/src/ops/OAuth2ClientOps.js +0 -151
  156. package/src/ops/OrganizationOps.js +0 -85
  157. package/src/ops/RealmOps.js +0 -139
  158. package/src/ops/SamlOps.js +0 -541
  159. package/src/ops/ScriptOps.js +0 -211
  160. package/src/ops/SecretsOps.js +0 -288
  161. package/src/ops/StartupOps.js +0 -114
  162. package/src/ops/ThemeOps.js +0 -379
  163. package/src/ops/VariablesOps.js +0 -185
  164. package/src/ops/templates/OAuth2ClientTemplate.json +0 -270
  165. package/src/ops/templates/OrgModelUserAttributesTemplate.json +0 -149
  166. package/src/ops/templates/cloud/GenericExtensionAttributesTemplate.json +0 -392
  167. package/src/ops/templates/cloud/managed.json +0 -4119
  168. package/src/ops/utils/Console.js +0 -434
  169. package/src/ops/utils/DataProtection.js +0 -92
  170. package/src/ops/utils/ExportImportUtils.js +0 -146
  171. package/src/ops/utils/OpsUtils.js +0 -76
  172. package/src/ops/utils/Wordwrap.js +0 -11
  173. package/src/storage/SessionStorage.js +0 -45
  174. package/test/client_cli/en/connections.test.js +0 -62
  175. package/test/client_cli/en/connections_add.test.js +0 -34
  176. package/test/client_cli/en/connections_delete.test.js +0 -34
  177. package/test/client_cli/en/connections_list.test.js +0 -34
  178. package/test/client_cli/en/email_templates.test.js +0 -77
  179. package/test/client_cli/en/email_templates_export.test.js +0 -196
  180. package/test/client_cli/en/email_templates_import.test.js +0 -145
  181. package/test/client_cli/en/email_templates_list.test.js +0 -130
  182. package/test/client_cli/en/idm.test.js +0 -111
  183. package/test/client_cli/en/idm_count.test.js +0 -121
  184. package/test/client_cli/en/idm_export.test.js +0 -136
  185. package/test/client_cli/en/idm_exportAll.test.js +0 -156
  186. package/test/client_cli/en/idm_exportAllRaw.test.js +0 -120
  187. package/test/client_cli/en/idm_import.test_.js +0 -103
  188. package/test/client_cli/en/idm_importAll.test_.js +0 -103
  189. package/test/client_cli/en/idm_list.test.js +0 -103
  190. package/test/client_cli/en/info.test.js +0 -125
  191. package/test/client_cli/en/journey.test.js +0 -127
  192. package/test/client_cli/en/journey_describe.test.js +0 -196
  193. package/test/client_cli/en/journey_export.test.js +0 -213
  194. package/test/client_cli/en/journey_import.test.js +0 -195
  195. package/test/client_cli/en/journey_importAll.test.js +0 -180
  196. package/test/client_cli/en/journey_list.test.js +0 -162
  197. package/test/client_cli/en/journey_prune.test.js +0 -148
  198. package/test/client_cli/en/logs.test.js +0 -79
  199. package/test/client_cli/en/logs_list.test.js +0 -83
  200. package/test/client_cli/en/logs_tail.test.js +0 -118
  201. package/test/client_cli/en/root.test.js +0 -91
  202. package/test/client_cli/en/script.test.js +0 -77
  203. package/test/client_cli/en/script_export.test.js +0 -213
  204. package/test/client_cli/en/script_import.test.js +0 -163
  205. package/test/client_cli/en/script_list.test.js +0 -148
  206. package/test/client_cli/utils/utils.js +0 -32
  207. package/test/e2e/journey/baseline/ForgottenUsername.journey.json +0 -216
  208. package/test/e2e/journey/baseline/Login.journey.json +0 -205
  209. package/test/e2e/journey/baseline/PasswordGrant.journey.json +0 -139
  210. package/test/e2e/journey/baseline/ProgressiveProfile.journey.json +0 -198
  211. package/test/e2e/journey/baseline/Registration.journey.json +0 -249
  212. package/test/e2e/journey/baseline/ResetPassword.journey.json +0 -268
  213. package/test/e2e/journey/baseline/UpdatePassword.journey.json +0 -323
  214. package/test/e2e/journey/baseline/allAlphaJourneys.journeys.json +0 -1520
  215. package/test/e2e/journey/delete/ForgottenUsername.journey.json +0 -216
  216. package/test/e2e/journey/delete/Login.journey.json +0 -205
  217. package/test/e2e/journey/delete/PasswordGrant.journey.json +0 -139
  218. package/test/e2e/journey/delete/ProgressiveProfile.journey.json +0 -198
  219. package/test/e2e/journey/delete/Registration.journey.json +0 -249
  220. package/test/e2e/journey/delete/ResetPassword.journey.json +0 -268
  221. package/test/e2e/journey/delete/UpdatePassword.journey.json +0 -323
  222. package/test/e2e/journey/delete/deleteMe.journey.json +0 -230
  223. package/test/e2e/journey/list/Disabled.journey.json +0 -43
  224. package/test/e2e/journey/list/ForgottenUsername.journey.json +0 -216
  225. package/test/e2e/journey/list/Login.journey.json +0 -205
  226. package/test/e2e/journey/list/PasswordGrant.journey.json +0 -139
  227. package/test/e2e/journey/list/ProgressiveProfile.journey.json +0 -198
  228. package/test/e2e/journey/list/Registration.journey.json +0 -249
  229. package/test/e2e/journey/list/ResetPassword.journey.json +0 -268
  230. package/test/e2e/journey/list/UpdatePassword.journey.json +0 -323
  231. package/test/e2e/setup.js +0 -98
  232. package/test/e2e/theme/baseline/Contrast.theme.json +0 -95
  233. package/test/e2e/theme/baseline/Highlander.theme.json +0 -95
  234. package/test/e2e/theme/baseline/Robroy.theme.json +0 -95
  235. package/test/e2e/theme/baseline/Starter-Theme.theme.json +0 -94
  236. package/test/e2e/theme/baseline/Zardoz.theme.json +0 -95
  237. package/test/e2e/theme/import/Contrast.theme.json +0 -95
  238. package/test/e2e/theme/import/Highlander.theme.json +0 -95
  239. package/test/e2e/theme/import/Robroy.theme.json +0 -95
  240. package/test/e2e/theme/import/Starter-Theme.theme.json +0 -94
  241. package/test/e2e/theme/import/Zardoz.default.theme.json +0 -95
  242. package/test/fs_tmp/.gitkeep +0 -2
  243. package/test/global/setup.js +0 -65
  244. package/test/lib_api/unit_tests/ApiUtils.test.js +0 -186
  245. package/test/lib_api/unit_tests/Base64URL.test.js +0 -22
  246. package/test/lib_api/unit_tests/DataProtection.test.js +0 -25
  247. package/test/lib_api/unit_tests/ExportImportUtils.test.js +0 -121
@@ -1,379 +0,0 @@
1
- import fs from 'fs';
2
- import {
3
- deleteTheme,
4
- deleteThemeByName,
5
- deleteThemes,
6
- getTheme,
7
- getThemeByName,
8
- getThemes,
9
- putTheme,
10
- putThemeByName,
11
- putThemes,
12
- } from '../api/ThemeApi.js';
13
- import {
14
- createProgressBar,
15
- createTable,
16
- failSpinner,
17
- printMessage,
18
- showSpinner,
19
- stopProgressBar,
20
- succeedSpinner,
21
- updateProgressBar,
22
- } from './utils/Console.js';
23
- import {
24
- getRealmString,
25
- getTypedFilename,
26
- saveToFile,
27
- validateImport,
28
- } from './utils/ExportImportUtils.js';
29
-
30
- /**
31
- * List all the themes
32
- * @param {boolean} long Long version, more fields
33
- */
34
- export async function listThemes(long = false) {
35
- const themeList = await getThemes();
36
- themeList.sort((a, b) => a.name.localeCompare(b.name));
37
- if (!long) {
38
- themeList.forEach((theme) => {
39
- printMessage(
40
- `${theme.isDefault ? theme.name.brightCyan : theme.name}`,
41
- 'data'
42
- );
43
- });
44
- } else {
45
- const table = createTable([
46
- 'Name'.brightCyan,
47
- 'Id'.brightCyan,
48
- 'Default'.brightCyan,
49
- ]);
50
- themeList.forEach((theme) => {
51
- table.push([
52
- `${theme.name}`,
53
- `${theme._id}`,
54
- `${theme.isDefault ? 'Yes'.brightGreen : ''}`,
55
- ]);
56
- });
57
- printMessage(table.toString(), 'data');
58
- }
59
- }
60
-
61
- /**
62
- * Export theme by name to file
63
- * @param {String} name theme name
64
- * @param {String} file optional export file name
65
- */
66
- export async function exportThemeByName(name, file) {
67
- let fileName = getTypedFilename(name, 'theme');
68
- if (file) {
69
- fileName = file;
70
- }
71
- createProgressBar(1, `Exporting ${name}`);
72
- const themeData = await getThemeByName(name);
73
- if (themeData.length === 0) {
74
- stopProgressBar(`Theme ${name} not found!`);
75
- printMessage(`Theme ${name} not found!`, 'error');
76
- } else {
77
- updateProgressBar(`Writing file ${fileName}`);
78
- saveToFile('theme', themeData, '_id', fileName);
79
- stopProgressBar(`Successfully exported theme ${name}.`);
80
- }
81
- }
82
-
83
- /**
84
- * Export theme by uuid to file
85
- * @param {String} id theme uuid
86
- * @param {String} file optional export file name
87
- */
88
- export async function exportThemeById(id, file) {
89
- let fileName = getTypedFilename(id, 'theme');
90
- if (file) {
91
- fileName = file;
92
- }
93
- createProgressBar(1, `Exporting ${id}`);
94
- const themeData = await getTheme(id);
95
- if (themeData.length === 0) {
96
- stopProgressBar(`Theme ${id} not found!`);
97
- printMessage(`Theme ${id} not found!`, 'error');
98
- } else {
99
- updateProgressBar(`Writing file ${fileName}`);
100
- saveToFile('theme', themeData, '_id', fileName);
101
- stopProgressBar(`Successfully exported theme ${id}.`);
102
- }
103
- }
104
-
105
- /**
106
- * Export all themes to file
107
- * @param {String} file optional export file name
108
- */
109
- export async function exportThemesToFile(file) {
110
- let fileName = getTypedFilename(`all${getRealmString()}Themes`, 'theme');
111
- if (file) {
112
- fileName = file;
113
- }
114
- const allThemesData = await getThemes();
115
- createProgressBar(allThemesData.length, 'Exporting themes');
116
- for (const themeData of allThemesData) {
117
- updateProgressBar(`Exporting theme ${themeData.name}`);
118
- }
119
- saveToFile('theme', allThemesData, '_id', fileName);
120
- stopProgressBar(`${allThemesData.length} themes exported to ${fileName}.`);
121
- }
122
-
123
- /**
124
- * Export all themes to separate files
125
- */
126
- export async function exportThemesToFiles() {
127
- const allThemesData = await getThemes();
128
- createProgressBar(allThemesData.length, 'Exporting themes');
129
- for (const themeData of allThemesData) {
130
- updateProgressBar(`Writing theme ${themeData.name}`);
131
- const fileName = getTypedFilename(themeData.name, 'theme');
132
- saveToFile('theme', themeData, '_id', fileName);
133
- }
134
- stopProgressBar(`${allThemesData.length} themes exported.`);
135
- }
136
-
137
- /**
138
- * Import theme by name from file
139
- * @param {String} name theme name
140
- * @param {String} file import file name
141
- */
142
- export async function importThemeByName(name, file) {
143
- fs.readFile(file, 'utf8', (err, data) => {
144
- if (err) throw err;
145
- const themeData = JSON.parse(data);
146
- if (validateImport(themeData.meta)) {
147
- createProgressBar(1, 'Importing theme...');
148
- let found = false;
149
- for (const id in themeData.theme) {
150
- if ({}.hasOwnProperty.call(themeData.theme, id)) {
151
- if (themeData.theme[id].name === name) {
152
- found = true;
153
- updateProgressBar(`Importing ${themeData.theme[id].name}`);
154
- putThemeByName(name, themeData.theme[id]).then((result) => {
155
- if (result == null) {
156
- stopProgressBar(
157
- `Error importing theme ${themeData.theme[id].name}`
158
- );
159
- printMessage(
160
- `Error importing theme ${themeData.theme[id].name}`,
161
- 'error'
162
- );
163
- } else {
164
- stopProgressBar(`Successfully imported theme ${name}.`);
165
- }
166
- });
167
- break;
168
- }
169
- }
170
- }
171
- if (!found) {
172
- stopProgressBar(`Theme ${name} not found!`);
173
- }
174
- } else {
175
- printMessage('Import validation failed...', 'error');
176
- }
177
- });
178
- }
179
-
180
- /**
181
- * Import theme by uuid from file
182
- * @param {String} id theme uuid
183
- * @param {String} file import file name
184
- */
185
- export async function importThemeById(id, file) {
186
- fs.readFile(file, 'utf8', (err, data) => {
187
- if (err) throw err;
188
- const themeData = JSON.parse(data);
189
- if (validateImport(themeData.meta)) {
190
- createProgressBar(1, 'Importing theme...');
191
- let found = false;
192
- for (const themeId in themeData.theme) {
193
- if ({}.hasOwnProperty.call(themeData.theme, themeId)) {
194
- if (themeId === id) {
195
- found = true;
196
- updateProgressBar(`Importing ${themeData.theme[themeId]._id}`);
197
- putTheme(themeId, themeData.theme[themeId]).then((result) => {
198
- if (result == null) {
199
- stopProgressBar(
200
- `Error importing theme ${themeData.theme[themeId]._id}`
201
- );
202
- printMessage(
203
- `Error importing theme ${themeData.theme[themeId]._id}`,
204
- 'error'
205
- );
206
- } else {
207
- stopProgressBar(`Successfully imported theme ${id}.`);
208
- }
209
- });
210
- break;
211
- }
212
- }
213
- }
214
- if (!found) {
215
- stopProgressBar(`Theme ${id} not found!`);
216
- }
217
- } else {
218
- printMessage('Import validation failed...', 'error');
219
- }
220
- });
221
- }
222
-
223
- /**
224
- * Import all themes from single file
225
- * @param {String} file import file name
226
- */
227
- export async function importThemesFromFile(file) {
228
- fs.readFile(file, 'utf8', (err, data) => {
229
- if (err) throw err;
230
- const fileData = JSON.parse(data);
231
- if (validateImport(fileData.meta)) {
232
- createProgressBar(
233
- Object.keys(fileData.theme).length,
234
- 'Importing themes...'
235
- );
236
- for (const id in fileData.theme) {
237
- if ({}.hasOwnProperty.call(fileData.theme, id)) {
238
- updateProgressBar(`Importing ${fileData.theme[id].name}`);
239
- }
240
- }
241
- putThemes(fileData.theme).then((result) => {
242
- if (result == null) {
243
- stopProgressBar(
244
- `Error importing ${Object.keys(fileData.theme).length} themes!`
245
- );
246
- printMessage(
247
- `Error importing ${
248
- Object.keys(fileData.theme).length
249
- } themes from ${file}`,
250
- 'error'
251
- );
252
- } else {
253
- stopProgressBar(
254
- `Successfully imported ${
255
- Object.keys(fileData.theme).length
256
- } themes.`
257
- );
258
- }
259
- });
260
- } else {
261
- printMessage('Import validation failed...', 'error');
262
- }
263
- });
264
- }
265
-
266
- /**
267
- * Import themes from separate files
268
- */
269
- export async function importThemesFromFiles() {
270
- const names = fs.readdirSync('.');
271
- const jsonFiles = names.filter((name) =>
272
- name.toLowerCase().endsWith('.theme.json')
273
- );
274
-
275
- createProgressBar(jsonFiles.length, 'Importing themes...');
276
- let fileData = null;
277
- let count = 0;
278
- let total = 0;
279
- let files = 0;
280
- for (const file of jsonFiles) {
281
- const data = fs.readFileSync(file, 'utf8');
282
- fileData = JSON.parse(data);
283
- if (validateImport(fileData.meta)) {
284
- count = Object.keys(fileData.theme).length;
285
- // eslint-disable-next-line no-await-in-loop
286
- const result = await putThemes(fileData.theme);
287
- if (result == null) {
288
- printMessage(`Error importing ${count} themes from ${file}`, 'error');
289
- } else {
290
- files += 1;
291
- total += count;
292
- updateProgressBar(`Imported ${count} theme(s) from ${file}`);
293
- }
294
- } else {
295
- printMessage(`Validation of ${file} failed!`, 'error');
296
- }
297
- }
298
- stopProgressBar(
299
- `Finished importing ${total} theme(s) from ${files} file(s).`
300
- );
301
- }
302
-
303
- /**
304
- * Import first theme from file
305
- * @param {String} file import file name
306
- */
307
- export async function importFirstThemeFromFile(file) {
308
- fs.readFile(file, 'utf8', (err, data) => {
309
- if (err) throw err;
310
- const themeData = JSON.parse(data);
311
- if (validateImport(themeData.meta)) {
312
- createProgressBar(1, 'Importing theme...');
313
- for (const id in themeData.theme) {
314
- if ({}.hasOwnProperty.call(themeData.theme, id)) {
315
- updateProgressBar(`Importing ${themeData.theme[id].name}`);
316
- putTheme(id, themeData.theme[id]).then((result) => {
317
- if (result == null) {
318
- stopProgressBar(
319
- `Error importing theme ${themeData.theme[id].name}`
320
- );
321
- printMessage(
322
- `Error importing theme ${themeData.theme[id].name}`,
323
- 'error'
324
- );
325
- } else {
326
- stopProgressBar(
327
- `Successfully imported theme ${themeData.theme[id].name}`
328
- );
329
- }
330
- });
331
- break;
332
- }
333
- }
334
- } else {
335
- printMessage('Import validation failed...', 'error');
336
- }
337
- });
338
- }
339
-
340
- /**
341
- * Delete theme by id
342
- * @param {String} id theme id
343
- */
344
- export async function deleteThemeCmd(id) {
345
- showSpinner(`Deleting ${id}...`);
346
- try {
347
- await deleteTheme(id);
348
- succeedSpinner(`Deleted ${id}.`);
349
- } catch (error) {
350
- failSpinner(`Error: ${error.message}`);
351
- }
352
- }
353
-
354
- /**
355
- * Delete theme by name
356
- * @param {String} name theme name
357
- */
358
- export async function deleteThemeByNameCmd(name) {
359
- showSpinner(`Deleting ${name}...`);
360
- try {
361
- await deleteThemeByName(name);
362
- succeedSpinner(`Deleted ${name}.`);
363
- } catch (error) {
364
- failSpinner(`Error: ${error.message}`);
365
- }
366
- }
367
-
368
- /**
369
- * Delete all themes
370
- */
371
- export async function deleteThemesCmd() {
372
- showSpinner(`Deleting all realm themes...`);
373
- try {
374
- await deleteThemes();
375
- succeedSpinner(`Deleted all realm themes.`);
376
- } catch (error) {
377
- failSpinner(`Error: ${error.message}`);
378
- }
379
- }
@@ -1,185 +0,0 @@
1
- import {
2
- createKeyValueTable,
3
- createProgressBar,
4
- createTable,
5
- failSpinner,
6
- printMessage,
7
- showSpinner,
8
- stopProgressBar,
9
- succeedSpinner,
10
- updateProgressBar,
11
- } from './utils/Console.js';
12
- import {
13
- deleteVariable,
14
- getVariable,
15
- getVariables,
16
- putVariable,
17
- setVariableDescription,
18
- } from '../api/VariablesApi.js';
19
- import wordwrap from './utils/Wordwrap.js';
20
- import { resolveUserName } from './ManagedObjectOps.js';
21
- import { decode } from '../api/utils/Base64.js';
22
-
23
- /**
24
- * List variables
25
- * @param {boolean} long Long version, all the fields
26
- */
27
- export async function listVariables(long) {
28
- let variables = [];
29
- try {
30
- variables = (await getVariables()).data.result;
31
- } catch (error) {
32
- printMessage(`${error.message}`, 'error');
33
- printMessage(error.response.data, 'error');
34
- }
35
- if (long) {
36
- const table = createTable([
37
- 'Id'.brightCyan,
38
- 'Value'.brightCyan,
39
- 'Status'.brightCyan,
40
- 'Description'.brightCyan,
41
- 'Modifier'.brightCyan,
42
- 'Modified'.brightCyan,
43
- ]);
44
- variables.sort((a, b) => a._id.localeCompare(b._id));
45
- for (const variable of variables) {
46
- table.push([
47
- variable._id,
48
- wordwrap(decode(variable.valueBase64), 40),
49
- variable.loaded ? 'loaded'.brightGreen : 'unloaded'.brightRed,
50
- wordwrap(variable.description, 40),
51
- // eslint-disable-next-line no-await-in-loop
52
- await resolveUserName('teammember', variable.lastChangedBy),
53
- new Date(variable.lastChangeDate).toLocaleString(),
54
- ]);
55
- }
56
- printMessage(table.toString());
57
- } else {
58
- variables.forEach((secret) => {
59
- printMessage(secret._id);
60
- });
61
- }
62
- }
63
-
64
- /**
65
- * Create variable
66
- * @param {String} variableId variable id
67
- * @param {String} value variable value
68
- * @param {String} description variable description
69
- */
70
- export async function createVariable(variableId, value, description) {
71
- showSpinner(`Creating variable ${variableId}...`);
72
- try {
73
- await putVariable(variableId, value, description);
74
- succeedSpinner(`Created variable ${variableId}`);
75
- } catch (error) {
76
- failSpinner(
77
- `Error: ${error.response.data.code} - ${error.response.data.message}`
78
- );
79
- }
80
- }
81
-
82
- /**
83
- * Update variable
84
- * @param {String} variableId variable id
85
- * @param {String} value variable value
86
- * @param {String} description variable description
87
- */
88
- export async function updateVariable(variableId, value, description) {
89
- showSpinner(`Updating variable ${variableId}...`);
90
- try {
91
- await putVariable(variableId, value, description);
92
- succeedSpinner(`Updated variable ${variableId}`);
93
- } catch (error) {
94
- failSpinner(
95
- `Error: ${error.response.data.code} - ${error.response.data.message}`
96
- );
97
- }
98
- }
99
-
100
- /**
101
- * Set description of variable
102
- * @param {String} variableId variable id
103
- * @param {String} description variable description
104
- */
105
- export async function setDescriptionOfVariable(variableId, description) {
106
- showSpinner(`Setting description of variable ${variableId}...`);
107
- try {
108
- await setVariableDescription(variableId, description);
109
- succeedSpinner(`Set description of variable ${variableId}`);
110
- } catch (error) {
111
- failSpinner(
112
- `Error: ${error.response.data.code} - ${error.response.data.message}`
113
- );
114
- }
115
- }
116
-
117
- /**
118
- * Delete a variable
119
- * @param {String} variableId variable id
120
- */
121
- export async function deleteVariableCmd(variableId) {
122
- showSpinner(`Deleting variable ${variableId}...`);
123
- try {
124
- await deleteVariable(variableId);
125
- succeedSpinner(`Deleted variable ${variableId}`);
126
- } catch (error) {
127
- failSpinner(
128
- `Error: ${error.response.data.code} - ${error.response.data.message}`
129
- );
130
- }
131
- }
132
-
133
- /**
134
- * Delete all variables
135
- */
136
- export async function deleteVariablesCmd() {
137
- try {
138
- const variables = (await getVariables()).data.result;
139
- createProgressBar(variables.length, `Deleting variable...`);
140
- for (const variable of variables) {
141
- try {
142
- // eslint-disable-next-line no-await-in-loop
143
- await deleteVariable(variable._id);
144
- updateProgressBar(`Deleted variable ${variable._id}`);
145
- } catch (error) {
146
- printMessage(
147
- `Error: ${error.response.data.code} - ${error.response.data.message}`,
148
- 'error'
149
- );
150
- }
151
- }
152
- stopProgressBar(`Variables deleted.`);
153
- } catch (error) {
154
- printMessage(
155
- `Error: ${error.response.data.code} - ${error.response.data.message}`,
156
- 'error'
157
- );
158
- }
159
- }
160
-
161
- /**
162
- * Describe a variable
163
- * @param {String} variableId variable id
164
- */
165
- export async function describeVariable(variableId) {
166
- const variable = (await getVariable(variableId)).data;
167
- const table = createKeyValueTable();
168
- table.push(['Name'.brightCyan, variable._id]);
169
- table.push(['Value'.brightCyan, wordwrap(decode(variable.valueBase64), 40)]);
170
- table.push([
171
- 'Status'.brightCyan,
172
- variable.loaded ? 'loaded'.brightGreen : 'unloaded'.brightRed,
173
- ]);
174
- table.push(['Description'.brightCyan, wordwrap(variable.description, 60)]);
175
- table.push([
176
- 'Modified'.brightCyan,
177
- new Date(variable.lastChangeDate).toLocaleString(),
178
- ]);
179
- table.push([
180
- 'Modifier'.brightCyan,
181
- await resolveUserName('teammember', variable.lastChangedBy),
182
- ]);
183
- table.push(['Modifier UUID'.brightCyan, variable.lastChangedBy]);
184
- printMessage(table.toString());
185
- }