@rockcarver/frodo-cli 2.0.0-51 → 2.0.0-52

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 (250) hide show
  1. package/CHANGELOG.md +10 -1
  2. package/esm/app.js +7 -2
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +3 -6
  5. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
  6. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +46 -51
  7. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  8. package/esm/cli/admin/admin-federation-export.js +1 -1
  9. package/esm/cli/admin/admin-federation-export.js.map +1 -1
  10. package/esm/cli/admin/admin-federation-import.js +1 -1
  11. package/esm/cli/admin/admin-federation-import.js.map +1 -1
  12. package/esm/cli/admin/admin-federation-list.js +1 -1
  13. package/esm/cli/admin/admin-federation-list.js.map +1 -1
  14. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +4 -6
  15. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  16. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +4 -6
  17. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  18. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +4 -9
  19. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  20. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +4 -9
  21. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  22. package/esm/cli/admin/admin-list-static-user-mappings.js +3 -9
  23. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  24. package/esm/cli/admin/admin-remove-static-user-mapping.js +3 -6
  25. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  26. package/esm/cli/admin/admin-repair-org-model.js +4 -6
  27. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  28. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +4 -6
  29. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  30. package/esm/cli/admin/admin-show-generic-extension-attributes.js +4 -6
  31. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  32. package/esm/cli/agent/agent-delete.js +8 -21
  33. package/esm/cli/agent/agent-delete.js.map +1 -1
  34. package/esm/cli/agent/agent-export.js +6 -3
  35. package/esm/cli/agent/agent-export.js.map +1 -1
  36. package/esm/cli/agent/agent-gateway-delete.js +7 -20
  37. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  38. package/esm/cli/agent/agent-gateway-export.js +6 -3
  39. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  40. package/esm/cli/agent/agent-gateway-import.js +8 -4
  41. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  42. package/esm/cli/agent/agent-gateway-list.js +2 -1
  43. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  44. package/esm/cli/agent/agent-import.js +8 -4
  45. package/esm/cli/agent/agent-import.js.map +1 -1
  46. package/esm/cli/agent/agent-java-delete.js +7 -20
  47. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  48. package/esm/cli/agent/agent-java-export.js +6 -3
  49. package/esm/cli/agent/agent-java-export.js.map +1 -1
  50. package/esm/cli/agent/agent-java-import.js +8 -4
  51. package/esm/cli/agent/agent-java-import.js.map +1 -1
  52. package/esm/cli/agent/agent-java-list.js +2 -1
  53. package/esm/cli/agent/agent-java-list.js.map +1 -1
  54. package/esm/cli/agent/agent-list.js +2 -1
  55. package/esm/cli/agent/agent-list.js.map +1 -1
  56. package/esm/cli/agent/agent-web-delete.js +7 -20
  57. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  58. package/esm/cli/agent/agent-web-export.js +6 -3
  59. package/esm/cli/agent/agent-web-export.js.map +1 -1
  60. package/esm/cli/agent/agent-web-import.js +8 -4
  61. package/esm/cli/agent/agent-web-import.js.map +1 -1
  62. package/esm/cli/agent/agent-web-list.js +2 -1
  63. package/esm/cli/agent/agent-web-list.js.map +1 -1
  64. package/esm/cli/app/app-delete.js +4 -4
  65. package/esm/cli/app/app-delete.js.map +1 -1
  66. package/esm/cli/app/app-export.js +6 -6
  67. package/esm/cli/app/app-export.js.map +1 -1
  68. package/esm/cli/app/app-import.js +8 -8
  69. package/esm/cli/app/app-import.js.map +1 -1
  70. package/esm/cli/app/app-list.js +2 -1
  71. package/esm/cli/app/app-list.js.map +1 -1
  72. package/esm/cli/conn/conn-delete.js +7 -1
  73. package/esm/cli/conn/conn-delete.js.map +1 -1
  74. package/esm/cli/conn/conn-save.js +9 -9
  75. package/esm/cli/conn/conn-save.js.map +1 -1
  76. package/esm/cli/email/email-template-export.js +6 -3
  77. package/esm/cli/email/email-template-export.js.map +1 -1
  78. package/esm/cli/email/email-template-import.js +8 -4
  79. package/esm/cli/email/email-template-import.js.map +1 -1
  80. package/esm/cli/email/email-template-list.js +2 -1
  81. package/esm/cli/email/email-template-list.js.map +1 -1
  82. package/esm/cli/esv/esv-secret-create.js +1 -1
  83. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  84. package/esm/cli/esv/esv-secret-delete.js +1 -1
  85. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  86. package/esm/cli/esv/esv-secret-describe.js +1 -1
  87. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  88. package/esm/cli/esv/esv-secret-export.js +1 -1
  89. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  90. package/esm/cli/esv/esv-secret-list.js +1 -1
  91. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  92. package/esm/cli/esv/esv-secret-set.js +1 -1
  93. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  94. package/esm/cli/esv/esv-secret-version-activate.js +1 -1
  95. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  96. package/esm/cli/esv/esv-secret-version-create.js +1 -1
  97. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  98. package/esm/cli/esv/esv-secret-version-deactivate.js +1 -1
  99. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  100. package/esm/cli/esv/esv-secret-version-delete.js +1 -1
  101. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  102. package/esm/cli/esv/esv-secret-version-list.js +1 -1
  103. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  104. package/esm/cli/esv/esv-variable-create.js +1 -1
  105. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  106. package/esm/cli/esv/esv-variable-delete.js +1 -1
  107. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  108. package/esm/cli/esv/esv-variable-describe.js +1 -1
  109. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  110. package/esm/cli/esv/esv-variable-export.js +1 -1
  111. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  112. package/esm/cli/esv/esv-variable-list.js +1 -1
  113. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  114. package/esm/cli/esv/esv-variable-set.js +1 -1
  115. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  116. package/esm/cli/idm/idm-count.js +2 -1
  117. package/esm/cli/idm/idm-count.js.map +1 -1
  118. package/esm/cli/idm/idm-export.js +6 -3
  119. package/esm/cli/idm/idm-export.js.map +1 -1
  120. package/esm/cli/idm/idm-import.js +8 -4
  121. package/esm/cli/idm/idm-import.js.map +1 -1
  122. package/esm/cli/idm/idm-list.js +2 -1
  123. package/esm/cli/idm/idm-list.js.map +1 -1
  124. package/esm/cli/idp/idp-export.js +6 -3
  125. package/esm/cli/idp/idp-export.js.map +1 -1
  126. package/esm/cli/idp/idp-import.js +8 -4
  127. package/esm/cli/idp/idp-import.js.map +1 -1
  128. package/esm/cli/idp/idp-list.js +2 -1
  129. package/esm/cli/idp/idp-list.js.map +1 -1
  130. package/esm/cli/journey/journey-delete.js +6 -7
  131. package/esm/cli/journey/journey-delete.js.map +1 -1
  132. package/esm/cli/journey/journey-describe.js +15 -9
  133. package/esm/cli/journey/journey-describe.js.map +1 -1
  134. package/esm/cli/journey/journey-export.js +6 -3
  135. package/esm/cli/journey/journey-export.js.map +1 -1
  136. package/esm/cli/journey/journey-import.js +8 -4
  137. package/esm/cli/journey/journey-import.js.map +1 -1
  138. package/esm/cli/journey/journey-list.js +2 -1
  139. package/esm/cli/journey/journey-list.js.map +1 -1
  140. package/esm/cli/journey/journey-prune.js +3 -2
  141. package/esm/cli/journey/journey-prune.js.map +1 -1
  142. package/esm/cli/log/log-fetch.js +6 -2
  143. package/esm/cli/log/log-fetch.js.map +1 -1
  144. package/esm/cli/log/log-list.js +12 -3
  145. package/esm/cli/log/log-list.js.map +1 -1
  146. package/esm/cli/log/log-tail.js +6 -2
  147. package/esm/cli/log/log-tail.js.map +1 -1
  148. package/esm/cli/oauth/oauth-client-export.js +6 -6
  149. package/esm/cli/oauth/oauth-client-export.js.map +1 -1
  150. package/esm/cli/oauth/oauth-client-import.js +8 -8
  151. package/esm/cli/oauth/oauth-client-import.js.map +1 -1
  152. package/esm/cli/oauth/oauth-client-list.js +2 -1
  153. package/esm/cli/oauth/oauth-client-list.js.map +1 -1
  154. package/esm/cli/saml/saml-describe.js +2 -1
  155. package/esm/cli/saml/saml-describe.js.map +1 -1
  156. package/esm/cli/saml/saml-export.js +6 -3
  157. package/esm/cli/saml/saml-export.js.map +1 -1
  158. package/esm/cli/saml/saml-import.js +8 -4
  159. package/esm/cli/saml/saml-import.js.map +1 -1
  160. package/esm/cli/saml/saml-list.js +2 -1
  161. package/esm/cli/saml/saml-list.js.map +1 -1
  162. package/esm/cli/saml/saml-metadata-export.js +10 -2
  163. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  164. package/esm/cli/script/script-delete.js +10 -4
  165. package/esm/cli/script/script-delete.js.map +1 -1
  166. package/esm/cli/script/script-export.js +9 -13
  167. package/esm/cli/script/script-export.js.map +1 -1
  168. package/esm/cli/script/script-import.js +19 -14
  169. package/esm/cli/script/script-import.js.map +1 -1
  170. package/esm/cli/service/service-delete.js +4 -2
  171. package/esm/cli/service/service-delete.js.map +1 -1
  172. package/esm/cli/service/service-export.js +6 -3
  173. package/esm/cli/service/service-export.js.map +1 -1
  174. package/esm/cli/service/service-import.js +8 -4
  175. package/esm/cli/service/service-import.js.map +1 -1
  176. package/esm/cli/service/service-list.js +2 -1
  177. package/esm/cli/service/service-list.js.map +1 -1
  178. package/esm/cli/shell/shell.js +2 -4
  179. package/esm/cli/shell/shell.js.map +1 -1
  180. package/esm/cli/theme/theme-delete.js +7 -4
  181. package/esm/cli/theme/theme-delete.js.map +1 -1
  182. package/esm/cli/theme/theme-export.js +8 -4
  183. package/esm/cli/theme/theme-export.js.map +1 -1
  184. package/esm/cli/theme/theme-import.js +10 -5
  185. package/esm/cli/theme/theme-import.js.map +1 -1
  186. package/esm/cli/theme/theme-list.js +2 -1
  187. package/esm/cli/theme/theme-list.js.map +1 -1
  188. package/esm/ops/AdminOps.js +790 -3
  189. package/esm/ops/AdminOps.js.map +1 -1
  190. package/esm/ops/AgentOps.js +638 -305
  191. package/esm/ops/AgentOps.js.map +1 -1
  192. package/esm/ops/ApplicationOps.js +91 -79
  193. package/esm/ops/ApplicationOps.js.map +1 -1
  194. package/esm/ops/AuthenticateOps.js +4 -9
  195. package/esm/ops/AuthenticateOps.js.map +1 -1
  196. package/esm/ops/AuthenticationSettingsOps.js +22 -23
  197. package/esm/ops/AuthenticationSettingsOps.js.map +1 -1
  198. package/esm/ops/CirclesOfTrustOps.js +52 -55
  199. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  200. package/esm/ops/ConfigOps.js +100 -84
  201. package/esm/ops/ConfigOps.js.map +1 -1
  202. package/esm/ops/ConnectionProfileOps.js +9 -7
  203. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  204. package/esm/ops/EmailTemplateOps.js +64 -47
  205. package/esm/ops/EmailTemplateOps.js.map +1 -1
  206. package/esm/ops/IdmOps.js +149 -117
  207. package/esm/ops/IdmOps.js.map +1 -1
  208. package/esm/ops/IdpOps.js +76 -46
  209. package/esm/ops/IdpOps.js.map +1 -1
  210. package/esm/ops/JourneyOps.js +333 -238
  211. package/esm/ops/JourneyOps.js.map +1 -1
  212. package/esm/ops/LogOps.js +15 -23
  213. package/esm/ops/LogOps.js.map +1 -1
  214. package/esm/ops/OAuth2ClientOps.js +43 -36
  215. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  216. package/esm/ops/PolicyOps.js +104 -108
  217. package/esm/ops/PolicyOps.js.map +1 -1
  218. package/esm/ops/PolicySetOps.js +72 -78
  219. package/esm/ops/PolicySetOps.js.map +1 -1
  220. package/esm/ops/ResourceTypeOps.js +84 -99
  221. package/esm/ops/ResourceTypeOps.js.map +1 -1
  222. package/esm/ops/Saml2Ops.js +132 -88
  223. package/esm/ops/Saml2Ops.js.map +1 -1
  224. package/esm/ops/ScriptOps.js +90 -80
  225. package/esm/ops/ScriptOps.js.map +1 -1
  226. package/esm/ops/ServiceOps.js +125 -87
  227. package/esm/ops/ServiceOps.js.map +1 -1
  228. package/esm/ops/ThemeOps.js +170 -139
  229. package/esm/ops/ThemeOps.js.map +1 -1
  230. package/esm/ops/{AdminFederationOps.js → cloud/AdminFederationOps.js} +10 -16
  231. package/esm/ops/cloud/AdminFederationOps.js.map +1 -0
  232. package/esm/ops/{SecretsOps.js → cloud/SecretsOps.js} +123 -129
  233. package/esm/ops/cloud/SecretsOps.js.map +1 -0
  234. package/esm/ops/{VariablesOps.js → cloud/VariablesOps.js} +48 -52
  235. package/esm/ops/cloud/VariablesOps.js.map +1 -0
  236. package/esm/ops/templates/OAuth2ClientTemplate.json +270 -0
  237. package/esm/ops/templates/OAuth2TrustedJwtIssuerTemplate.json +38 -0
  238. package/esm/ops/templates/OrgModelUserAttributesTemplate.json +149 -0
  239. package/esm/ops/templates/autoaccess/IPAddresses.json +202 -0
  240. package/esm/ops/templates/autoaccess/UserAgents.json +35 -0
  241. package/esm/ops/templates/autoaccess/Usernames.json +203 -0
  242. package/esm/ops/templates/cloud/GenericExtensionAttributesTemplate.json +392 -0
  243. package/esm/ops/templates/cloud/managed.json +4119 -0
  244. package/esm/ops/utils/OpsUtils.js.map +1 -1
  245. package/esm/utils/Console.js +31 -0
  246. package/esm/utils/Console.js.map +1 -1
  247. package/package.json +10 -6
  248. package/esm/ops/AdminFederationOps.js.map +0 -1
  249. package/esm/ops/SecretsOps.js.map +0 -1
  250. package/esm/ops/VariablesOps.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"idm-import.js","names":["state","Option","getTokens","importAllConfigEntities","importAllRawConfigEntities","importConfigEntityByIdFromFile","importConfigEntityFromFile","printMessage","verboseMessage","FrodoCommand","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","name","file","allSeparate","getDirectory","help","process","exitCode","entitiesFile","envFile","parse"],"sources":["../../../src/cli/idm/idm-import.ts"],"sourcesContent":["import { state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport {\n importAllConfigEntities,\n importAllRawConfigEntities,\n importConfigEntityByIdFromFile,\n importConfigEntityFromFile,\n} from '../../ops/IdmOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo idm import');\n\ninterface IdmImportOptions {\n type?: string;\n insecure?: boolean;\n verbose?: boolean;\n debug?: boolean;\n curlirize?: boolean;\n name?: string;\n file?: string;\n entitiesFile?: string;\n envFile?: string;\n all?: string;\n allSeparate?: string;\n directory?: string;\n}\n\nprogram\n .description('Import IDM configuration objects.')\n .addOption(\n new Option(\n '-N, --name <name>',\n 'Config entity name. E.g. \"managed\", \"sync\", \"provisioner-<connector-name>\", etc.'\n )\n )\n .addOption(new Option('-f, --file [file]', 'Import file. Ignored with -A.'))\n .addOption(\n new Option(\n '-E, --entities-file [entities-file]',\n 'Name of the entity file. Ignored with -A.'\n )\n )\n .addOption(\n new Option(\n '-e, --env-file [envfile]',\n 'Name of the env file. Ignored with -A.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all IDM configuration objects from separate files in directory -D. Ignored with -N, and -a.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (\n host: string,\n realm: string,\n user: string,\n password: string,\n options: IdmImportOptions,\n command\n ) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // import by id/name\n if (options.name && (await getTokens())) {\n verboseMessage(`Importing object \"${options.name}\"...`);\n await importConfigEntityByIdFromFile(options.name, options.file);\n }\n // import from file\n else if (options.file && (await getTokens())) {\n verboseMessage(`Importing object from file...`);\n await importConfigEntityFromFile(options.file);\n }\n // require --directory -D for all-separate functions\n else if (options.allSeparate && !state.getDirectory()) {\n printMessage(\n '-D or --directory required when using -A or --all-separate',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n // --all-separate -A\n else if (\n options.allSeparate &&\n options.entitiesFile &&\n options.envFile &&\n (await getTokens())\n ) {\n verboseMessage(\n `Importing IDM configuration objects specified in ${\n options.entitiesFile\n } into separate files in ${state.getDirectory()} using ${\n options.envFile\n } for variable replacement...`\n );\n await importAllConfigEntities(options.entitiesFile, options.envFile);\n }\n // --all-separate -A without variable replacement\n else if (options.allSeparate && (await getTokens())) {\n verboseMessage(\n `Importing all IDM configuration objects from separate files in ${state.getDirectory()}...`\n );\n await importAllRawConfigEntities();\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
1
+ {"version":3,"file":"idm-import.js","names":["state","Option","getTokens","importAllConfigEntities","importAllRawConfigEntities","importConfigEntityByIdFromFile","importConfigEntityFromFile","printMessage","verboseMessage","FrodoCommand","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","name","outcome","file","process","exitCode","allSeparate","getDirectory","help","entitiesFile","envFile","parse"],"sources":["../../../src/cli/idm/idm-import.ts"],"sourcesContent":["import { state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport {\n importAllConfigEntities,\n importAllRawConfigEntities,\n importConfigEntityByIdFromFile,\n importConfigEntityFromFile,\n} from '../../ops/IdmOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo idm import');\n\ninterface IdmImportOptions {\n type?: string;\n insecure?: boolean;\n verbose?: boolean;\n debug?: boolean;\n curlirize?: boolean;\n name?: string;\n file?: string;\n entitiesFile?: string;\n envFile?: string;\n all?: string;\n allSeparate?: string;\n directory?: string;\n}\n\nprogram\n .description('Import IDM configuration objects.')\n .addOption(\n new Option(\n '-N, --name <name>',\n 'Config entity name. E.g. \"managed\", \"sync\", \"provisioner-<connector-name>\", etc.'\n )\n )\n .addOption(new Option('-f, --file [file]', 'Import file. Ignored with -A.'))\n .addOption(\n new Option(\n '-E, --entities-file [entities-file]',\n 'Name of the entity file. Ignored with -A.'\n )\n )\n .addOption(\n new Option(\n '-e, --env-file [envfile]',\n 'Name of the env file. Ignored with -A.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all IDM configuration objects from separate files in directory -D. Ignored with -N, and -a.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (\n host: string,\n realm: string,\n user: string,\n password: string,\n options: IdmImportOptions,\n command\n ) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // import by id/name\n if (options.name && (await getTokens())) {\n verboseMessage(`Importing object \"${options.name}\"...`);\n const outcome = await importConfigEntityByIdFromFile(\n options.name,\n options.file\n );\n if (!outcome) process.exitCode = 1;\n }\n // import from file\n else if (options.file && (await getTokens())) {\n verboseMessage(`Importing object from file...`);\n const outcome = await importConfigEntityFromFile(options.file);\n if (!outcome) process.exitCode = 1;\n }\n // require --directory -D for all-separate functions\n else if (options.allSeparate && !state.getDirectory()) {\n printMessage(\n '-D or --directory required when using -A or --all-separate',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n // --all-separate -A\n else if (\n options.allSeparate &&\n options.entitiesFile &&\n options.envFile &&\n (await getTokens())\n ) {\n verboseMessage(\n `Importing IDM configuration objects specified in ${\n options.entitiesFile\n } into separate files in ${state.getDirectory()} using ${\n options.envFile\n } for variable replacement...`\n );\n const outcome = await importAllConfigEntities(\n options.entitiesFile,\n options.envFile\n );\n if (!outcome) process.exitCode = 1;\n }\n // --all-separate -A without variable replacement\n else if (options.allSeparate && (await getTokens())) {\n verboseMessage(\n `Importing all IDM configuration objects from separate files in ${state.getDirectory()}...`\n );\n const outcome = await importAllRawConfigEntities();\n if (!outcome) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
@@ -13,7 +13,8 @@ async (host, realm, user, password, options, command) => {
13
13
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
14
14
  if (await getTokens()) {
15
15
  verboseMessage('Listing all IDM configuration objects...');
16
- await listAllConfigEntities();
16
+ const outcome = await listAllConfigEntities();
17
+ if (!outcome) process.exitCode = 1;
17
18
  await warnAboutOfflineConnectorServers();
18
19
  } else {
19
20
  process.exitCode = 1;
@@ -1 +1 @@
1
- {"version":3,"file":"idm-list.js","names":["getTokens","listAllConfigEntities","warnAboutOfflineConnectorServers","verboseMessage","FrodoCommand","program","description","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","process","exitCode","parse"],"sources":["../../../src/cli/idm/idm-list.ts"],"sourcesContent":["import { getTokens } from '../../ops/AuthenticateOps';\nimport {\n listAllConfigEntities,\n warnAboutOfflineConnectorServers,\n} from '../../ops/IdmOps';\nimport { verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo idm list');\n\nprogram\n .description('List IDM configuration objects.')\n // .addOption(\n // new Option('-l, --long', 'Long with all fields.').default(false, 'false')\n // )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n verboseMessage('Listing all IDM configuration objects...');\n await listAllConfigEntities();\n await warnAboutOfflineConnectorServers();\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,2BAA2B;AACrD,SACEC,qBAAqB,EACrBC,gCAAgC,QAC3B,kBAAkB;AACzB,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,OAAO,GAAG,IAAID,YAAY,CAAC,gBAAgB,CAAC;AAElDC,OAAO,CACJC,WAAW,CAAC,iCAAiC;AAC9C;AACA;AACA;AAAA,CACCC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMb,SAAS,CAAC,CAAC,EAAE;IACrBG,cAAc,CAAC,0CAA0C,CAAC;IAC1D,MAAMF,qBAAqB,CAAC,CAAC;IAC7B,MAAMC,gCAAgC,CAAC,CAAC;EAC1C,CAAC,MAAM;IACLa,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;AAEHX,OAAO,CAACY,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"idm-list.js","names":["getTokens","listAllConfigEntities","warnAboutOfflineConnectorServers","verboseMessage","FrodoCommand","program","description","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","outcome","process","exitCode","parse"],"sources":["../../../src/cli/idm/idm-list.ts"],"sourcesContent":["import { getTokens } from '../../ops/AuthenticateOps';\nimport {\n listAllConfigEntities,\n warnAboutOfflineConnectorServers,\n} from '../../ops/IdmOps';\nimport { verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo idm list');\n\nprogram\n .description('List IDM configuration objects.')\n // .addOption(\n // new Option('-l, --long', 'Long with all fields.').default(false, 'false')\n // )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n verboseMessage('Listing all IDM configuration objects...');\n const outcome = await listAllConfigEntities();\n if (!outcome) process.exitCode = 1;\n await warnAboutOfflineConnectorServers();\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,2BAA2B;AACrD,SACEC,qBAAqB,EACrBC,gCAAgC,QAC3B,kBAAkB;AACzB,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,OAAO,GAAG,IAAID,YAAY,CAAC,gBAAgB,CAAC;AAElDC,OAAO,CACJC,WAAW,CAAC,iCAAiC;AAC9C;AACA;AACA;AAAA,CACCC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMb,SAAS,CAAC,CAAC,EAAE;IACrBG,cAAc,CAAC,0CAA0C,CAAC;IAC1D,MAAMY,OAAO,GAAG,MAAMd,qBAAqB,CAAC,CAAC;IAC7C,IAAI,CAACc,OAAO,EAAEC,OAAO,CAACC,QAAQ,GAAG,CAAC;IAClC,MAAMf,gCAAgC,CAAC,CAAC;EAC1C,CAAC,MAAM;IACLc,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;AAEHZ,OAAO,CAACa,KAAK,CAAC,CAAC"}
@@ -13,17 +13,20 @@ async (host, realm, user, password, options, command) => {
13
13
  // export by id/name
14
14
  if (options.idpId) {
15
15
  verboseMessage(`Exporting provider "${options.idpId}" from realm "${state.getRealm()}"...`);
16
- await exportSocialIdentityProviderToFile(options.idpId, options.file, options.metadata);
16
+ const outcome = await exportSocialIdentityProviderToFile(options.idpId, options.file, options.metadata);
17
+ if (!outcome) process.exitCode = 1;
17
18
  }
18
19
  // --all -a
19
20
  else if (options.all) {
20
21
  verboseMessage('Exporting all providers to a single file...');
21
- await exportSocialIdentityProvidersToFile(options.file, options.metadata);
22
+ const outcome = await exportSocialIdentityProvidersToFile(options.file, options.metadata);
23
+ if (!outcome) process.exitCode = 1;
22
24
  }
23
25
  // --all-separate -A
24
26
  else if (options.allSeparate) {
25
27
  verboseMessage('Exporting all providers to separate files...');
26
- await exportSocialIdentityProvidersToFiles(options.metadata);
28
+ const outcome = await exportSocialIdentityProvidersToFiles(options.metadata);
29
+ if (!outcome) process.exitCode = 1;
27
30
  }
28
31
  // unrecognized combination of options or no options
29
32
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"idp-export.js","names":["state","Option","getTokens","exportSocialIdentityProvidersToFile","exportSocialIdentityProvidersToFiles","exportSocialIdentityProviderToFile","printMessage","verboseMessage","FrodoCommand","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","idpId","getRealm","file","metadata","all","allSeparate","help","process","exitCode","parse"],"sources":["../../../src/cli/idp/idp-export.ts"],"sourcesContent":["import { state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport {\n exportSocialIdentityProvidersToFile,\n exportSocialIdentityProvidersToFiles,\n exportSocialIdentityProviderToFile,\n} from '../../ops/IdpOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo idp export');\n\nprogram\n .description('Export (social) identity providers.')\n .addOption(\n new Option(\n '-i, --idp-id <idp-id>',\n 'Id/name of a provider. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-f, --file [file]',\n 'Name of the file to write the exported provider(s) to. Ignored with -A.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Export all the providers in a realm to a single file. Ignored with -t and -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Export all the providers in a realm as separate files <provider name>.idp.json. Ignored with -t, -i, and -a.'\n )\n )\n .addOption(\n new Option(\n '-N, --no-metadata',\n 'Does not include metadata in the export file.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n // export by id/name\n if (options.idpId) {\n verboseMessage(\n `Exporting provider \"${\n options.idpId\n }\" from realm \"${state.getRealm()}\"...`\n );\n await exportSocialIdentityProviderToFile(\n options.idpId,\n options.file,\n options.metadata\n );\n }\n // --all -a\n else if (options.all) {\n verboseMessage('Exporting all providers to a single file...');\n await exportSocialIdentityProvidersToFile(\n options.file,\n options.metadata\n );\n }\n // --all-separate -A\n else if (options.allSeparate) {\n verboseMessage('Exporting all providers to separate files...');\n await exportSocialIdentityProvidersToFiles(options.metadata);\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SACEC,mCAAmC,EACnCC,oCAAoC,EACpCC,kCAAkC,QAC7B,kBAAkB;AACzB,SAASC,YAAY,EAAEC,cAAc,QAAQ,qBAAqB;AAClE,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,OAAO,GAAG,IAAID,YAAY,CAAC,kBAAkB,CAAC;AAEpDC,OAAO,CACJC,WAAW,CAAC,qCAAqC,CAAC,CAClDC,SAAS,CACR,IAAIV,MAAM,CACR,uBAAuB,EACvB,6DACF,CACF,CAAC,CACAU,SAAS,CACR,IAAIV,MAAM,CACR,mBAAmB,EACnB,yEACF,CACF,CAAC,CACAU,SAAS,CACR,IAAIV,MAAM,CACR,WAAW,EACX,+EACF,CACF,CAAC,CACAU,SAAS,CACR,IAAIV,MAAM,CACR,oBAAoB,EACpB,8GACF,CACF,CAAC,CACAU,SAAS,CACR,IAAIV,MAAM,CACR,mBAAmB,EACnB,+CACF,CACF,CAAC,CACAW,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMhB,SAAS,CAAC,CAAC,EAAE;IACrB;IACA,IAAIe,OAAO,CAACG,KAAK,EAAE;MACjBb,cAAc,CACX,uBACCU,OAAO,CAACG,KACT,iBAAgBpB,KAAK,CAACqB,QAAQ,CAAC,CAAE,MACpC,CAAC;MACD,MAAMhB,kCAAkC,CACtCY,OAAO,CAACG,KAAK,EACbH,OAAO,CAACK,IAAI,EACZL,OAAO,CAACM,QACV,CAAC;IACH;IACA;IAAA,KACK,IAAIN,OAAO,CAACO,GAAG,EAAE;MACpBjB,cAAc,CAAC,6CAA6C,CAAC;MAC7D,MAAMJ,mCAAmC,CACvCc,OAAO,CAACK,IAAI,EACZL,OAAO,CAACM,QACV,CAAC;IACH;IACA;IAAA,KACK,IAAIN,OAAO,CAACQ,WAAW,EAAE;MAC5BlB,cAAc,CAAC,8CAA8C,CAAC;MAC9D,MAAMH,oCAAoC,CAACa,OAAO,CAACM,QAAQ,CAAC;IAC9D;IACA;IAAA,KACK;MACHjB,YAAY,CACV,sDAAsD,EACtD,OACF,CAAC;MACDG,OAAO,CAACiB,IAAI,CAAC,CAAC;MACdC,OAAO,CAACC,QAAQ,GAAG,CAAC;IACtB;EACF;AACF;AACA;AACF,CAAC;AAEHnB,OAAO,CAACoB,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"idp-export.js","names":["state","Option","getTokens","exportSocialIdentityProvidersToFile","exportSocialIdentityProvidersToFiles","exportSocialIdentityProviderToFile","printMessage","verboseMessage","FrodoCommand","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","idpId","getRealm","outcome","file","metadata","process","exitCode","all","allSeparate","help","parse"],"sources":["../../../src/cli/idp/idp-export.ts"],"sourcesContent":["import { state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport {\n exportSocialIdentityProvidersToFile,\n exportSocialIdentityProvidersToFiles,\n exportSocialIdentityProviderToFile,\n} from '../../ops/IdpOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo idp export');\n\nprogram\n .description('Export (social) identity providers.')\n .addOption(\n new Option(\n '-i, --idp-id <idp-id>',\n 'Id/name of a provider. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-f, --file [file]',\n 'Name of the file to write the exported provider(s) to. Ignored with -A.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Export all the providers in a realm to a single file. Ignored with -t and -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Export all the providers in a realm as separate files <provider name>.idp.json. Ignored with -t, -i, and -a.'\n )\n )\n .addOption(\n new Option(\n '-N, --no-metadata',\n 'Does not include metadata in the export file.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n // export by id/name\n if (options.idpId) {\n verboseMessage(\n `Exporting provider \"${\n options.idpId\n }\" from realm \"${state.getRealm()}\"...`\n );\n const outcome = await exportSocialIdentityProviderToFile(\n options.idpId,\n options.file,\n options.metadata\n );\n if (!outcome) process.exitCode = 1;\n }\n // --all -a\n else if (options.all) {\n verboseMessage('Exporting all providers to a single file...');\n const outcome = await exportSocialIdentityProvidersToFile(\n options.file,\n options.metadata\n );\n if (!outcome) process.exitCode = 1;\n }\n // --all-separate -A\n else if (options.allSeparate) {\n verboseMessage('Exporting all providers to separate files...');\n const outcome = await exportSocialIdentityProvidersToFiles(\n options.metadata\n );\n if (!outcome) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SACEC,mCAAmC,EACnCC,oCAAoC,EACpCC,kCAAkC,QAC7B,kBAAkB;AACzB,SAASC,YAAY,EAAEC,cAAc,QAAQ,qBAAqB;AAClE,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,OAAO,GAAG,IAAID,YAAY,CAAC,kBAAkB,CAAC;AAEpDC,OAAO,CACJC,WAAW,CAAC,qCAAqC,CAAC,CAClDC,SAAS,CACR,IAAIV,MAAM,CACR,uBAAuB,EACvB,6DACF,CACF,CAAC,CACAU,SAAS,CACR,IAAIV,MAAM,CACR,mBAAmB,EACnB,yEACF,CACF,CAAC,CACAU,SAAS,CACR,IAAIV,MAAM,CACR,WAAW,EACX,+EACF,CACF,CAAC,CACAU,SAAS,CACR,IAAIV,MAAM,CACR,oBAAoB,EACpB,8GACF,CACF,CAAC,CACAU,SAAS,CACR,IAAIV,MAAM,CACR,mBAAmB,EACnB,+CACF,CACF,CAAC,CACAW,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMhB,SAAS,CAAC,CAAC,EAAE;IACrB;IACA,IAAIe,OAAO,CAACG,KAAK,EAAE;MACjBb,cAAc,CACX,uBACCU,OAAO,CAACG,KACT,iBAAgBpB,KAAK,CAACqB,QAAQ,CAAC,CAAE,MACpC,CAAC;MACD,MAAMC,OAAO,GAAG,MAAMjB,kCAAkC,CACtDY,OAAO,CAACG,KAAK,EACbH,OAAO,CAACM,IAAI,EACZN,OAAO,CAACO,QACV,CAAC;MACD,IAAI,CAACF,OAAO,EAAEG,OAAO,CAACC,QAAQ,GAAG,CAAC;IACpC;IACA;IAAA,KACK,IAAIT,OAAO,CAACU,GAAG,EAAE;MACpBpB,cAAc,CAAC,6CAA6C,CAAC;MAC7D,MAAMe,OAAO,GAAG,MAAMnB,mCAAmC,CACvDc,OAAO,CAACM,IAAI,EACZN,OAAO,CAACO,QACV,CAAC;MACD,IAAI,CAACF,OAAO,EAAEG,OAAO,CAACC,QAAQ,GAAG,CAAC;IACpC;IACA;IAAA,KACK,IAAIT,OAAO,CAACW,WAAW,EAAE;MAC5BrB,cAAc,CAAC,8CAA8C,CAAC;MAC9D,MAAMe,OAAO,GAAG,MAAMlB,oCAAoC,CACxDa,OAAO,CAACO,QACV,CAAC;MACD,IAAI,CAACF,OAAO,EAAEG,OAAO,CAACC,QAAQ,GAAG,CAAC;IACpC;IACA;IAAA,KACK;MACHpB,YAAY,CACV,sDAAsD,EACtD,OACF,CAAC;MACDG,OAAO,CAACoB,IAAI,CAAC,CAAC;MACdJ,OAAO,CAACC,QAAQ,GAAG,CAAC;IACtB;EACF;AACF;AACA;AACF,CAAC;AAEHjB,OAAO,CAACqB,KAAK,CAAC,CAAC"}
@@ -12,30 +12,34 @@ async (host, realm, user, password, options, command) => {
12
12
  // import by id
13
13
  if (options.file && options.idpId && (await getTokens())) {
14
14
  verboseMessage(`Importing provider "${options.idpId}" into realm "${state.getRealm()}"...`);
15
- await importSocialIdentityProviderFromFile(options.idpId, options.file, {
15
+ const outcome = await importSocialIdentityProviderFromFile(options.idpId, options.file, {
16
16
  deps: options.deps
17
17
  });
18
+ if (!outcome) process.exitCode = 1;
18
19
  }
19
20
  // --all -a
20
21
  else if (options.all && options.file && (await getTokens())) {
21
22
  verboseMessage(`Importing all providers from a single file (${options.file})...`);
22
- await importSocialIdentityProvidersFromFile(options.file, {
23
+ const outcome = await importSocialIdentityProvidersFromFile(options.file, {
23
24
  deps: options.deps
24
25
  });
26
+ if (!outcome) process.exitCode = 1;
25
27
  }
26
28
  // --all-separate -A
27
29
  else if (options.allSeparate && !options.file && (await getTokens())) {
28
30
  verboseMessage('Importing all providers from separate files in current directory...');
29
- await importSocialIdentityProvidersFromFiles({
31
+ const outcome = await importSocialIdentityProvidersFromFiles({
30
32
  deps: options.deps
31
33
  });
34
+ if (!outcome) process.exitCode = 1;
32
35
  }
33
36
  // import first provider from file
34
37
  else if (options.file && (await getTokens())) {
35
38
  verboseMessage(`Importing first provider from file "${options.file}" into realm "${state.getRealm()}"...`);
36
- await importFirstSocialIdentityProviderFromFile(options.file, {
39
+ const outcome = await importFirstSocialIdentityProviderFromFile(options.file, {
37
40
  deps: options.deps
38
41
  });
42
+ if (!outcome) process.exitCode = 1;
39
43
  }
40
44
  // unrecognized combination of options or no options
41
45
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"idp-import.js","names":["state","Option","getTokens","importFirstSocialIdentityProviderFromFile","importSocialIdentityProviderFromFile","importSocialIdentityProvidersFromFile","importSocialIdentityProvidersFromFiles","printMessage","verboseMessage","FrodoCommand","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","file","idpId","getRealm","deps","all","allSeparate","help","process","exitCode","parse"],"sources":["../../../src/cli/idp/idp-import.ts"],"sourcesContent":["import { state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport {\n importFirstSocialIdentityProviderFromFile,\n importSocialIdentityProviderFromFile,\n importSocialIdentityProvidersFromFile,\n importSocialIdentityProvidersFromFiles,\n} from '../../ops/IdpOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo idp import');\n\nprogram\n .description('Import (social) identity providers.')\n .addOption(\n new Option(\n '-i, --idp-id <id>',\n 'Provider id. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-f, --file <file>',\n 'Name of the file to import the provider(s) from.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Import all the providers from single file. Ignored with -t or -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all the providers from separate files (*.json) in the current directory. Ignored with -t or -i or -a.'\n )\n )\n .addOption(\n new Option('--no-deps', 'Do not include any dependencies (scripts).')\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // import by id\n if (options.file && options.idpId && (await getTokens())) {\n verboseMessage(\n `Importing provider \"${\n options.idpId\n }\" into realm \"${state.getRealm()}\"...`\n );\n await importSocialIdentityProviderFromFile(\n options.idpId,\n options.file,\n {\n deps: options.deps,\n }\n );\n }\n // --all -a\n else if (options.all && options.file && (await getTokens())) {\n verboseMessage(\n `Importing all providers from a single file (${options.file})...`\n );\n await importSocialIdentityProvidersFromFile(options.file, {\n deps: options.deps,\n });\n }\n // --all-separate -A\n else if (options.allSeparate && !options.file && (await getTokens())) {\n verboseMessage(\n 'Importing all providers from separate files in current directory...'\n );\n await importSocialIdentityProvidersFromFiles({\n deps: options.deps,\n });\n }\n // import first provider from file\n else if (options.file && (await getTokens())) {\n verboseMessage(\n `Importing first provider from file \"${\n options.file\n }\" into realm \"${state.getRealm()}\"...`\n );\n await importFirstSocialIdentityProviderFromFile(options.file, {\n deps: options.deps,\n });\n }\n // unrecognized combination of options or no options\n else {\n printMessage('Unrecognized combination of options or no options...');\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SACEC,yCAAyC,EACzCC,oCAAoC,EACpCC,qCAAqC,EACrCC,sCAAsC,QACjC,kBAAkB;AACzB,SAASC,YAAY,EAAEC,cAAc,QAAQ,qBAAqB;AAClE,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,OAAO,GAAG,IAAID,YAAY,CAAC,kBAAkB,CAAC;AAEpDC,OAAO,CACJC,WAAW,CAAC,qCAAqC,CAAC,CAClDC,SAAS,CACR,IAAIX,MAAM,CACR,mBAAmB,EACnB,mDACF,CACF,CAAC,CACAW,SAAS,CACR,IAAIX,MAAM,CACR,mBAAmB,EACnB,kDACF,CACF,CAAC,CACAW,SAAS,CACR,IAAIX,MAAM,CACR,WAAW,EACX,mEACF,CACF,CAAC,CACAW,SAAS,CACR,IAAIX,MAAM,CACR,oBAAoB,EACpB,8GACF,CACF,CAAC,CACAW,SAAS,CACR,IAAIX,MAAM,CAAC,WAAW,EAAE,4CAA4C,CACtE,CAAC,CACAY,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD;EACA,IAAID,OAAO,CAACG,IAAI,IAAIH,OAAO,CAACI,KAAK,KAAK,MAAMpB,SAAS,CAAC,CAAC,CAAC,EAAE;IACxDM,cAAc,CACX,uBACCU,OAAO,CAACI,KACT,iBAAgBtB,KAAK,CAACuB,QAAQ,CAAC,CAAE,MACpC,CAAC;IACD,MAAMnB,oCAAoC,CACxCc,OAAO,CAACI,KAAK,EACbJ,OAAO,CAACG,IAAI,EACZ;MACEG,IAAI,EAAEN,OAAO,CAACM;IAChB,CACF,CAAC;EACH;EACA;EAAA,KACK,IAAIN,OAAO,CAACO,GAAG,IAAIP,OAAO,CAACG,IAAI,KAAK,MAAMnB,SAAS,CAAC,CAAC,CAAC,EAAE;IAC3DM,cAAc,CACX,+CAA8CU,OAAO,CAACG,IAAK,MAC9D,CAAC;IACD,MAAMhB,qCAAqC,CAACa,OAAO,CAACG,IAAI,EAAE;MACxDG,IAAI,EAAEN,OAAO,CAACM;IAChB,CAAC,CAAC;EACJ;EACA;EAAA,KACK,IAAIN,OAAO,CAACQ,WAAW,IAAI,CAACR,OAAO,CAACG,IAAI,KAAK,MAAMnB,SAAS,CAAC,CAAC,CAAC,EAAE;IACpEM,cAAc,CACZ,qEACF,CAAC;IACD,MAAMF,sCAAsC,CAAC;MAC3CkB,IAAI,EAAEN,OAAO,CAACM;IAChB,CAAC,CAAC;EACJ;EACA;EAAA,KACK,IAAIN,OAAO,CAACG,IAAI,KAAK,MAAMnB,SAAS,CAAC,CAAC,CAAC,EAAE;IAC5CM,cAAc,CACX,uCACCU,OAAO,CAACG,IACT,iBAAgBrB,KAAK,CAACuB,QAAQ,CAAC,CAAE,MACpC,CAAC;IACD,MAAMpB,yCAAyC,CAACe,OAAO,CAACG,IAAI,EAAE;MAC5DG,IAAI,EAAEN,OAAO,CAACM;IAChB,CAAC,CAAC;EACJ;EACA;EAAA,KACK;IACHjB,YAAY,CAAC,sDAAsD,CAAC;IACpEG,OAAO,CAACiB,IAAI,CAAC,CAAC;IACdC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;AAEHnB,OAAO,CAACoB,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"idp-import.js","names":["state","Option","getTokens","importFirstSocialIdentityProviderFromFile","importSocialIdentityProviderFromFile","importSocialIdentityProvidersFromFile","importSocialIdentityProvidersFromFiles","printMessage","verboseMessage","FrodoCommand","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","file","idpId","getRealm","outcome","deps","process","exitCode","all","allSeparate","help","parse"],"sources":["../../../src/cli/idp/idp-import.ts"],"sourcesContent":["import { state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport {\n importFirstSocialIdentityProviderFromFile,\n importSocialIdentityProviderFromFile,\n importSocialIdentityProvidersFromFile,\n importSocialIdentityProvidersFromFiles,\n} from '../../ops/IdpOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo idp import');\n\nprogram\n .description('Import (social) identity providers.')\n .addOption(\n new Option(\n '-i, --idp-id <id>',\n 'Provider id. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-f, --file <file>',\n 'Name of the file to import the provider(s) from.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Import all the providers from single file. Ignored with -t or -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all the providers from separate files (*.json) in the current directory. Ignored with -t or -i or -a.'\n )\n )\n .addOption(\n new Option('--no-deps', 'Do not include any dependencies (scripts).')\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // import by id\n if (options.file && options.idpId && (await getTokens())) {\n verboseMessage(\n `Importing provider \"${\n options.idpId\n }\" into realm \"${state.getRealm()}\"...`\n );\n const outcome = await importSocialIdentityProviderFromFile(\n options.idpId,\n options.file,\n {\n deps: options.deps,\n }\n );\n if (!outcome) process.exitCode = 1;\n }\n // --all -a\n else if (options.all && options.file && (await getTokens())) {\n verboseMessage(\n `Importing all providers from a single file (${options.file})...`\n );\n const outcome = await importSocialIdentityProvidersFromFile(\n options.file,\n {\n deps: options.deps,\n }\n );\n if (!outcome) process.exitCode = 1;\n }\n // --all-separate -A\n else if (options.allSeparate && !options.file && (await getTokens())) {\n verboseMessage(\n 'Importing all providers from separate files in current directory...'\n );\n const outcome = await importSocialIdentityProvidersFromFiles({\n deps: options.deps,\n });\n if (!outcome) process.exitCode = 1;\n }\n // import first provider from file\n else if (options.file && (await getTokens())) {\n verboseMessage(\n `Importing first provider from file \"${\n options.file\n }\" into realm \"${state.getRealm()}\"...`\n );\n const outcome = await importFirstSocialIdentityProviderFromFile(\n options.file,\n {\n deps: options.deps,\n }\n );\n if (!outcome) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n printMessage('Unrecognized combination of options or no options...');\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
@@ -14,7 +14,8 @@ async (host, realm, user, password, options, command) => {
14
14
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
15
15
  if (await getTokens()) {
16
16
  verboseMessage(`Listing providers in realm "${state.getRealm()}"...`);
17
- await listSocialProviders();
17
+ const outcome = await listSocialProviders();
18
+ if (!outcome) process.exitCode = 1;
18
19
  } else {
19
20
  process.exitCode = 1;
20
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"idp-list.js","names":["state","getTokens","listSocialProviders","verboseMessage","FrodoCommand","program","description","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","getRealm","process","exitCode","parse"],"sources":["../../../src/cli/idp/idp-list.ts"],"sourcesContent":["import { state } from '@rockcarver/frodo-lib';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport { listSocialProviders } from '../../ops/IdpOps';\nimport { verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo idp list');\n\nprogram\n .description('List (social) identity providers.')\n // .addOption(\n // new Option('-l, --long', 'Long with all fields.').default(false, 'false')\n // )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n verboseMessage(`Listing providers in realm \"${state.getRealm()}\"...`);\n await listSocialProviders();\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAE7C,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SAASC,mBAAmB,QAAQ,kBAAkB;AACtD,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,OAAO,GAAG,IAAID,YAAY,CAAC,gBAAgB,CAAC;AAElDC,OAAO,CACJC,WAAW,CAAC,mCAAmC;AAChD;AACA;AACA;AAAA,CACCC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMZ,SAAS,CAAC,CAAC,EAAE;IACrBE,cAAc,CAAE,+BAA8BH,KAAK,CAACe,QAAQ,CAAC,CAAE,MAAK,CAAC;IACrE,MAAMb,mBAAmB,CAAC,CAAC;EAC7B,CAAC,MAAM;IACLc,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;AAEHZ,OAAO,CAACa,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"idp-list.js","names":["state","getTokens","listSocialProviders","verboseMessage","FrodoCommand","program","description","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","getRealm","outcome","process","exitCode","parse"],"sources":["../../../src/cli/idp/idp-list.ts"],"sourcesContent":["import { state } from '@rockcarver/frodo-lib';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport { listSocialProviders } from '../../ops/IdpOps';\nimport { verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo idp list');\n\nprogram\n .description('List (social) identity providers.')\n // .addOption(\n // new Option('-l, --long', 'Long with all fields.').default(false, 'false')\n // )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n verboseMessage(`Listing providers in realm \"${state.getRealm()}\"...`);\n const outcome = await listSocialProviders();\n if (!outcome) process.exitCode = 1;\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAE7C,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SAASC,mBAAmB,QAAQ,kBAAkB;AACtD,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,OAAO,GAAG,IAAID,YAAY,CAAC,gBAAgB,CAAC;AAElDC,OAAO,CACJC,WAAW,CAAC,mCAAmC;AAChD;AACA;AACA;AAAA,CACCC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMZ,SAAS,CAAC,CAAC,EAAE;IACrBE,cAAc,CAAE,+BAA8BH,KAAK,CAACe,QAAQ,CAAC,CAAE,MAAK,CAAC;IACrE,MAAMC,OAAO,GAAG,MAAMd,mBAAmB,CAAC,CAAC;IAC3C,IAAI,CAACc,OAAO,EAAEC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC,CAAC,MAAM;IACLD,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;AAEHb,OAAO,CAACc,KAAK,CAAC,CAAC"}
@@ -1,12 +1,9 @@
1
- import { frodo, state } from '@rockcarver/frodo-lib';
1
+ import { state } from '@rockcarver/frodo-lib';
2
2
  import { Option } from 'commander';
3
3
  import { getTokens } from '../../ops/AuthenticateOps';
4
+ import { deleteJourney, deleteJourneys } from '../../ops/JourneyOps';
4
5
  import { printMessage, verboseMessage } from '../../utils/Console';
5
6
  import { FrodoCommand } from '../FrodoCommand';
6
- const {
7
- deleteJourney,
8
- deleteJourneys
9
- } = frodo.authn.journey;
10
7
  const program = new FrodoCommand('frodo journey delete');
11
8
  program.description('Delete journeys/trees.').addOption(new Option('-i, --journey-id <journey>', 'Name of a journey/tree. If specified, -a is ignored.')).addOption(new Option('-a, --all', 'Delete all the journeys/trees in a realm. Ignored with -i.')).addOption(new Option('--no-deep', 'No deep delete. This leaves orphaned configuration artifacts behind.')).addOption(new Option('--verbose', 'Verbose output during command execution. If specified, may or may not produce additional output.').default(false, 'off')).action(
12
9
  // implement command logic inside action handler
@@ -15,12 +12,14 @@ async (host, realm, user, password, options, command) => {
15
12
  // delete by id
16
13
  if (options.journeyId && (await getTokens())) {
17
14
  verboseMessage(`Deleting journey ${options.journeyId} in realm "${state.getRealm()}"...`);
18
- await deleteJourney(options.journeyId, options);
15
+ const outcome = await deleteJourney(options.journeyId, options);
16
+ if (!outcome) process.exitCode = 1;
19
17
  }
20
18
  // --all -a
21
19
  else if (options.all && (await getTokens())) {
22
20
  verboseMessage('Deleting all journeys...');
23
- await deleteJourneys(options);
21
+ const outcome = await deleteJourneys(options);
22
+ if (!outcome) process.exitCode = 1;
24
23
  }
25
24
  // unrecognized combination of options or no options
26
25
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"journey-delete.js","names":["frodo","state","Option","getTokens","printMessage","verboseMessage","FrodoCommand","deleteJourney","deleteJourneys","authn","journey","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","journeyId","getRealm","all","help","process","exitCode","parse"],"sources":["../../../src/cli/journey/journey-delete.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { deleteJourney, deleteJourneys } = frodo.authn.journey;\n\nconst program = new FrodoCommand('frodo journey delete');\n\nprogram\n .description('Delete journeys/trees.')\n .addOption(\n new Option(\n '-i, --journey-id <journey>',\n 'Name of a journey/tree. If specified, -a is ignored.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Delete all the journeys/trees in a realm. Ignored with -i.'\n )\n )\n .addOption(\n new Option(\n '--no-deep',\n 'No deep delete. This leaves orphaned configuration artifacts behind.'\n )\n )\n .addOption(\n new Option(\n '--verbose',\n 'Verbose output during command execution. If specified, may or may not produce additional output.'\n ).default(false, 'off')\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // delete by id\n if (options.journeyId && (await getTokens())) {\n verboseMessage(\n `Deleting journey ${\n options.journeyId\n } in realm \"${state.getRealm()}\"...`\n );\n await deleteJourney(options.journeyId, options);\n }\n // --all -a\n else if (options.all && (await getTokens())) {\n verboseMessage('Deleting all journeys...');\n await deleteJourneys(options);\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,EAAEC,KAAK,QAAQ,uBAAuB;AACpD,SAASC,MAAM,QAAQ,WAAW;AAElC,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SAASC,YAAY,EAAEC,cAAc,QAAQ,qBAAqB;AAClE,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAM;EAAEC,aAAa;EAAEC;AAAe,CAAC,GAAGR,KAAK,CAACS,KAAK,CAACC,OAAO;AAE7D,MAAMC,OAAO,GAAG,IAAIL,YAAY,CAAC,sBAAsB,CAAC;AAExDK,OAAO,CACJC,WAAW,CAAC,wBAAwB,CAAC,CACrCC,SAAS,CACR,IAAIX,MAAM,CACR,4BAA4B,EAC5B,sDACF,CACF,CAAC,CACAW,SAAS,CACR,IAAIX,MAAM,CACR,WAAW,EACX,4DACF,CACF,CAAC,CACAW,SAAS,CACR,IAAIX,MAAM,CACR,WAAW,EACX,sEACF,CACF,CAAC,CACAW,SAAS,CACR,IAAIX,MAAM,CACR,WAAW,EACX,kGACF,CAAC,CAACY,OAAO,CAAC,KAAK,EAAE,KAAK,CACxB,CAAC,CACAC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD;EACA,IAAID,OAAO,CAACG,SAAS,KAAK,MAAMpB,SAAS,CAAC,CAAC,CAAC,EAAE;IAC5CE,cAAc,CACX,oBACCe,OAAO,CAACG,SACT,cAAatB,KAAK,CAACuB,QAAQ,CAAC,CAAE,MACjC,CAAC;IACD,MAAMjB,aAAa,CAACa,OAAO,CAACG,SAAS,EAAEH,OAAO,CAAC;EACjD;EACA;EAAA,KACK,IAAIA,OAAO,CAACK,GAAG,KAAK,MAAMtB,SAAS,CAAC,CAAC,CAAC,EAAE;IAC3CE,cAAc,CAAC,0BAA0B,CAAC;IAC1C,MAAMG,cAAc,CAACY,OAAO,CAAC;EAC/B;EACA;EAAA,KACK;IACHhB,YAAY,CACV,sDAAsD,EACtD,OACF,CAAC;IACDO,OAAO,CAACe,IAAI,CAAC,CAAC;IACdC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;AAEHjB,OAAO,CAACkB,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"journey-delete.js","names":["state","Option","getTokens","deleteJourney","deleteJourneys","printMessage","verboseMessage","FrodoCommand","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","journeyId","getRealm","outcome","process","exitCode","all","help","parse"],"sources":["../../../src/cli/journey/journey-delete.ts"],"sourcesContent":["import { state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport { deleteJourney, deleteJourneys } from '../../ops/JourneyOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo journey delete');\n\nprogram\n .description('Delete journeys/trees.')\n .addOption(\n new Option(\n '-i, --journey-id <journey>',\n 'Name of a journey/tree. If specified, -a is ignored.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Delete all the journeys/trees in a realm. Ignored with -i.'\n )\n )\n .addOption(\n new Option(\n '--no-deep',\n 'No deep delete. This leaves orphaned configuration artifacts behind.'\n )\n )\n .addOption(\n new Option(\n '--verbose',\n 'Verbose output during command execution. If specified, may or may not produce additional output.'\n ).default(false, 'off')\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // delete by id\n if (options.journeyId && (await getTokens())) {\n verboseMessage(\n `Deleting journey ${\n options.journeyId\n } in realm \"${state.getRealm()}\"...`\n );\n const outcome = await deleteJourney(options.journeyId, options);\n if (!outcome) process.exitCode = 1;\n }\n // --all -a\n else if (options.all && (await getTokens())) {\n verboseMessage('Deleting all journeys...');\n const outcome = await deleteJourneys(options);\n if (!outcome) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SAASC,aAAa,EAAEC,cAAc,QAAQ,sBAAsB;AACpE,SAASC,YAAY,EAAEC,cAAc,QAAQ,qBAAqB;AAClE,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,OAAO,GAAG,IAAID,YAAY,CAAC,sBAAsB,CAAC;AAExDC,OAAO,CACJC,WAAW,CAAC,wBAAwB,CAAC,CACrCC,SAAS,CACR,IAAIT,MAAM,CACR,4BAA4B,EAC5B,sDACF,CACF,CAAC,CACAS,SAAS,CACR,IAAIT,MAAM,CACR,WAAW,EACX,4DACF,CACF,CAAC,CACAS,SAAS,CACR,IAAIT,MAAM,CACR,WAAW,EACX,sEACF,CACF,CAAC,CACAS,SAAS,CACR,IAAIT,MAAM,CACR,WAAW,EACX,kGACF,CAAC,CAACU,OAAO,CAAC,KAAK,EAAE,KAAK,CACxB,CAAC,CACAC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD;EACA,IAAID,OAAO,CAACG,SAAS,KAAK,MAAMlB,SAAS,CAAC,CAAC,CAAC,EAAE;IAC5CI,cAAc,CACX,oBACCW,OAAO,CAACG,SACT,cAAapB,KAAK,CAACqB,QAAQ,CAAC,CAAE,MACjC,CAAC;IACD,MAAMC,OAAO,GAAG,MAAMnB,aAAa,CAACc,OAAO,CAACG,SAAS,EAAEH,OAAO,CAAC;IAC/D,IAAI,CAACK,OAAO,EAAEC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC;EACA;EAAA,KACK,IAAIP,OAAO,CAACQ,GAAG,KAAK,MAAMvB,SAAS,CAAC,CAAC,CAAC,EAAE;IAC3CI,cAAc,CAAC,0BAA0B,CAAC;IAC1C,MAAMgB,OAAO,GAAG,MAAMlB,cAAc,CAACa,OAAO,CAAC;IAC7C,IAAI,CAACK,OAAO,EAAEC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC;EACA;EAAA,KACK;IACHnB,YAAY,CACV,sDAAsD,EACtD,OACF,CAAC;IACDG,OAAO,CAACkB,IAAI,CAAC,CAAC;IACdH,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;AAEHhB,OAAO,CAACmB,KAAK,CAAC,CAAC"}
@@ -3,7 +3,7 @@ import { Option } from 'commander';
3
3
  import fs from 'fs';
4
4
  import { getTokens } from '../../ops/AuthenticateOps';
5
5
  import { describeJourney, describeJourneyMd } from '../../ops/JourneyOps';
6
- import { printMessage, verboseMessage } from '../../utils/Console';
6
+ import { printError, printMessage, verboseMessage } from '../../utils/Console';
7
7
  import { FrodoCommand } from '../FrodoCommand';
8
8
  const {
9
9
  saveTextToFile
@@ -59,13 +59,15 @@ async (host, realm, user, password, options, command) => {
59
59
  }
60
60
  // ANSI text output
61
61
  if (!options.markdown) {
62
- await describeJourney(journeyData, createFileParamTreeExportResolver(options.file));
62
+ const outcome = await describeJourney(journeyData, createFileParamTreeExportResolver(options.file));
63
+ if (!outcome) process.exitCode = 1;
63
64
  }
64
65
  // Markdown output
65
66
  else {
66
67
  // reset output file
67
68
  if (options.outputFile) saveTextToFile('', options.outputFile);
68
- await describeJourneyMd(journeyData, createFileParamTreeExportResolver(options.file));
69
+ const outcome = await describeJourneyMd(journeyData, createFileParamTreeExportResolver(options.file));
70
+ if (!outcome) process.exitCode = 1;
69
71
  }
70
72
  } catch (error) {
71
73
  printMessage(error.message, 'error');
@@ -86,16 +88,18 @@ async (host, realm, user, password, options, command) => {
86
88
  const treeData = await exportJourney(journey['_id']);
87
89
  // ANSI text output
88
90
  if (!options.markdown) {
89
- await describeJourney(treeData);
91
+ const outcome = await describeJourney(treeData);
92
+ if (!outcome) process.exitCode = 1;
90
93
  }
91
94
  // Markdown output
92
95
  else {
93
96
  // reset output file
94
97
  if (options.outputFile) saveTextToFile('', options.outputFile);
95
- await describeJourneyMd(treeData);
98
+ const outcome = await describeJourneyMd(treeData);
99
+ if (!outcome) process.exitCode = 1;
96
100
  }
97
101
  } catch (error) {
98
- printMessage(error.message, 'error');
102
+ printError(error);
99
103
  process.exitCode = 1;
100
104
  }
101
105
  }
@@ -104,16 +108,18 @@ async (host, realm, user, password, options, command) => {
104
108
  const treeData = await exportJourney(options.journeyId);
105
109
  // ANSI text output
106
110
  if (!options.markdown) {
107
- await describeJourney(treeData);
111
+ const outcome = await describeJourney(treeData);
112
+ if (!outcome) process.exitCode = 1;
108
113
  }
109
114
  // Markdown output
110
115
  else {
111
116
  // reset output file
112
117
  if (options.outputFile) saveTextToFile('', options.outputFile);
113
- await describeJourneyMd(treeData);
118
+ const outcome = await describeJourneyMd(treeData);
119
+ if (!outcome) process.exitCode = 1;
114
120
  }
115
121
  } catch (error) {
116
- printMessage(error.message, 'error');
122
+ printError(error);
117
123
  process.exitCode = 1;
118
124
  }
119
125
  }
@@ -1 +1 @@
1
- {"version":3,"file":"journey-describe.js","names":["frodo","state","Option","fs","getTokens","describeJourney","describeJourneyMd","printMessage","verboseMessage","FrodoCommand","saveTextToFile","utils","createFileParamTreeExportResolver","readJourneys","exportJourney","authn","journey","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","getHost","outputFile","setOutputFile","file","process","exitCode","_fileData$tree","_fileData$tree2","overrideVersion","setAmVersion","fileData","JSON","parse","readFileSync","journeyData","journeyId","trees","Object","values","tree","_id","Error","markdown","error","message","getRealm","journeys","treeData"],"sources":["../../../src/cli/journey/journey-describe.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\nimport fs from 'fs';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport { describeJourney, describeJourneyMd } from '../../ops/JourneyOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { saveTextToFile } = frodo.utils;\nconst { createFileParamTreeExportResolver, readJourneys, exportJourney } =\n frodo.authn.journey;\n\nconst program = new FrodoCommand('frodo journey describe');\n\nprogram\n .description(\n 'If -h is supplied, describe the journey/tree indicated by -i, or all journeys/trees in the realm if no -i is supplied, otherwise describe the journey/tree export file indicated by -f.'\n )\n .addOption(\n new Option(\n '-i, --journey-id <journey>',\n 'Name of a journey/tree. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-f, --file <file>',\n 'Name of the journey export file to describe. Ignored with -A.'\n )\n )\n .addOption(\n new Option(\n '-F, --output-file <file>',\n 'Name of the file to write the output to.'\n )\n )\n .addOption(new Option('--markdown', 'Output in markdown.'))\n .addOption(\n new Option(\n '-o, --override-version <version>',\n \"Override version. Notation: '<major>.<minor>.<patch>' e.g. '7.2.0'. Override detected version with any version. This is helpful in order to check if journeys in one environment would be compatible running in another environment (e.g. in preparation of migrating from on-prem to ForgeRock Identity Cloud.\"\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n host = host ? host : state.getHost();\n if (options.outputFile) state.setOutputFile(options.outputFile);\n // TODO: review checks for arguments\n if (typeof host === 'undefined' || typeof options.file !== 'undefined') {\n if (\n typeof host === 'undefined' &&\n typeof options.file === 'undefined'\n ) {\n printMessage('Need either [host] or -f.', 'error');\n process.exitCode = 1;\n return;\n }\n verboseMessage(`Describing local journey file ${options.file}...`);\n try {\n // override version\n if (typeof options.overrideVersion !== 'undefined') {\n state.setAmVersion(options.overrideVersion);\n }\n const fileData = JSON.parse(fs.readFileSync(options.file, 'utf8'));\n let journeyData;\n // single or multi tree export?\n // multi - by id\n if (\n typeof options.journeyId !== 'undefined' &&\n fileData.trees &&\n fileData.trees[options.journeyId]\n ) {\n journeyData = fileData.trees[options.journeyId];\n }\n // multi - first\n else if (typeof options.journeyId === 'undefined' && fileData.trees) {\n [journeyData] = Object.values(fileData.trees);\n }\n // single - by id\n else if (\n typeof options.journeyId !== 'undefined' &&\n options.journeyId === fileData.tree?._id\n ) {\n journeyData = fileData;\n }\n // single\n else if (\n typeof options.journeyId === 'undefined' &&\n fileData.tree?._id\n ) {\n journeyData = fileData;\n }\n // no journey/tree found\n else {\n throw new Error(\n typeof options.journeyId === 'undefined'\n ? `No journey found in ${options.file}`\n : `Journey '${options.journeyId}' not found in ${options.file}`\n );\n }\n // ANSI text output\n if (!options.markdown) {\n await describeJourney(\n journeyData,\n createFileParamTreeExportResolver(options.file)\n );\n }\n // Markdown output\n else {\n // reset output file\n if (options.outputFile) saveTextToFile('', options.outputFile);\n await describeJourneyMd(\n journeyData,\n createFileParamTreeExportResolver(options.file)\n );\n }\n } catch (error) {\n printMessage(error.message, 'error');\n process.exitCode = 1;\n }\n } else if (await getTokens()) {\n verboseMessage(\n `Describing journey(s) in realm \"${state.getRealm()}\"...`\n );\n // override version\n if (typeof options.overrideVersion !== 'undefined') {\n state.setAmVersion(options.overrideVersion);\n }\n if (typeof options.journeyId === 'undefined') {\n let journeys = [];\n journeys = await readJourneys();\n for (const journey of journeys) {\n try {\n // eslint-disable-next-line no-await-in-loop, dot-notation\n const treeData = await exportJourney(journey['_id']);\n // ANSI text output\n if (!options.markdown) {\n await describeJourney(treeData);\n }\n // Markdown output\n else {\n // reset output file\n if (options.outputFile) saveTextToFile('', options.outputFile);\n await describeJourneyMd(treeData);\n }\n } catch (error) {\n printMessage(error.message, 'error');\n process.exitCode = 1;\n }\n }\n } else {\n try {\n const treeData = await exportJourney(options.journeyId);\n // ANSI text output\n if (!options.markdown) {\n await describeJourney(treeData);\n }\n // Markdown output\n else {\n // reset output file\n if (options.outputFile) saveTextToFile('', options.outputFile);\n await describeJourneyMd(treeData);\n }\n } catch (error) {\n printMessage(error.message, 'error');\n process.exitCode = 1;\n }\n }\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
1
+ {"version":3,"file":"journey-describe.js","names":["frodo","state","Option","fs","getTokens","describeJourney","describeJourneyMd","printError","printMessage","verboseMessage","FrodoCommand","saveTextToFile","utils","createFileParamTreeExportResolver","readJourneys","exportJourney","authn","journey","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","getHost","outputFile","setOutputFile","file","process","exitCode","_fileData$tree","_fileData$tree2","overrideVersion","setAmVersion","fileData","JSON","parse","readFileSync","journeyData","journeyId","trees","Object","values","tree","_id","Error","markdown","outcome","error","message","getRealm","journeys","treeData"],"sources":["../../../src/cli/journey/journey-describe.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\nimport fs from 'fs';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport { describeJourney, describeJourneyMd } from '../../ops/JourneyOps';\nimport { printError, printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { saveTextToFile } = frodo.utils;\nconst { createFileParamTreeExportResolver, readJourneys, exportJourney } =\n frodo.authn.journey;\n\nconst program = new FrodoCommand('frodo journey describe');\n\nprogram\n .description(\n 'If -h is supplied, describe the journey/tree indicated by -i, or all journeys/trees in the realm if no -i is supplied, otherwise describe the journey/tree export file indicated by -f.'\n )\n .addOption(\n new Option(\n '-i, --journey-id <journey>',\n 'Name of a journey/tree. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-f, --file <file>',\n 'Name of the journey export file to describe. Ignored with -A.'\n )\n )\n .addOption(\n new Option(\n '-F, --output-file <file>',\n 'Name of the file to write the output to.'\n )\n )\n .addOption(new Option('--markdown', 'Output in markdown.'))\n .addOption(\n new Option(\n '-o, --override-version <version>',\n \"Override version. Notation: '<major>.<minor>.<patch>' e.g. '7.2.0'. Override detected version with any version. This is helpful in order to check if journeys in one environment would be compatible running in another environment (e.g. in preparation of migrating from on-prem to ForgeRock Identity Cloud.\"\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n host = host ? host : state.getHost();\n if (options.outputFile) state.setOutputFile(options.outputFile);\n // TODO: review checks for arguments\n if (typeof host === 'undefined' || typeof options.file !== 'undefined') {\n if (\n typeof host === 'undefined' &&\n typeof options.file === 'undefined'\n ) {\n printMessage('Need either [host] or -f.', 'error');\n process.exitCode = 1;\n return;\n }\n verboseMessage(`Describing local journey file ${options.file}...`);\n try {\n // override version\n if (typeof options.overrideVersion !== 'undefined') {\n state.setAmVersion(options.overrideVersion);\n }\n const fileData = JSON.parse(fs.readFileSync(options.file, 'utf8'));\n let journeyData;\n // single or multi tree export?\n // multi - by id\n if (\n typeof options.journeyId !== 'undefined' &&\n fileData.trees &&\n fileData.trees[options.journeyId]\n ) {\n journeyData = fileData.trees[options.journeyId];\n }\n // multi - first\n else if (typeof options.journeyId === 'undefined' && fileData.trees) {\n [journeyData] = Object.values(fileData.trees);\n }\n // single - by id\n else if (\n typeof options.journeyId !== 'undefined' &&\n options.journeyId === fileData.tree?._id\n ) {\n journeyData = fileData;\n }\n // single\n else if (\n typeof options.journeyId === 'undefined' &&\n fileData.tree?._id\n ) {\n journeyData = fileData;\n }\n // no journey/tree found\n else {\n throw new Error(\n typeof options.journeyId === 'undefined'\n ? `No journey found in ${options.file}`\n : `Journey '${options.journeyId}' not found in ${options.file}`\n );\n }\n // ANSI text output\n if (!options.markdown) {\n const outcome = await describeJourney(\n journeyData,\n createFileParamTreeExportResolver(options.file)\n );\n if (!outcome) process.exitCode = 1;\n }\n // Markdown output\n else {\n // reset output file\n if (options.outputFile) saveTextToFile('', options.outputFile);\n const outcome = await describeJourneyMd(\n journeyData,\n createFileParamTreeExportResolver(options.file)\n );\n if (!outcome) process.exitCode = 1;\n }\n } catch (error) {\n printMessage(error.message, 'error');\n process.exitCode = 1;\n }\n } else if (await getTokens()) {\n verboseMessage(\n `Describing journey(s) in realm \"${state.getRealm()}\"...`\n );\n // override version\n if (typeof options.overrideVersion !== 'undefined') {\n state.setAmVersion(options.overrideVersion);\n }\n if (typeof options.journeyId === 'undefined') {\n let journeys = [];\n journeys = await readJourneys();\n for (const journey of journeys) {\n try {\n // eslint-disable-next-line no-await-in-loop, dot-notation\n const treeData = await exportJourney(journey['_id']);\n // ANSI text output\n if (!options.markdown) {\n const outcome = await describeJourney(treeData);\n if (!outcome) process.exitCode = 1;\n }\n // Markdown output\n else {\n // reset output file\n if (options.outputFile) saveTextToFile('', options.outputFile);\n const outcome = await describeJourneyMd(treeData);\n if (!outcome) process.exitCode = 1;\n }\n } catch (error) {\n printError(error);\n process.exitCode = 1;\n }\n }\n } else {\n try {\n const treeData = await exportJourney(options.journeyId);\n // ANSI text output\n if (!options.markdown) {\n const outcome = await describeJourney(treeData);\n if (!outcome) process.exitCode = 1;\n }\n // Markdown output\n else {\n // reset output file\n if (options.outputFile) saveTextToFile('', options.outputFile);\n const outcome = await describeJourneyMd(treeData);\n if (!outcome) process.exitCode = 1;\n }\n } catch (error) {\n printError(error);\n process.exitCode = 1;\n }\n }\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
@@ -21,29 +21,32 @@ async (host, realm, user, password, options, command) => {
21
21
  // export
22
22
  if (options.journeyId && (await getTokens())) {
23
23
  verboseMessage('Exporting journey...');
24
- await exportJourneyToFile(options.journeyId, options.file, options.metadata, {
24
+ const outcome = await exportJourneyToFile(options.journeyId, options.file, options.metadata, {
25
25
  useStringArrays: options.useStringArrays,
26
26
  deps: options.deps,
27
27
  coords: options.coords
28
28
  });
29
+ if (!outcome) process.exitCode = 1;
29
30
  }
30
31
  // --all -a
31
32
  else if (options.all && (await getTokens())) {
32
33
  verboseMessage('Exporting all journeys to a single file...');
33
- await exportJourneysToFile(options.file, options.metadata, {
34
+ const outcome = await exportJourneysToFile(options.file, options.metadata, {
34
35
  useStringArrays: options.useStringArrays,
35
36
  deps: options.deps,
36
37
  coords: options.coords
37
38
  });
39
+ if (!outcome) process.exitCode = 1;
38
40
  }
39
41
  // --all-separate -A
40
42
  else if (options.allSeparate && (await getTokens())) {
41
43
  verboseMessage('Exporting all journeys to separate files...');
42
- await exportJourneysToFiles(options.metadata, {
44
+ const outcome = await exportJourneysToFiles(options.metadata, {
43
45
  useStringArrays: options.useStringArrays,
44
46
  deps: options.deps,
45
47
  coords: options.coords
46
48
  });
49
+ if (!outcome) process.exitCode = 1;
47
50
  }
48
51
  // unrecognized combination of options or no options
49
52
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"journey-export.js","names":["Option","getTokens","exportJourneysToFile","exportJourneysToFiles","exportJourneyToFile","printMessage","verboseMessage","FrodoCommand","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","journeyId","file","metadata","useStringArrays","deps","coords","all","allSeparate","help","process","exitCode","parse"],"sources":["../../../src/cli/journey/journey-export.ts"],"sourcesContent":["import { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport {\n exportJourneysToFile,\n exportJourneysToFiles,\n exportJourneyToFile,\n} from '../../ops/JourneyOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo journey export');\n\nprogram\n .description('Export journeys/trees.')\n .addOption(\n new Option(\n '-i, --journey-id <journey>',\n 'Name of a journey/tree. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-f, --file <file>',\n 'Name of the file to write the exported journey(s) to. Ignored with -A.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Export all the journeys/trees in a realm. Ignored with -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Export all the journeys/trees in a realm as separate files <journey/tree name>.json. Ignored with -i or -a.'\n )\n )\n .addOption(\n new Option(\n '-N, --no-metadata',\n 'Does not include metadata in the export file.'\n )\n )\n .addOption(\n new Option(\n '--use-string-arrays',\n 'Where applicable, use string arrays to store multi-line text (e.g. scripts).'\n ).default(false, 'off')\n )\n .addOption(\n new Option(\n '--no-deps',\n 'Do not include any dependencies (scripts, email templates, SAML entity providers and circles of trust, social identity providers, themes).'\n )\n )\n .addOption(\n new Option(\n '--no-coords',\n 'Do not include the x and y coordinate positions of the journey/tree nodes.'\n )\n )\n // .addOption(\n // new Option(\n // '-O, --organize <method>',\n // 'Organize exports into folders using the indicated method. Valid values for method:\\n' +\n // 'id: folders named by id of exported object\\n' +\n // 'type: folders named by type (e.g. script, journey, idp)\\n' +\n // 'type/id: folders named by type with sub-folders named by id'\n // )\n // )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // export\n if (options.journeyId && (await getTokens())) {\n verboseMessage('Exporting journey...');\n await exportJourneyToFile(\n options.journeyId,\n options.file,\n options.metadata,\n {\n useStringArrays: options.useStringArrays,\n deps: options.deps,\n coords: options.coords,\n }\n );\n }\n // --all -a\n else if (options.all && (await getTokens())) {\n verboseMessage('Exporting all journeys to a single file...');\n await exportJourneysToFile(options.file, options.metadata, {\n useStringArrays: options.useStringArrays,\n deps: options.deps,\n coords: options.coords,\n });\n }\n // --all-separate -A\n else if (options.allSeparate && (await getTokens())) {\n verboseMessage('Exporting all journeys to separate files...');\n await exportJourneysToFiles(options.metadata, {\n useStringArrays: options.useStringArrays,\n deps: options.deps,\n coords: options.coords,\n });\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
1
+ {"version":3,"file":"journey-export.js","names":["Option","getTokens","exportJourneysToFile","exportJourneysToFiles","exportJourneyToFile","printMessage","verboseMessage","FrodoCommand","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","journeyId","outcome","file","metadata","useStringArrays","deps","coords","process","exitCode","all","allSeparate","help","parse"],"sources":["../../../src/cli/journey/journey-export.ts"],"sourcesContent":["import { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport {\n exportJourneysToFile,\n exportJourneysToFiles,\n exportJourneyToFile,\n} from '../../ops/JourneyOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo journey export');\n\nprogram\n .description('Export journeys/trees.')\n .addOption(\n new Option(\n '-i, --journey-id <journey>',\n 'Name of a journey/tree. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-f, --file <file>',\n 'Name of the file to write the exported journey(s) to. Ignored with -A.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Export all the journeys/trees in a realm. Ignored with -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Export all the journeys/trees in a realm as separate files <journey/tree name>.json. Ignored with -i or -a.'\n )\n )\n .addOption(\n new Option(\n '-N, --no-metadata',\n 'Does not include metadata in the export file.'\n )\n )\n .addOption(\n new Option(\n '--use-string-arrays',\n 'Where applicable, use string arrays to store multi-line text (e.g. scripts).'\n ).default(false, 'off')\n )\n .addOption(\n new Option(\n '--no-deps',\n 'Do not include any dependencies (scripts, email templates, SAML entity providers and circles of trust, social identity providers, themes).'\n )\n )\n .addOption(\n new Option(\n '--no-coords',\n 'Do not include the x and y coordinate positions of the journey/tree nodes.'\n )\n )\n // .addOption(\n // new Option(\n // '-O, --organize <method>',\n // 'Organize exports into folders using the indicated method. Valid values for method:\\n' +\n // 'id: folders named by id of exported object\\n' +\n // 'type: folders named by type (e.g. script, journey, idp)\\n' +\n // 'type/id: folders named by type with sub-folders named by id'\n // )\n // )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // export\n if (options.journeyId && (await getTokens())) {\n verboseMessage('Exporting journey...');\n const outcome = await exportJourneyToFile(\n options.journeyId,\n options.file,\n options.metadata,\n {\n useStringArrays: options.useStringArrays,\n deps: options.deps,\n coords: options.coords,\n }\n );\n if (!outcome) process.exitCode = 1;\n }\n // --all -a\n else if (options.all && (await getTokens())) {\n verboseMessage('Exporting all journeys to a single file...');\n const outcome = await exportJourneysToFile(\n options.file,\n options.metadata,\n {\n useStringArrays: options.useStringArrays,\n deps: options.deps,\n coords: options.coords,\n }\n );\n if (!outcome) process.exitCode = 1;\n }\n // --all-separate -A\n else if (options.allSeparate && (await getTokens())) {\n verboseMessage('Exporting all journeys to separate files...');\n const outcome = await exportJourneysToFiles(options.metadata, {\n useStringArrays: options.useStringArrays,\n deps: options.deps,\n coords: options.coords,\n });\n if (!outcome) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
@@ -11,34 +11,38 @@ async (host, realm, user, password, options, command) => {
11
11
  // import
12
12
  if (options.journeyId && (await getTokens())) {
13
13
  printMessage(`Importing journey ${options.journeyId}...`);
14
- await importJourneyFromFile(options.journeyId, options.file, {
14
+ const outcome = await importJourneyFromFile(options.journeyId, options.file, {
15
15
  reUuid: options.reUuid,
16
16
  deps: options.deps
17
17
  });
18
+ if (!outcome) process.exitCode = 1;
18
19
  }
19
20
  // --all -a
20
21
  else if (options.all && options.file && (await getTokens())) {
21
22
  printMessage(`Importing all journeys from a single file (${options.file})...`);
22
- await importJourneysFromFile(options.file, {
23
+ const outcome = await importJourneysFromFile(options.file, {
23
24
  reUuid: options.reUuid,
24
25
  deps: options.deps
25
26
  });
27
+ if (!outcome) process.exitCode = 1;
26
28
  }
27
29
  // --all-separate -A
28
30
  else if (options.allSeparate && !options.file && (await getTokens())) {
29
31
  printMessage('Importing all journeys from separate files in current directory...');
30
- await importJourneysFromFiles({
32
+ const outcome = await importJourneysFromFiles({
31
33
  reUuid: options.reUuid,
32
34
  deps: options.deps
33
35
  });
36
+ if (!outcome) process.exitCode = 1;
34
37
  }
35
38
  // import first journey in file
36
39
  else if (options.file && (await getTokens())) {
37
40
  printMessage('Importing first journey in file...');
38
- await importFirstJourneyFromFile(options.file, {
41
+ const outcome = await importFirstJourneyFromFile(options.file, {
39
42
  reUuid: options.reUuid,
40
43
  deps: options.deps
41
44
  });
45
+ if (!outcome) process.exitCode = 1;
42
46
  }
43
47
  // unrecognized combination of options or no options
44
48
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"journey-import.js","names":["Option","getTokens","importFirstJourneyFromFile","importJourneyFromFile","importJourneysFromFile","importJourneysFromFiles","printMessage","FrodoCommand","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","journeyId","file","reUuid","deps","all","allSeparate","help","process","exitCode","parse"],"sources":["../../../src/cli/journey/journey-import.ts"],"sourcesContent":["import { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport {\n importFirstJourneyFromFile,\n importJourneyFromFile,\n importJourneysFromFile,\n importJourneysFromFiles,\n} from '../../ops/JourneyOps';\nimport { printMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo journey import');\n\nprogram\n .description('Import journey/tree.')\n .addOption(\n new Option(\n '-i, --journey-id <journey>',\n 'Name of a journey/tree. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-f, --file <file>',\n 'Name of the file to import the journey(s) from. Ignored with -A.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Import all the journeys/trees from single file. Ignored with -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all the journeys/trees from separate files (*.json) in the current directory. Ignored with -i or -a.'\n )\n )\n .addOption(\n new Option(\n '--re-uuid',\n 'Generate new UUIDs for all nodes during import.'\n ).default(false, 'off')\n )\n .addOption(\n new Option(\n '--no-deps',\n 'Do not include any dependencies (scripts, email templates, SAML entity providers and circles of trust, social identity providers, themes).'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // import\n if (options.journeyId && (await getTokens())) {\n printMessage(`Importing journey ${options.journeyId}...`);\n await importJourneyFromFile(options.journeyId, options.file, {\n reUuid: options.reUuid,\n deps: options.deps,\n });\n }\n // --all -a\n else if (options.all && options.file && (await getTokens())) {\n printMessage(\n `Importing all journeys from a single file (${options.file})...`\n );\n await importJourneysFromFile(options.file, {\n reUuid: options.reUuid,\n deps: options.deps,\n });\n }\n // --all-separate -A\n else if (options.allSeparate && !options.file && (await getTokens())) {\n printMessage(\n 'Importing all journeys from separate files in current directory...'\n );\n await importJourneysFromFiles({\n reUuid: options.reUuid,\n deps: options.deps,\n });\n }\n // import first journey in file\n else if (options.file && (await getTokens())) {\n printMessage('Importing first journey in file...');\n await importFirstJourneyFromFile(options.file, {\n reUuid: options.reUuid,\n deps: options.deps,\n });\n }\n // unrecognized combination of options or no options\n else {\n printMessage('Unrecognized combination of options or no options...');\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
1
+ {"version":3,"file":"journey-import.js","names":["Option","getTokens","importFirstJourneyFromFile","importJourneyFromFile","importJourneysFromFile","importJourneysFromFiles","printMessage","FrodoCommand","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","journeyId","outcome","file","reUuid","deps","process","exitCode","all","allSeparate","help","parse"],"sources":["../../../src/cli/journey/journey-import.ts"],"sourcesContent":["import { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport {\n importFirstJourneyFromFile,\n importJourneyFromFile,\n importJourneysFromFile,\n importJourneysFromFiles,\n} from '../../ops/JourneyOps';\nimport { printMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo journey import');\n\nprogram\n .description('Import journey/tree.')\n .addOption(\n new Option(\n '-i, --journey-id <journey>',\n 'Name of a journey/tree. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-f, --file <file>',\n 'Name of the file to import the journey(s) from. Ignored with -A.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Import all the journeys/trees from single file. Ignored with -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all the journeys/trees from separate files (*.json) in the current directory. Ignored with -i or -a.'\n )\n )\n .addOption(\n new Option(\n '--re-uuid',\n 'Generate new UUIDs for all nodes during import.'\n ).default(false, 'off')\n )\n .addOption(\n new Option(\n '--no-deps',\n 'Do not include any dependencies (scripts, email templates, SAML entity providers and circles of trust, social identity providers, themes).'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // import\n if (options.journeyId && (await getTokens())) {\n printMessage(`Importing journey ${options.journeyId}...`);\n const outcome = await importJourneyFromFile(\n options.journeyId,\n options.file,\n {\n reUuid: options.reUuid,\n deps: options.deps,\n }\n );\n if (!outcome) process.exitCode = 1;\n }\n // --all -a\n else if (options.all && options.file && (await getTokens())) {\n printMessage(\n `Importing all journeys from a single file (${options.file})...`\n );\n const outcome = await importJourneysFromFile(options.file, {\n reUuid: options.reUuid,\n deps: options.deps,\n });\n if (!outcome) process.exitCode = 1;\n }\n // --all-separate -A\n else if (options.allSeparate && !options.file && (await getTokens())) {\n printMessage(\n 'Importing all journeys from separate files in current directory...'\n );\n const outcome = await importJourneysFromFiles({\n reUuid: options.reUuid,\n deps: options.deps,\n });\n if (!outcome) process.exitCode = 1;\n }\n // import first journey in file\n else if (options.file && (await getTokens())) {\n printMessage('Importing first journey in file...');\n const outcome = await importFirstJourneyFromFile(options.file, {\n reUuid: options.reUuid,\n deps: options.deps,\n });\n if (!outcome) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n printMessage('Unrecognized combination of options or no options...');\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
@@ -11,7 +11,8 @@ async (host, realm, user, password, options, command) => {
11
11
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
12
12
  if (await getTokens()) {
13
13
  verboseMessage(`Listing journeys in realm "${state.getRealm()}"...`);
14
- await listJourneys(options.long, options.analyze);
14
+ const outcome = await listJourneys(options.long, options.analyze);
15
+ if (!outcome) process.exitCode = 1;
15
16
  } else {
16
17
  process.exitCode = 1;
17
18
  }