@rockcarver/frodo-cli 0.18.2-9 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +112 -1
- package/esm/app.js +4 -1
- package/esm/app.js.map +1 -1
- package/esm/cli/FrodoCommand.js +133 -0
- package/esm/cli/FrodoCommand.js.map +1 -0
- package/esm/cli/_template/something-delete.js +9 -15
- package/esm/cli/_template/something-delete.js.map +1 -1
- package/esm/cli/_template/something-describe.js +9 -15
- package/esm/cli/_template/something-describe.js.map +1 -1
- package/esm/cli/_template/something-else-delete.js +9 -15
- package/esm/cli/_template/something-else-delete.js.map +1 -1
- package/esm/cli/_template/something-else-describe.js +9 -15
- package/esm/cli/_template/something-else-describe.js.map +1 -1
- package/esm/cli/_template/something-else-export.js +9 -15
- package/esm/cli/_template/something-else-export.js.map +1 -1
- package/esm/cli/_template/something-else-import.js +9 -15
- package/esm/cli/_template/something-else-import.js.map +1 -1
- package/esm/cli/_template/something-else-list.js +9 -15
- package/esm/cli/_template/something-else-list.js.map +1 -1
- package/esm/cli/_template/something-else.js +8 -8
- package/esm/cli/_template/something-else.js.map +1 -1
- package/esm/cli/_template/something-export.js +9 -15
- package/esm/cli/_template/something-export.js.map +1 -1
- package/esm/cli/_template/something-import.js +9 -15
- package/esm/cli/_template/something-import.js.map +1 -1
- package/esm/cli/_template/something-list.js +9 -15
- package/esm/cli/_template/something-list.js.map +1 -1
- package/esm/cli/_template/something-other-delete.js +9 -15
- package/esm/cli/_template/something-other-delete.js.map +1 -1
- package/esm/cli/_template/something-other-describe.js +9 -15
- package/esm/cli/_template/something-other-describe.js.map +1 -1
- package/esm/cli/_template/something-other-export.js +9 -15
- package/esm/cli/_template/something-other-export.js.map +1 -1
- package/esm/cli/_template/something-other-import.js +9 -15
- package/esm/cli/_template/something-other-import.js.map +1 -1
- package/esm/cli/_template/something-other-list.js +9 -15
- package/esm/cli/_template/something-other-list.js.map +1 -1
- package/esm/cli/_template/something-other.js +8 -8
- package/esm/cli/_template/something-other.js.map +1 -1
- package/esm/cli/_template/something.js +9 -10
- package/esm/cli/_template/something.js.map +1 -1
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +8 -15
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +9 -15
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-get-access-token.js +9 -15
- package/esm/cli/admin/admin-get-access-token.js.map +1 -1
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +9 -15
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js +9 -15
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +8 -15
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +8 -15
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
- package/esm/cli/admin/admin-list-static-user-mappings.js +9 -15
- package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
- package/esm/cli/admin/admin-remove-static-user-mapping.js +8 -15
- package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-repair-org-model.js +9 -15
- package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +9 -15
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-show-generic-extension-attributes.js +9 -15
- package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
- package/esm/cli/admin/admin.js +14 -15
- package/esm/cli/admin/admin.js.map +1 -1
- package/esm/cli/agent/agent-delete.js +8 -15
- package/esm/cli/agent/agent-delete.js.map +1 -1
- package/esm/cli/agent/agent-describe.js +9 -15
- package/esm/cli/agent/agent-describe.js.map +1 -1
- package/esm/cli/agent/agent-export.js +8 -15
- package/esm/cli/agent/agent-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-delete.js +8 -15
- package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
- package/esm/cli/agent/agent-gateway-describe.js +9 -15
- package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
- package/esm/cli/agent/agent-gateway-export.js +8 -15
- package/esm/cli/agent/agent-gateway-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-import.js +8 -15
- package/esm/cli/agent/agent-gateway-import.js.map +1 -1
- package/esm/cli/agent/agent-gateway-list.js +9 -15
- package/esm/cli/agent/agent-gateway-list.js.map +1 -1
- package/esm/cli/agent/agent-gateway.js +8 -8
- package/esm/cli/agent/agent-gateway.js.map +1 -1
- package/esm/cli/agent/agent-import.js +8 -15
- package/esm/cli/agent/agent-import.js.map +1 -1
- package/esm/cli/agent/agent-java-delete.js +8 -15
- package/esm/cli/agent/agent-java-delete.js.map +1 -1
- package/esm/cli/agent/agent-java-describe.js +9 -15
- package/esm/cli/agent/agent-java-describe.js.map +1 -1
- package/esm/cli/agent/agent-java-export.js +8 -15
- package/esm/cli/agent/agent-java-export.js.map +1 -1
- package/esm/cli/agent/agent-java-import.js +8 -15
- package/esm/cli/agent/agent-java-import.js.map +1 -1
- package/esm/cli/agent/agent-java-list.js +9 -15
- package/esm/cli/agent/agent-java-list.js.map +1 -1
- package/esm/cli/agent/agent-java.js +8 -8
- package/esm/cli/agent/agent-java.js.map +1 -1
- package/esm/cli/agent/agent-list.js +9 -15
- package/esm/cli/agent/agent-list.js.map +1 -1
- package/esm/cli/agent/agent-web-delete.js +8 -15
- package/esm/cli/agent/agent-web-delete.js.map +1 -1
- package/esm/cli/agent/agent-web-describe.js +9 -15
- package/esm/cli/agent/agent-web-describe.js.map +1 -1
- package/esm/cli/agent/agent-web-export.js +8 -15
- package/esm/cli/agent/agent-web-export.js.map +1 -1
- package/esm/cli/agent/agent-web-import.js +8 -15
- package/esm/cli/agent/agent-web-import.js.map +1 -1
- package/esm/cli/agent/agent-web-list.js +9 -15
- package/esm/cli/agent/agent-web-list.js.map +1 -1
- package/esm/cli/agent/agent-web.js +8 -8
- package/esm/cli/agent/agent-web.js.map +1 -1
- package/esm/cli/agent/agent.js +10 -11
- package/esm/cli/agent/agent.js.map +1 -1
- package/esm/cli/app/app-delete.js +9 -12
- package/esm/cli/app/app-delete.js.map +1 -1
- package/esm/cli/app/app-describe.js +9 -12
- package/esm/cli/app/app-describe.js.map +1 -1
- package/esm/cli/app/app-export.js +28 -34
- package/esm/cli/app/app-export.js.map +1 -1
- package/esm/cli/app/app-import.js +11 -14
- package/esm/cli/app/app-import.js.map +1 -1
- package/esm/cli/app/app-list.js +11 -14
- package/esm/cli/app/app-list.js.map +1 -1
- package/esm/cli/app/app.js +8 -10
- package/esm/cli/app/app.js.map +1 -1
- package/esm/cli/conn/conn-delete.js +5 -5
- package/esm/cli/conn/conn-delete.js.map +1 -1
- package/esm/cli/conn/conn-describe.js +6 -5
- package/esm/cli/conn/conn-describe.js.map +1 -1
- package/esm/cli/conn/conn-list.js +6 -8
- package/esm/cli/conn/conn-list.js.map +1 -1
- package/esm/cli/conn/conn-save.js +72 -0
- package/esm/cli/conn/conn-save.js.map +1 -0
- package/esm/cli/conn/conn.js +10 -8
- package/esm/cli/conn/conn.js.map +1 -1
- package/esm/cli/email/email-template-export.js +27 -33
- package/esm/cli/email/email-template-export.js.map +1 -1
- package/esm/cli/email/email-template-import.js +33 -39
- package/esm/cli/email/email-template-import.js.map +1 -1
- package/esm/cli/email/email-template-list.js +11 -14
- package/esm/cli/email/email-template-list.js.map +1 -1
- package/esm/cli/email/email-template.js +6 -6
- package/esm/cli/email/email-template.js.map +1 -1
- package/esm/cli/email/email.js +2 -2
- package/esm/cli/email/email.js.map +1 -1
- package/esm/cli/esv/esv-apply.js +9 -12
- package/esm/cli/esv/esv-apply.js.map +1 -1
- package/esm/cli/esv/esv-secret-create.js +11 -14
- package/esm/cli/esv/esv-secret-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-delete.js +23 -29
- package/esm/cli/esv/esv-secret-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-describe.js +11 -14
- package/esm/cli/esv/esv-secret-describe.js.map +1 -1
- package/esm/cli/esv/esv-secret-export.js +9 -12
- package/esm/cli/esv/esv-secret-export.js.map +1 -1
- package/esm/cli/esv/esv-secret-import.js +9 -12
- package/esm/cli/esv/esv-secret-import.js.map +1 -1
- package/esm/cli/esv/esv-secret-list.js +11 -14
- package/esm/cli/esv/esv-secret-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-set.js +11 -14
- package/esm/cli/esv/esv-secret-set.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-activate.js +18 -24
- package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-create.js +11 -14
- package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-deactivate.js +18 -24
- package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-delete.js +23 -29
- package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-list.js +11 -14
- package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-version.js +8 -8
- package/esm/cli/esv/esv-secret-version.js.map +1 -1
- package/esm/cli/esv/esv-secret.js +11 -11
- package/esm/cli/esv/esv-secret.js.map +1 -1
- package/esm/cli/esv/esv-variable-create.js +10 -14
- package/esm/cli/esv/esv-variable-create.js.map +1 -1
- package/esm/cli/esv/esv-variable-delete.js +23 -29
- package/esm/cli/esv/esv-variable-delete.js.map +1 -1
- package/esm/cli/esv/esv-variable-describe.js +11 -14
- package/esm/cli/esv/esv-variable-describe.js.map +1 -1
- package/esm/cli/esv/esv-variable-export.js +9 -12
- package/esm/cli/esv/esv-variable-export.js.map +1 -1
- package/esm/cli/esv/esv-variable-import.js +9 -12
- package/esm/cli/esv/esv-variable-import.js.map +1 -1
- package/esm/cli/esv/esv-variable-list.js +11 -14
- package/esm/cli/esv/esv-variable-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-set.js +19 -26
- package/esm/cli/esv/esv-variable-set.js.map +1 -1
- package/esm/cli/esv/esv-variable.js +10 -10
- package/esm/cli/esv/esv-variable.js.map +1 -1
- package/esm/cli/esv/esv.js +5 -6
- package/esm/cli/esv/esv.js.map +1 -1
- package/esm/cli/idm/idm-count.js +12 -17
- package/esm/cli/idm/idm-count.js.map +1 -1
- package/esm/cli/idm/idm-export.js +29 -39
- package/esm/cli/idm/idm-export.js.map +1 -1
- package/esm/cli/idm/idm-import.js +29 -39
- package/esm/cli/idm/idm-import.js.map +1 -1
- package/esm/cli/idm/idm-list.js +11 -17
- package/esm/cli/idm/idm-list.js.map +1 -1
- package/esm/cli/idm/idm.js +6 -9
- package/esm/cli/idm/idm.js.map +1 -1
- package/esm/cli/idp/idp-export.js +11 -15
- package/esm/cli/idp/idp-export.js.map +1 -1
- package/esm/cli/idp/idp-import.js +32 -38
- package/esm/cli/idp/idp-import.js.map +1 -1
- package/esm/cli/idp/idp-list.js +9 -13
- package/esm/cli/idp/idp-list.js.map +1 -1
- package/esm/cli/idp/idp.js +5 -6
- package/esm/cli/idp/idp.js.map +1 -1
- package/esm/cli/info/info.js +19 -20
- package/esm/cli/info/info.js.map +1 -1
- package/esm/cli/journey/journey-delete.js +22 -28
- package/esm/cli/journey/journey-delete.js.map +1 -1
- package/esm/cli/journey/journey-describe.js +12 -19
- package/esm/cli/journey/journey-describe.js.map +1 -1
- package/esm/cli/journey/journey-disable.js +20 -26
- package/esm/cli/journey/journey-disable.js.map +1 -1
- package/esm/cli/journey/journey-enable.js +20 -26
- package/esm/cli/journey/journey-enable.js.map +1 -1
- package/esm/cli/journey/journey-export.js +37 -45
- package/esm/cli/journey/journey-export.js.map +1 -1
- package/esm/cli/journey/journey-import.js +44 -52
- package/esm/cli/journey/journey-import.js.map +1 -1
- package/esm/cli/journey/journey-list.js +10 -13
- package/esm/cli/journey/journey-list.js.map +1 -1
- package/esm/cli/journey/journey-prune.js +9 -13
- package/esm/cli/journey/journey-prune.js.map +1 -1
- package/esm/cli/journey/journey.js +10 -11
- package/esm/cli/journey/journey.js.map +1 -1
- package/esm/cli/logging/logs-fetch.js +17 -19
- package/esm/cli/logging/logs-fetch.js.map +1 -1
- package/esm/cli/logging/logs-list.js +19 -25
- package/esm/cli/logging/logs-list.js.map +1 -1
- package/esm/cli/logging/logs-tail.js +17 -19
- package/esm/cli/logging/logs-tail.js.map +1 -1
- package/esm/cli/logging/logs.js +7 -6
- package/esm/cli/logging/logs.js.map +1 -1
- package/esm/cli/realm/realm-add-custom-domain.js +11 -14
- package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm-describe.js +10 -14
- package/esm/cli/realm/realm-describe.js.map +1 -1
- package/esm/cli/realm/realm-list.js +11 -14
- package/esm/cli/realm/realm-list.js.map +1 -1
- package/esm/cli/realm/realm-remove-custom-domain.js +11 -14
- package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm.js +7 -8
- package/esm/cli/realm/realm.js.map +1 -1
- package/esm/cli/saml/saml-cot-export.js +27 -36
- package/esm/cli/saml/saml-cot-export.js.map +1 -1
- package/esm/cli/saml/saml-cot-import.js +32 -41
- package/esm/cli/saml/saml-cot-import.js.map +1 -1
- package/esm/cli/saml/saml-cot-list.js +10 -16
- package/esm/cli/saml/saml-cot-list.js.map +1 -1
- package/esm/cli/saml/saml-cot.js +6 -6
- package/esm/cli/saml/saml-cot.js.map +1 -1
- package/esm/cli/saml/saml-delete.js +8 -15
- package/esm/cli/saml/saml-delete.js.map +1 -1
- package/esm/cli/saml/saml-describe.js +10 -16
- package/esm/cli/saml/saml-describe.js.map +1 -1
- package/esm/cli/saml/saml-export.js +9 -16
- package/esm/cli/saml/saml-export.js.map +1 -1
- package/esm/cli/saml/saml-import.js +45 -54
- package/esm/cli/saml/saml-import.js.map +1 -1
- package/esm/cli/saml/saml-list.js +11 -17
- package/esm/cli/saml/saml-list.js.map +1 -1
- package/esm/cli/saml/saml-metadata-export.js +21 -30
- package/esm/cli/saml/saml-metadata-export.js.map +1 -1
- package/esm/cli/saml/saml-metadata.js +4 -4
- package/esm/cli/saml/saml-metadata.js.map +1 -1
- package/esm/cli/saml/saml.js +9 -10
- package/esm/cli/saml/saml.js.map +1 -1
- package/esm/cli/script/script-delete.js +9 -12
- package/esm/cli/script/script-delete.js.map +1 -1
- package/esm/cli/script/script-describe.js +9 -12
- package/esm/cli/script/script-describe.js.map +1 -1
- package/esm/cli/script/script-export.js +28 -34
- package/esm/cli/script/script-export.js.map +1 -1
- package/esm/cli/script/script-import.js +10 -13
- package/esm/cli/script/script-import.js.map +1 -1
- package/esm/cli/script/script-list.js +10 -13
- package/esm/cli/script/script-list.js.map +1 -1
- package/esm/cli/script/script.js +7 -8
- package/esm/cli/script/script.js.map +1 -1
- package/esm/cli/service/service-delete.js +10 -16
- package/esm/cli/service/service-delete.js.map +1 -1
- package/esm/cli/service/service-export.js +12 -17
- package/esm/cli/service/service-export.js.map +1 -1
- package/esm/cli/service/service-import.js +12 -18
- package/esm/cli/service/service-import.js.map +1 -1
- package/esm/cli/service/service-list.js +9 -15
- package/esm/cli/service/service-list.js.map +1 -1
- package/esm/cli/service/service.js +6 -7
- package/esm/cli/service/service.js.map +1 -1
- package/esm/cli/theme/theme-delete.js +12 -19
- package/esm/cli/theme/theme-delete.js.map +1 -1
- package/esm/cli/theme/theme-export.js +12 -19
- package/esm/cli/theme/theme-export.js.map +1 -1
- package/esm/cli/theme/theme-import.js +14 -21
- package/esm/cli/theme/theme-import.js.map +1 -1
- package/esm/cli/theme/theme-list.js +10 -16
- package/esm/cli/theme/theme-list.js.map +1 -1
- package/esm/cli/theme/theme.js +6 -7
- package/esm/cli/theme/theme.js.map +1 -1
- package/esm/ops/ConnectionProfileOps.js +30 -0
- package/esm/ops/ConnectionProfileOps.js.map +1 -0
- package/esm/ops/IdmOps.js +317 -0
- package/esm/ops/IdmOps.js.map +1 -0
- package/esm/ops/JourneyOps.js +2 -1
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/ServiceOps.js +20 -20
- package/esm/ops/ServiceOps.js.map +1 -1
- package/esm/utils/Console.js +15 -25
- package/esm/utils/Console.js.map +1 -1
- package/package.json +6 -6
- package/esm/cli/cmd_common.js +0 -79
- package/esm/cli/cmd_common.js.map +0 -1
- package/esm/cli/conn/conn-add.js +0 -37
- package/esm/cli/conn/conn-add.js.map +0 -1
- package/esm/cli/journey/journey-delete.e2e.test_.js.map +0 -1
- package/esm/cli/journey/journey-list.e2e.test_.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,97 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.19.0] - 2022-12-18
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- \#154: Allow all connection parameters to be supplied using environment variables for secure CI/CD:
|
|
15
|
+
- `FRODO_HOST`
|
|
16
|
+
- `FRODO_REALM`
|
|
17
|
+
- `FRODO_USERNAME`
|
|
18
|
+
- `FRODO_PASSWORD`
|
|
19
|
+
- `FRODO_SA_ID`
|
|
20
|
+
- `FRODO_SA_JWK`
|
|
21
|
+
- `FRODO_LOG_KEY`
|
|
22
|
+
- `FRODO_LOG_SECRET`
|
|
23
|
+
- `FRODO_DEBUG` - set to any value to enable debug logging, e.g. `FRODO_DEBUG=1 frodo info tenant-name`
|
|
24
|
+
- \#143: Support Identity Cloud Service Accounts in `frodo conn save|add` command
|
|
25
|
+
1. The `frodo conn add` command is renamed to `frodo conn save` and `add` is added as an alias for backwards compatibility.
|
|
26
|
+
2. The `frodo conn save` command supports the following new options to manage service accounts:
|
|
27
|
+
1. `--sa-id <uuid>` Service account's uuid. If specified, must also include `--sa-jwk-file`. Ignored with `--no-sa`.
|
|
28
|
+
2. `--sa-jwk-file <file>` File containing the service account's java web key (jwk). Jwk must contain private key! If specified, must also include `--sa-id`. Ignored with `--no-sa`.
|
|
29
|
+
3. `--no-sa` Do not add service account.
|
|
30
|
+
3. The existing `--no-validate` option also applies to service account operations, allowing to add service account configuration to a connection profile without validating it, typical use case is an offline situation.
|
|
31
|
+
4. The `frodo conn save` command automatically creates a new service account and adds it to an existing ID Cloud profile without service account or to a new ID Cloud profile. It does not do that if the `--no-sa` option is supplied.
|
|
32
|
+
1. If `--sa-id` and `--sa-jwk-file` are supplied, `frodo conn save` adds the existing service account specified by those two parameters to the profile instead of creating a new service account.
|
|
33
|
+
2. The `frodo conn save` command checks if the ID Cloud tenant supports service accounts before performing any service account operations.
|
|
34
|
+
5. The `frodo conn save` command validates service account configuration unless the `--no-validate` options is supplied.
|
|
35
|
+
- \#101: Added new `frodo service` set of commands to manage AM realm services (`baseurl`, `DataStoreService`, `oauth-oidc`, `policyconfiguration`, `selfServiceTrees`, `SocialIdentityProviders`, `validation`, etc.) and global services (e.g. `CorsService`, `dashboard`, etc.).
|
|
36
|
+
frodo service
|
|
37
|
+
delete Delete AM services.
|
|
38
|
+
export Export AM services.
|
|
39
|
+
import Import AM services.
|
|
40
|
+
list List AM services.
|
|
41
|
+
- Added new `frodo idm import` command.
|
|
42
|
+
- \#98: Add support for Agents / Gateways
|
|
43
|
+
frodo agent Manage agents.
|
|
44
|
+
delete Delete agents of any type.
|
|
45
|
+
describe Describe agents of any type.
|
|
46
|
+
export Export agents of any type.
|
|
47
|
+
import Import agents of any type.
|
|
48
|
+
list List agents of any type.
|
|
49
|
+
gateway Manage gateway agents.
|
|
50
|
+
delete Delete gateway agents.
|
|
51
|
+
describe Describe gateway agents.
|
|
52
|
+
export Export gateway agents.
|
|
53
|
+
import Import gateway agents.
|
|
54
|
+
list List gateway agents.
|
|
55
|
+
java Manage java agents.
|
|
56
|
+
delete Delete java agents.
|
|
57
|
+
describe Describe java agents.
|
|
58
|
+
export Export java agents.
|
|
59
|
+
import Import java agents.
|
|
60
|
+
list List java agents.
|
|
61
|
+
web Manage web agents.
|
|
62
|
+
delete Delete web agents.
|
|
63
|
+
describe Describe web agents.
|
|
64
|
+
export Export web agents.
|
|
65
|
+
import Import web agents.
|
|
66
|
+
list List web agents.
|
|
67
|
+
- Added `--raw` option to `frodo saml import` and `frodo saml export` commands. The new option uses the classic (pre 7.0.0) SAML REST APIs. This allows Frodo to export and import SAML entity providers from pre 7 platform instances.
|
|
68
|
+
- New default options `--verbose`, `--debug`, and `--curlirize` for all commands
|
|
69
|
+
|
|
70
|
+
### Changed
|
|
71
|
+
|
|
72
|
+
- Updated to frodo-lib 0.17.0
|
|
73
|
+
- \#110: Migrate from .frodorc to Connections.json
|
|
74
|
+
- Ongoing refactoring of code base:
|
|
75
|
+
- Refactored Email Template and Theme functionality in lib to remove fs operations
|
|
76
|
+
- \#93: Move cli functions from frodo-lib to frodo-cli
|
|
77
|
+
- More automated testing
|
|
78
|
+
|
|
79
|
+
### Fixed
|
|
80
|
+
|
|
81
|
+
-
|
|
82
|
+
|
|
83
|
+
## [0.18.2-18] - 2022-12-17
|
|
84
|
+
|
|
85
|
+
## [0.18.2-17] - 2022-12-14
|
|
86
|
+
|
|
87
|
+
## [0.18.2-16] - 2022-12-14
|
|
88
|
+
|
|
89
|
+
## [0.18.2-15] - 2022-12-12
|
|
90
|
+
|
|
91
|
+
## [0.18.2-14] - 2022-12-10
|
|
92
|
+
|
|
93
|
+
## [0.18.2-13] - 2022-12-01
|
|
94
|
+
|
|
95
|
+
## [0.18.2-12] - 2022-11-29
|
|
96
|
+
|
|
97
|
+
## [0.18.2-11] - 2022-11-26
|
|
98
|
+
|
|
99
|
+
## [0.18.2-10] - 2022-11-23
|
|
100
|
+
|
|
10
101
|
## [0.18.2-9] - 2022-11-22
|
|
11
102
|
|
|
12
103
|
- \#110: Migrate from .frodorc to Connections.json
|
|
@@ -732,7 +823,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
732
823
|
- Fixed problem with adding connection profiles
|
|
733
824
|
- Miscellaneous bug fixes
|
|
734
825
|
|
|
735
|
-
[Unreleased]: https://github.com/rockcarver/frodo-cli/compare/v0.
|
|
826
|
+
[Unreleased]: https://github.com/rockcarver/frodo-cli/compare/v0.19.0...HEAD
|
|
827
|
+
|
|
828
|
+
[0.19.0]: https://github.com/rockcarver/frodo-cli/compare/v0.18.2-18...v0.19.0
|
|
829
|
+
|
|
830
|
+
[0.18.2-18]: https://github.com/rockcarver/frodo-cli/compare/v0.18.2-17...v0.18.2-18
|
|
831
|
+
|
|
832
|
+
[0.18.2-17]: https://github.com/rockcarver/frodo-cli/compare/v0.18.2-16...v0.18.2-17
|
|
833
|
+
|
|
834
|
+
[0.18.2-16]: https://github.com/rockcarver/frodo-cli/compare/v0.18.2-15...v0.18.2-16
|
|
835
|
+
|
|
836
|
+
[0.18.2-15]: https://github.com/rockcarver/frodo-cli/compare/v0.18.2-14...v0.18.2-15
|
|
837
|
+
|
|
838
|
+
[0.18.2-14]: https://github.com/rockcarver/frodo-cli/compare/v0.18.2-13...v0.18.2-14
|
|
839
|
+
|
|
840
|
+
[0.18.2-13]: https://github.com/rockcarver/frodo-cli/compare/v0.18.2-12...v0.18.2-13
|
|
841
|
+
|
|
842
|
+
[0.18.2-12]: https://github.com/rockcarver/frodo-cli/compare/v0.18.2-11...v0.18.2-12
|
|
843
|
+
|
|
844
|
+
[0.18.2-11]: https://github.com/rockcarver/frodo-cli/compare/v0.18.2-10...v0.18.2-11
|
|
845
|
+
|
|
846
|
+
[0.18.2-10]: https://github.com/rockcarver/frodo-cli/compare/v0.18.2-9...v0.18.2-10
|
|
736
847
|
|
|
737
848
|
[0.18.2-9]: https://github.com/rockcarver/frodo-cli/compare/v0.18.2-8...v0.18.2-9
|
|
738
849
|
|
package/esm/app.js
CHANGED
|
@@ -28,7 +28,7 @@ const {
|
|
|
28
28
|
try {
|
|
29
29
|
const program = new Command('frodo').version(await getVersions(false), '-v, --version');
|
|
30
30
|
printMessage(await getVersions(true), 'text', false);
|
|
31
|
-
initConnectionProfiles();
|
|
31
|
+
await initConnectionProfiles();
|
|
32
32
|
program.addCommand(admin());
|
|
33
33
|
program.addCommand(agent());
|
|
34
34
|
program.addCommand(app());
|
|
@@ -45,6 +45,9 @@ const {
|
|
|
45
45
|
program.addCommand(script());
|
|
46
46
|
program.addCommand(service());
|
|
47
47
|
program.addCommand(theme());
|
|
48
|
+
// enable sample command template.
|
|
49
|
+
// program.addCommand(something());
|
|
50
|
+
|
|
48
51
|
program.showHelpAfterError();
|
|
49
52
|
program.enablePositionalOptions();
|
|
50
53
|
program.parse();
|
package/esm/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","names":["ConnectionProfile","Command","admin","agent","app","conn","email","esv","idm","idp","info","journey","logging","realm","saml","script","service","theme","printMessage","getVersions","initConnectionProfiles","program","version","addCommand","showHelpAfterError","enablePositionalOptions","parse","e"],"sources":["app.ts"],"sourcesContent":["#!/usr/bin/env -S node --no-warnings --enable-source-maps --experimental-specifier-resolution=node\n\nimport { ConnectionProfile } from '@rockcarver/frodo-lib';\nimport { Command } from 'commander';\n\n// commands\nimport admin from './cli/admin/admin';\nimport agent from './cli/agent/agent';\nimport app from './cli/app/app';\nimport conn from './cli/conn/conn';\nimport email from './cli/email/email';\nimport esv from './cli/esv/esv';\nimport idm from './cli/idm/idm';\nimport idp from './cli/idp/idp';\nimport info from './cli/info/info';\nimport journey from './cli/journey/journey';\nimport logging from './cli/logging/logs';\nimport realm from './cli/realm/realm';\nimport saml from './cli/saml/saml';\nimport script from './cli/script/script';\nimport service from './cli/service/service';\nimport theme from './cli/theme/theme';\nimport { printMessage } from './utils/Console';\nimport { getVersions } from './utils/Version';\n\nconst { initConnectionProfiles } = ConnectionProfile;\n\n(async () => {\n try {\n const program = new Command('frodo').version(\n await getVersions(false),\n '-v, --version'\n );\n\n printMessage(await getVersions(true), 'text', false);\n\n initConnectionProfiles();\n\n program.addCommand(admin());\n program.addCommand(agent());\n program.addCommand(app());\n program.addCommand(conn());\n program.addCommand(email());\n program.addCommand(esv());\n program.addCommand(idm());\n program.addCommand(idp());\n program.addCommand(info());\n program.addCommand(journey());\n program.addCommand(logging());\n program.addCommand(realm());\n program.addCommand(saml());\n program.addCommand(script());\n program.addCommand(service());\n program.addCommand(theme());\n\n program.showHelpAfterError();\n program.enablePositionalOptions();\n program.parse();\n } catch (e) {\n printMessage(`ERROR: exception running frodo - ${e}`, 'error');\n }\n})();\n"],"mappings":"AAAA;AAEA,SAASA,iBAAiB,QAAQ,uBAAuB;AACzD,SAASC,OAAO,QAAQ,WAAW;;AAEnC;AACA,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,OAAO,MAAM,uBAAuB;AAC3C,OAAOC,OAAO,MAAM,oBAAoB;AACxC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,MAAM,MAAM,qBAAqB;AACxC,OAAOC,OAAO,MAAM,uBAAuB;
|
|
1
|
+
{"version":3,"file":"app.js","names":["ConnectionProfile","Command","admin","agent","app","conn","email","esv","idm","idp","info","journey","logging","realm","saml","script","service","theme","printMessage","getVersions","initConnectionProfiles","program","version","addCommand","showHelpAfterError","enablePositionalOptions","parse","e"],"sources":["app.ts"],"sourcesContent":["#!/usr/bin/env -S node --no-warnings --enable-source-maps --experimental-specifier-resolution=node\n\nimport { ConnectionProfile } from '@rockcarver/frodo-lib';\nimport { Command } from 'commander';\n\n// commands\nimport admin from './cli/admin/admin';\nimport agent from './cli/agent/agent';\nimport app from './cli/app/app';\nimport conn from './cli/conn/conn';\nimport email from './cli/email/email';\nimport esv from './cli/esv/esv';\nimport idm from './cli/idm/idm';\nimport idp from './cli/idp/idp';\nimport info from './cli/info/info';\nimport journey from './cli/journey/journey';\nimport logging from './cli/logging/logs';\nimport realm from './cli/realm/realm';\nimport saml from './cli/saml/saml';\nimport script from './cli/script/script';\nimport service from './cli/service/service';\nimport something from './cli/_template/something';\nimport theme from './cli/theme/theme';\nimport { printMessage } from './utils/Console';\nimport { getVersions } from './utils/Version';\n\nconst { initConnectionProfiles } = ConnectionProfile;\n\n(async () => {\n try {\n const program = new Command('frodo').version(\n await getVersions(false),\n '-v, --version'\n );\n\n printMessage(await getVersions(true), 'text', false);\n\n await initConnectionProfiles();\n\n program.addCommand(admin());\n program.addCommand(agent());\n program.addCommand(app());\n program.addCommand(conn());\n program.addCommand(email());\n program.addCommand(esv());\n program.addCommand(idm());\n program.addCommand(idp());\n program.addCommand(info());\n program.addCommand(journey());\n program.addCommand(logging());\n program.addCommand(realm());\n program.addCommand(saml());\n program.addCommand(script());\n program.addCommand(service());\n program.addCommand(theme());\n // enable sample command template.\n // program.addCommand(something());\n\n program.showHelpAfterError();\n program.enablePositionalOptions();\n program.parse();\n } catch (e) {\n printMessage(`ERROR: exception running frodo - ${e}`, 'error');\n }\n})();\n"],"mappings":"AAAA;AAEA,SAASA,iBAAiB,QAAQ,uBAAuB;AACzD,SAASC,OAAO,QAAQ,WAAW;;AAEnC;AACA,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,OAAO,MAAM,uBAAuB;AAC3C,OAAOC,OAAO,MAAM,oBAAoB;AACxC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,MAAM,MAAM,qBAAqB;AACxC,OAAOC,OAAO,MAAM,uBAAuB;AAE3C,OAAOC,KAAK,MAAM,mBAAmB;AACrC,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,WAAW,QAAQ,iBAAiB;AAE7C,MAAM;EAAEC;AAAuB,CAAC,GAAGpB,iBAAiB;AAEpD,CAAC,YAAY;EACX,IAAI;IACF,MAAMqB,OAAO,GAAG,IAAIpB,OAAO,CAAC,OAAO,CAAC,CAACqB,OAAO,CAC1C,MAAMH,WAAW,CAAC,KAAK,CAAC,EACxB,eAAe,CAChB;IAEDD,YAAY,CAAC,MAAMC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC;IAEpD,MAAMC,sBAAsB,EAAE;IAE9BC,OAAO,CAACE,UAAU,CAACrB,KAAK,EAAE,CAAC;IAC3BmB,OAAO,CAACE,UAAU,CAACpB,KAAK,EAAE,CAAC;IAC3BkB,OAAO,CAACE,UAAU,CAACnB,GAAG,EAAE,CAAC;IACzBiB,OAAO,CAACE,UAAU,CAAClB,IAAI,EAAE,CAAC;IAC1BgB,OAAO,CAACE,UAAU,CAACjB,KAAK,EAAE,CAAC;IAC3Be,OAAO,CAACE,UAAU,CAAChB,GAAG,EAAE,CAAC;IACzBc,OAAO,CAACE,UAAU,CAACf,GAAG,EAAE,CAAC;IACzBa,OAAO,CAACE,UAAU,CAACd,GAAG,EAAE,CAAC;IACzBY,OAAO,CAACE,UAAU,CAACb,IAAI,EAAE,CAAC;IAC1BW,OAAO,CAACE,UAAU,CAACZ,OAAO,EAAE,CAAC;IAC7BU,OAAO,CAACE,UAAU,CAACX,OAAO,EAAE,CAAC;IAC7BS,OAAO,CAACE,UAAU,CAACV,KAAK,EAAE,CAAC;IAC3BQ,OAAO,CAACE,UAAU,CAACT,IAAI,EAAE,CAAC;IAC1BO,OAAO,CAACE,UAAU,CAACR,MAAM,EAAE,CAAC;IAC5BM,OAAO,CAACE,UAAU,CAACP,OAAO,EAAE,CAAC;IAC7BK,OAAO,CAACE,UAAU,CAACN,KAAK,EAAE,CAAC;IAC3B;IACA;;IAEAI,OAAO,CAACG,kBAAkB,EAAE;IAC5BH,OAAO,CAACI,uBAAuB,EAAE;IACjCJ,OAAO,CAACK,KAAK,EAAE;EACjB,CAAC,CAAC,OAAOC,CAAC,EAAE;IACVT,YAAY,CAAE,oCAAmCS,CAAE,EAAC,EAAE,OAAO,CAAC;EAChE;AACF,CAAC,GAAG"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { Argument, Command, Option } from 'commander';
|
|
2
|
+
import * as globalConfig from '../storage/StaticStorage';
|
|
3
|
+
import { state } from '@rockcarver/frodo-lib';
|
|
4
|
+
import fs from 'fs';
|
|
5
|
+
import { printMessage, createProgressIndicator, updateProgressIndicator, stopProgressIndicator, verboseMessage, debugMessage, curlirizeMessage } from '../utils/Console.js';
|
|
6
|
+
const hostArgument = new Argument('[host]', 'Access Management base URL, e.g.: https://cdk.iam.example.com/am. To use a connection profile, just specify a unique substring.');
|
|
7
|
+
const realmArgument = new Argument('[realm]', "Realm. Specify realm as '/' for the root realm or 'realm' or '/parent/child' otherwise.").default(
|
|
8
|
+
// must check for FRODO_REALM env variable here because otherwise cli will overwrite realm with default value
|
|
9
|
+
process.env.FRODO_REALM || globalConfig.DEFAULT_REALM_KEY, '"alpha" for Identity Cloud tenants, "/" otherwise.');
|
|
10
|
+
const usernameArgument = new Argument('[username]', 'Username to login with. Must be an admin user with appropriate rights to manage authentication journeys/trees.');
|
|
11
|
+
const passwordArgument = new Argument('[password]', 'Password.');
|
|
12
|
+
const serviceAccountIdOption = new Option('--sa-id <sa-id>', 'Service account id.');
|
|
13
|
+
const serviceAccountJwkFileOption = new Option('--sa-jwk-file <file>', 'File containing the java web key (jwk) associated with the the service account.');
|
|
14
|
+
const deploymentOption = new Option('-m, --type <type>', 'Override auto-detected deployment type. Valid values for type: \n\
|
|
15
|
+
classic: A classic Access Management-only deployment with custom layout and configuration. \n\
|
|
16
|
+
cloud: A ForgeRock Identity Cloud environment. \n\
|
|
17
|
+
forgeops: A ForgeOps CDK or CDM deployment. \n\
|
|
18
|
+
The detected or provided deployment type controls certain behavior like obtaining an Identity \
|
|
19
|
+
Management admin token or not and whether to export/import referenced email templates or how \
|
|
20
|
+
to walk through the tenant admin login flow of Identity Cloud and handle MFA').choices(globalConfig.DEPLOYMENT_TYPES);
|
|
21
|
+
const insecureOption = new Option('-k, --insecure', 'Allow insecure connections when using SSL/TLS. Has no effect when using a network proxy for https (HTTPS_PROXY=http://<host>:<port>), in that case the proxy must provide this capability.').default(false, "Don't allow insecure connections");
|
|
22
|
+
const verboseOption = new Option('--verbose', 'Verbose output during command execution. If specified, may or may not produce additional output.');
|
|
23
|
+
const debugOption = new Option('--debug', 'Debug output during command execution. If specified, may or may not produce additional output helpful for troubleshooting.');
|
|
24
|
+
const curlirizeOption = new Option('--curlirize', 'Output all network calls in curl format.');
|
|
25
|
+
const defaultArgs = [hostArgument, realmArgument, usernameArgument, passwordArgument];
|
|
26
|
+
const defaultOpts = [serviceAccountIdOption, serviceAccountJwkFileOption, deploymentOption, insecureOption, verboseOption, debugOption, curlirizeOption];
|
|
27
|
+
const stateMap = {
|
|
28
|
+
[hostArgument.name()]: state.setHost,
|
|
29
|
+
[realmArgument.name()]: state.setRealm,
|
|
30
|
+
[usernameArgument.name()]: state.setUsername,
|
|
31
|
+
[passwordArgument.name()]: state.setPassword,
|
|
32
|
+
[serviceAccountIdOption.attributeName()]: state.setServiceAccountId,
|
|
33
|
+
[serviceAccountJwkFileOption.attributeName()]: file => {
|
|
34
|
+
try {
|
|
35
|
+
const data = fs.readFileSync(file);
|
|
36
|
+
const jwk = JSON.parse(data.toString());
|
|
37
|
+
state.setServiceAccountJwk(jwk);
|
|
38
|
+
} catch (error) {
|
|
39
|
+
printMessage(`Error parsing JWK from file ${file}: ${error.message}`, 'error');
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
[deploymentOption.attributeName()]: state.setDeploymentType,
|
|
43
|
+
[insecureOption.attributeName()]: state.setAllowInsecureConnection,
|
|
44
|
+
[verboseOption.attributeName()]: state.setVerbose,
|
|
45
|
+
[debugOption.attributeName()]: state.setDebug,
|
|
46
|
+
[curlirizeOption.attributeName()]: state.setCurlirize
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Command with default options
|
|
51
|
+
*/
|
|
52
|
+
export class FrodoStubCommand extends Command {
|
|
53
|
+
/**
|
|
54
|
+
* Creates a new FrodoCommand instance
|
|
55
|
+
* @param name Name of the command
|
|
56
|
+
* @param omits Array of default argument names and default option names that should not be added to this command
|
|
57
|
+
*/
|
|
58
|
+
constructor(name) {
|
|
59
|
+
super(name);
|
|
60
|
+
|
|
61
|
+
// other default settings
|
|
62
|
+
this.helpOption('-h, --help', 'Help');
|
|
63
|
+
this.showHelpAfterError();
|
|
64
|
+
this.configureHelp({
|
|
65
|
+
sortSubcommands: true,
|
|
66
|
+
sortOptions: true
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
// register default handlers
|
|
70
|
+
state.setPrintHandler(printMessage);
|
|
71
|
+
state.setVerboseHandler(verboseMessage);
|
|
72
|
+
state.setDebugHandler(debugMessage);
|
|
73
|
+
state.setCurlirizeHandler(curlirizeMessage);
|
|
74
|
+
state.setCreateProgressHandler(createProgressIndicator);
|
|
75
|
+
state.setUpdateProgressHandler(updateProgressIndicator);
|
|
76
|
+
state.setStopProgressHandler(stopProgressIndicator);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Command with default options
|
|
82
|
+
*/
|
|
83
|
+
export class FrodoCommand extends FrodoStubCommand {
|
|
84
|
+
/**
|
|
85
|
+
* Creates a new FrodoCommand instance
|
|
86
|
+
* @param name Name of the command
|
|
87
|
+
* @param omits Array of default argument names and default option names that should not be added to this command
|
|
88
|
+
*/
|
|
89
|
+
constructor(name, omits = []) {
|
|
90
|
+
super(name);
|
|
91
|
+
|
|
92
|
+
// register default arguments
|
|
93
|
+
for (const arg of defaultArgs) {
|
|
94
|
+
if (!omits.includes(arg.name())) this.addArgument(arg);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// register default options
|
|
98
|
+
for (const opt of defaultOpts) {
|
|
99
|
+
if (!omits.includes(opt.name())) this.addOption(opt);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
*
|
|
105
|
+
* @param args
|
|
106
|
+
*/
|
|
107
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
108
|
+
handleDefaultArgsAndOpts(...args) {
|
|
109
|
+
const command = args.pop();
|
|
110
|
+
const options = args.pop();
|
|
111
|
+
|
|
112
|
+
// handle arguments first
|
|
113
|
+
for (const [i, v] of command.args.entries()) {
|
|
114
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
115
|
+
const handler = stateMap[command._args[i].name()];
|
|
116
|
+
handler(v);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// handle options
|
|
120
|
+
for (const [k, v] of Object.entries(options)) {
|
|
121
|
+
// handle only default options
|
|
122
|
+
if (Object.keys(stateMap).includes(k)) {
|
|
123
|
+
debugMessage(`FrodoCommand.handleDefaultArgsAndOpts: Handling default option '${k}'.`);
|
|
124
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
125
|
+
const handler = stateMap[k];
|
|
126
|
+
handler(v);
|
|
127
|
+
} else {
|
|
128
|
+
debugMessage(`FrodoCommand.handleDefaultArgsAndOpts: Ignoring non-default option '${k}'.`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=FrodoCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FrodoCommand.js","names":["Argument","Command","Option","globalConfig","state","fs","printMessage","createProgressIndicator","updateProgressIndicator","stopProgressIndicator","verboseMessage","debugMessage","curlirizeMessage","hostArgument","realmArgument","default","process","env","FRODO_REALM","DEFAULT_REALM_KEY","usernameArgument","passwordArgument","serviceAccountIdOption","serviceAccountJwkFileOption","deploymentOption","choices","DEPLOYMENT_TYPES","insecureOption","verboseOption","debugOption","curlirizeOption","defaultArgs","defaultOpts","stateMap","name","setHost","setRealm","setUsername","setPassword","attributeName","setServiceAccountId","file","data","readFileSync","jwk","JSON","parse","toString","setServiceAccountJwk","error","message","setDeploymentType","setAllowInsecureConnection","setVerbose","setDebug","setCurlirize","FrodoStubCommand","constructor","helpOption","showHelpAfterError","configureHelp","sortSubcommands","sortOptions","setPrintHandler","setVerboseHandler","setDebugHandler","setCurlirizeHandler","setCreateProgressHandler","setUpdateProgressHandler","setStopProgressHandler","FrodoCommand","omits","arg","includes","addArgument","opt","addOption","handleDefaultArgsAndOpts","args","command","pop","options","i","v","entries","handler","_args","k","Object","keys"],"sources":["cli/FrodoCommand.ts"],"sourcesContent":["import { Argument, Command, Option } from 'commander';\nimport * as globalConfig from '../storage/StaticStorage';\nimport { state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport {\n printMessage,\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n verboseMessage,\n debugMessage,\n curlirizeMessage,\n} from '../utils/Console.js';\n\nconst hostArgument = new Argument(\n '[host]',\n 'Access Management base URL, e.g.: https://cdk.iam.example.com/am. To use a connection profile, just specify a unique substring.'\n);\n\nconst realmArgument = new Argument(\n '[realm]',\n \"Realm. Specify realm as '/' for the root realm or 'realm' or '/parent/child' otherwise.\"\n).default(\n // must check for FRODO_REALM env variable here because otherwise cli will overwrite realm with default value\n process.env.FRODO_REALM || globalConfig.DEFAULT_REALM_KEY,\n '\"alpha\" for Identity Cloud tenants, \"/\" otherwise.'\n);\n\nconst usernameArgument = new Argument(\n '[username]',\n 'Username to login with. Must be an admin user with appropriate rights to manage authentication journeys/trees.'\n);\n\nconst passwordArgument = new Argument('[password]', 'Password.');\n\nconst serviceAccountIdOption = new Option(\n '--sa-id <sa-id>',\n 'Service account id.'\n);\n\nconst serviceAccountJwkFileOption = new Option(\n '--sa-jwk-file <file>',\n 'File containing the java web key (jwk) associated with the the service account.'\n);\n\nconst deploymentOption = new Option(\n '-m, --type <type>',\n 'Override auto-detected deployment type. Valid values for type: \\n\\\nclassic: A classic Access Management-only deployment with custom layout and configuration. \\n\\\ncloud: A ForgeRock Identity Cloud environment. \\n\\\nforgeops: A ForgeOps CDK or CDM deployment. \\n\\\nThe detected or provided deployment type controls certain behavior like obtaining an Identity \\\nManagement admin token or not and whether to export/import referenced email templates or how \\\nto walk through the tenant admin login flow of Identity Cloud and handle MFA'\n).choices(globalConfig.DEPLOYMENT_TYPES);\n\nconst insecureOption = new Option(\n '-k, --insecure',\n 'Allow insecure connections when using SSL/TLS. Has no effect when using a network proxy for https (HTTPS_PROXY=http://<host>:<port>), in that case the proxy must provide this capability.'\n).default(false, \"Don't allow insecure connections\");\n\nconst verboseOption = new Option(\n '--verbose',\n 'Verbose output during command execution. If specified, may or may not produce additional output.'\n);\n\nconst debugOption = new Option(\n '--debug',\n 'Debug output during command execution. If specified, may or may not produce additional output helpful for troubleshooting.'\n);\n\nconst curlirizeOption = new Option(\n '--curlirize',\n 'Output all network calls in curl format.'\n);\n\nconst defaultArgs = [\n hostArgument,\n realmArgument,\n usernameArgument,\n passwordArgument,\n];\n\nconst defaultOpts = [\n serviceAccountIdOption,\n serviceAccountJwkFileOption,\n deploymentOption,\n insecureOption,\n verboseOption,\n debugOption,\n curlirizeOption,\n];\n\nconst stateMap = {\n [hostArgument.name()]: state.setHost,\n [realmArgument.name()]: state.setRealm,\n [usernameArgument.name()]: state.setUsername,\n [passwordArgument.name()]: state.setPassword,\n [serviceAccountIdOption.attributeName()]: state.setServiceAccountId,\n [serviceAccountJwkFileOption.attributeName()]: (file) => {\n try {\n const data = fs.readFileSync(file);\n const jwk = JSON.parse(data.toString());\n state.setServiceAccountJwk(jwk);\n } catch (error) {\n printMessage(\n `Error parsing JWK from file ${file}: ${error.message}`,\n 'error'\n );\n }\n },\n [deploymentOption.attributeName()]: state.setDeploymentType,\n [insecureOption.attributeName()]: state.setAllowInsecureConnection,\n [verboseOption.attributeName()]: state.setVerbose,\n [debugOption.attributeName()]: state.setDebug,\n [curlirizeOption.attributeName()]: state.setCurlirize,\n};\n\n/**\n * Command with default options\n */\nexport class FrodoStubCommand extends Command {\n /**\n * Creates a new FrodoCommand instance\n * @param name Name of the command\n * @param omits Array of default argument names and default option names that should not be added to this command\n */\n constructor(name: string) {\n super(name);\n\n // other default settings\n this.helpOption('-h, --help', 'Help');\n this.showHelpAfterError();\n this.configureHelp({\n sortSubcommands: true,\n sortOptions: true,\n });\n\n // register default handlers\n state.setPrintHandler(printMessage);\n state.setVerboseHandler(verboseMessage);\n state.setDebugHandler(debugMessage);\n state.setCurlirizeHandler(curlirizeMessage);\n state.setCreateProgressHandler(createProgressIndicator);\n state.setUpdateProgressHandler(updateProgressIndicator);\n state.setStopProgressHandler(stopProgressIndicator);\n }\n}\n\n/**\n * Command with default options\n */\nexport class FrodoCommand extends FrodoStubCommand {\n /**\n * Creates a new FrodoCommand instance\n * @param name Name of the command\n * @param omits Array of default argument names and default option names that should not be added to this command\n */\n constructor(name: string, omits: string[] = []) {\n super(name);\n\n // register default arguments\n for (const arg of defaultArgs) {\n if (!omits.includes(arg.name())) this.addArgument(arg);\n }\n\n // register default options\n for (const opt of defaultOpts) {\n if (!omits.includes(opt.name())) this.addOption(opt);\n }\n }\n\n /**\n *\n * @param args\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handleDefaultArgsAndOpts(...args: any) {\n const command = args.pop();\n const options = args.pop();\n\n // handle arguments first\n for (const [i, v] of command.args.entries()) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handler: any = stateMap[command._args[i].name()];\n handler(v);\n }\n\n // handle options\n for (const [k, v] of Object.entries(options)) {\n // handle only default options\n if (Object.keys(stateMap).includes(k)) {\n debugMessage(\n `FrodoCommand.handleDefaultArgsAndOpts: Handling default option '${k}'.`\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handler: any = stateMap[k];\n handler(v);\n } else {\n debugMessage(\n `FrodoCommand.handleDefaultArgsAndOpts: Ignoring non-default option '${k}'.`\n );\n }\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,24 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
import { FrodoCommand } from '../FrodoCommand';
|
|
2
|
+
import { Option } from 'commander';
|
|
3
|
+
import { Authenticate } from '@rockcarver/frodo-lib';
|
|
4
4
|
const {
|
|
5
5
|
getTokens
|
|
6
6
|
} = Authenticate;
|
|
7
|
-
const program = new
|
|
8
|
-
program.description('Delete something.').
|
|
7
|
+
const program = new FrodoCommand('frodo something delete');
|
|
8
|
+
program.description('Delete something.').addOption(new Option('-i, --something-id <something-id>', '[Something] id. If specified, -a and -A are ignored.')).addOption(new Option('-a, --all', 'Delete all [somethings]. Ignored with -i.')).addOption(new Option('--no-deep', 'No deep delete. This leaves orphaned configuration artifacts behind.')).action(
|
|
9
9
|
// implement command logic inside action handler
|
|
10
|
-
async (host, realm, user, password, options) => {
|
|
11
|
-
|
|
12
|
-
state.default.session.setRealm(realm);
|
|
13
|
-
state.default.session.setUsername(user);
|
|
14
|
-
state.default.session.setPassword(password);
|
|
15
|
-
state.default.session.setDeploymentType(options.type);
|
|
16
|
-
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
17
|
-
state.default.session.setVerbose(options.verbose);
|
|
18
|
-
state.default.session.setDebug(options.debug);
|
|
19
|
-
state.default.session.setCurlirize(options.curlirize);
|
|
10
|
+
async (host, realm, user, password, options, command) => {
|
|
11
|
+
command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
|
|
20
12
|
if (await getTokens()) {
|
|
21
13
|
// code goes here
|
|
14
|
+
} else {
|
|
15
|
+
process.exitCode = 1;
|
|
22
16
|
}
|
|
23
17
|
}
|
|
24
18
|
// end command logic inside action handler
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"something-delete.js","names":["
|
|
1
|
+
{"version":3,"file":"something-delete.js","names":["FrodoCommand","Option","Authenticate","getTokens","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","process","exitCode","parse"],"sources":["cli/_template/something-delete.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { Authenticate } from '@rockcarver/frodo-lib';\n\nconst { getTokens } = Authenticate;\n\nconst program = new FrodoCommand('frodo something delete');\n\nprogram\n .description('Delete something.')\n .addOption(\n new Option(\n '-i, --something-id <something-id>',\n '[Something] id. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option('-a, --all', 'Delete all [somethings]. Ignored with -i.')\n )\n .addOption(\n new Option(\n '--no-deep',\n 'No deep delete. This leaves orphaned configuration artifacts behind.'\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 // code goes here\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,YAAY,QAAQ,uBAAuB;AAEpD,MAAM;EAAEC;AAAU,CAAC,GAAGD,YAAY;AAElC,MAAME,OAAO,GAAG,IAAIJ,YAAY,CAAC,wBAAwB,CAAC;AAE1DI,OAAO,CACJC,WAAW,CAAC,mBAAmB,CAAC,CAChCC,SAAS,CACR,IAAIL,MAAM,CACR,mCAAmC,EACnC,sDAAsD,CACvD,CACF,CACAK,SAAS,CACR,IAAIL,MAAM,CAAC,WAAW,EAAE,2CAA2C,CAAC,CACrE,CACAK,SAAS,CACR,IAAIL,MAAM,CACR,WAAW,EACX,sEAAsE,CACvE,CACF,CACAM,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,OAAO,CACR;EACD,IAAI,MAAMV,SAAS,EAAE,EAAE;IACrB;EAAA,CACD,MAAM;IACLY,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AAAA,CACD;;AAEHZ,OAAO,CAACa,KAAK,EAAE"}
|
|
@@ -1,24 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
import { FrodoCommand } from '../FrodoCommand';
|
|
2
|
+
import { Option } from 'commander';
|
|
3
|
+
import { Authenticate } from '@rockcarver/frodo-lib';
|
|
4
4
|
const {
|
|
5
5
|
getTokens
|
|
6
6
|
} = Authenticate;
|
|
7
|
-
const program = new
|
|
8
|
-
program.description('Describe something.').
|
|
7
|
+
const program = new FrodoCommand('frodo something describe');
|
|
8
|
+
program.description('Describe something.').addOption(new Option('-i, --something-id <something-id>', '[Something] id.')).action(
|
|
9
9
|
// implement command logic inside action handler
|
|
10
|
-
async (host, realm, user, password, options) => {
|
|
11
|
-
|
|
12
|
-
state.default.session.setRealm(realm);
|
|
13
|
-
state.default.session.setUsername(user);
|
|
14
|
-
state.default.session.setPassword(password);
|
|
15
|
-
state.default.session.setDeploymentType(options.type);
|
|
16
|
-
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
17
|
-
state.default.session.setVerbose(options.verbose);
|
|
18
|
-
state.default.session.setDebug(options.debug);
|
|
19
|
-
state.default.session.setCurlirize(options.curlirize);
|
|
10
|
+
async (host, realm, user, password, options, command) => {
|
|
11
|
+
command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
|
|
20
12
|
if (await getTokens()) {
|
|
21
13
|
// code goes here
|
|
14
|
+
} else {
|
|
15
|
+
process.exitCode = 1;
|
|
22
16
|
}
|
|
23
17
|
}
|
|
24
18
|
// end command logic inside action handler
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"something-describe.js","names":["
|
|
1
|
+
{"version":3,"file":"something-describe.js","names":["FrodoCommand","Option","Authenticate","getTokens","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","process","exitCode","parse"],"sources":["cli/_template/something-describe.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { Authenticate } from '@rockcarver/frodo-lib';\n\nconst { getTokens } = Authenticate;\n\nconst program = new FrodoCommand('frodo something describe');\n\nprogram\n .description('Describe something.')\n .addOption(new Option('-i, --something-id <something-id>', '[Something] id.'))\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 // code goes here\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,YAAY,QAAQ,uBAAuB;AAEpD,MAAM;EAAEC;AAAU,CAAC,GAAGD,YAAY;AAElC,MAAME,OAAO,GAAG,IAAIJ,YAAY,CAAC,0BAA0B,CAAC;AAE5DI,OAAO,CACJC,WAAW,CAAC,qBAAqB,CAAC,CAClCC,SAAS,CAAC,IAAIL,MAAM,CAAC,mCAAmC,EAAE,iBAAiB,CAAC,CAAC,CAC7EM,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,OAAO,CACR;EACD,IAAI,MAAMV,SAAS,EAAE,EAAE;IACrB;EAAA,CACD,MAAM;IACLY,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AAAA,CACD;;AAEHZ,OAAO,CAACa,KAAK,EAAE"}
|
|
@@ -1,24 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
import { FrodoCommand } from '../FrodoCommand';
|
|
2
|
+
import { Option } from 'commander';
|
|
3
|
+
import { Authenticate } from '@rockcarver/frodo-lib';
|
|
4
4
|
const {
|
|
5
5
|
getTokens
|
|
6
6
|
} = Authenticate;
|
|
7
|
-
const program = new
|
|
8
|
-
program.description('Delete something else.').
|
|
7
|
+
const program = new FrodoCommand('frodo something else delete');
|
|
8
|
+
program.description('Delete something else.').addOption(new Option('-i, --else-id <else-id>', '[Else] id. If specified, -a and -A are ignored.')).addOption(new Option('-a, --all', 'Delete all [elses]. Ignored with -i.')).addOption(new Option('--no-deep', 'No deep delete. This leaves orphaned configuration artifacts behind.')).action(
|
|
9
9
|
// implement command logic inside action handler
|
|
10
|
-
async (host, realm, user, password, options) => {
|
|
11
|
-
|
|
12
|
-
state.default.session.setRealm(realm);
|
|
13
|
-
state.default.session.setUsername(user);
|
|
14
|
-
state.default.session.setPassword(password);
|
|
15
|
-
state.default.session.setDeploymentType(options.type);
|
|
16
|
-
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
17
|
-
state.default.session.setVerbose(options.verbose);
|
|
18
|
-
state.default.session.setDebug(options.debug);
|
|
19
|
-
state.default.session.setCurlirize(options.curlirize);
|
|
10
|
+
async (host, realm, user, password, options, command) => {
|
|
11
|
+
command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
|
|
20
12
|
if (await getTokens()) {
|
|
21
13
|
// code goes here
|
|
14
|
+
} else {
|
|
15
|
+
process.exitCode = 1;
|
|
22
16
|
}
|
|
23
17
|
}
|
|
24
18
|
// end command logic inside action handler
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"something-else-delete.js","names":["
|
|
1
|
+
{"version":3,"file":"something-else-delete.js","names":["FrodoCommand","Option","Authenticate","getTokens","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","process","exitCode","parse"],"sources":["cli/_template/something-else-delete.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { Authenticate } from '@rockcarver/frodo-lib';\n\nconst { getTokens } = Authenticate;\n\nconst program = new FrodoCommand('frodo something else delete');\n\nprogram\n .description('Delete something else.')\n .addOption(\n new Option(\n '-i, --else-id <else-id>',\n '[Else] id. If specified, -a and -A are ignored.'\n )\n )\n .addOption(new Option('-a, --all', 'Delete all [elses]. Ignored with -i.'))\n .addOption(\n new Option(\n '--no-deep',\n 'No deep delete. This leaves orphaned configuration artifacts behind.'\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 // code goes here\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,YAAY,QAAQ,uBAAuB;AAEpD,MAAM;EAAEC;AAAU,CAAC,GAAGD,YAAY;AAElC,MAAME,OAAO,GAAG,IAAIJ,YAAY,CAAC,6BAA6B,CAAC;AAE/DI,OAAO,CACJC,WAAW,CAAC,wBAAwB,CAAC,CACrCC,SAAS,CACR,IAAIL,MAAM,CACR,yBAAyB,EACzB,iDAAiD,CAClD,CACF,CACAK,SAAS,CAAC,IAAIL,MAAM,CAAC,WAAW,EAAE,sCAAsC,CAAC,CAAC,CAC1EK,SAAS,CACR,IAAIL,MAAM,CACR,WAAW,EACX,sEAAsE,CACvE,CACF,CACAM,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,OAAO,CACR;EACD,IAAI,MAAMV,SAAS,EAAE,EAAE;IACrB;EAAA,CACD,MAAM;IACLY,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AAAA,CACD;;AAEHZ,OAAO,CAACa,KAAK,EAAE"}
|
|
@@ -1,24 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
import { FrodoCommand } from '../FrodoCommand';
|
|
2
|
+
import { Option } from 'commander';
|
|
3
|
+
import { Authenticate } from '@rockcarver/frodo-lib';
|
|
4
4
|
const {
|
|
5
5
|
getTokens
|
|
6
6
|
} = Authenticate;
|
|
7
|
-
const program = new
|
|
8
|
-
program.description('Describe something else.').
|
|
7
|
+
const program = new FrodoCommand('frodo something else describe');
|
|
8
|
+
program.description('Describe something else.').addOption(new Option('-i, --else-id <else-id>', '[Else] id.')).action(
|
|
9
9
|
// implement command logic inside action handler
|
|
10
|
-
async (host, realm, user, password, options) => {
|
|
11
|
-
|
|
12
|
-
state.default.session.setRealm(realm);
|
|
13
|
-
state.default.session.setUsername(user);
|
|
14
|
-
state.default.session.setPassword(password);
|
|
15
|
-
state.default.session.setDeploymentType(options.type);
|
|
16
|
-
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
17
|
-
state.default.session.setVerbose(options.verbose);
|
|
18
|
-
state.default.session.setDebug(options.debug);
|
|
19
|
-
state.default.session.setCurlirize(options.curlirize);
|
|
10
|
+
async (host, realm, user, password, options, command) => {
|
|
11
|
+
command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
|
|
20
12
|
if (await getTokens()) {
|
|
21
13
|
// code goes here
|
|
14
|
+
} else {
|
|
15
|
+
process.exitCode = 1;
|
|
22
16
|
}
|
|
23
17
|
}
|
|
24
18
|
// end command logic inside action handler
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"something-else-describe.js","names":["
|
|
1
|
+
{"version":3,"file":"something-else-describe.js","names":["FrodoCommand","Option","Authenticate","getTokens","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","process","exitCode","parse"],"sources":["cli/_template/something-else-describe.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { Authenticate } from '@rockcarver/frodo-lib';\n\nconst { getTokens } = Authenticate;\n\nconst program = new FrodoCommand('frodo something else describe');\n\nprogram\n .description('Describe something else.')\n .addOption(new Option('-i, --else-id <else-id>', '[Else] id.'))\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 // code goes here\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,YAAY,QAAQ,uBAAuB;AAEpD,MAAM;EAAEC;AAAU,CAAC,GAAGD,YAAY;AAElC,MAAME,OAAO,GAAG,IAAIJ,YAAY,CAAC,+BAA+B,CAAC;AAEjEI,OAAO,CACJC,WAAW,CAAC,0BAA0B,CAAC,CACvCC,SAAS,CAAC,IAAIL,MAAM,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC,CAC9DM,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,OAAO,CACR;EACD,IAAI,MAAMV,SAAS,EAAE,EAAE;IACrB;EAAA,CACD,MAAM;IACLY,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AAAA,CACD;;AAEHZ,OAAO,CAACa,KAAK,EAAE"}
|
|
@@ -1,24 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
import { FrodoCommand } from '../FrodoCommand';
|
|
2
|
+
import { Option } from 'commander';
|
|
3
|
+
import { Authenticate } from '@rockcarver/frodo-lib';
|
|
4
4
|
const {
|
|
5
5
|
getTokens
|
|
6
6
|
} = Authenticate;
|
|
7
|
-
const program = new
|
|
8
|
-
program.description('Export something else.').
|
|
7
|
+
const program = new FrodoCommand('frodo something else export');
|
|
8
|
+
program.description('Export something else.').addOption(new Option('-i, --else-id <else-id>', '[Else] id. If specified, -a and -A are ignored.')).addOption(new Option('-f, --file <file>', 'Name of the export file.')).addOption(new Option('-a, --all', 'Export all [else] to a single file. Ignored with -i.')).addOption(new Option('-A, --all-separate', 'Export all [else] to separate files (*.[else].json) in the current directory. Ignored with -i or -a.')).action(
|
|
9
9
|
// implement command logic inside action handler
|
|
10
|
-
async (host, realm, user, password, options) => {
|
|
11
|
-
|
|
12
|
-
state.default.session.setRealm(realm);
|
|
13
|
-
state.default.session.setUsername(user);
|
|
14
|
-
state.default.session.setPassword(password);
|
|
15
|
-
state.default.session.setDeploymentType(options.type);
|
|
16
|
-
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
17
|
-
state.default.session.setVerbose(options.verbose);
|
|
18
|
-
state.default.session.setDebug(options.debug);
|
|
19
|
-
state.default.session.setCurlirize(options.curlirize);
|
|
10
|
+
async (host, realm, user, password, options, command) => {
|
|
11
|
+
command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
|
|
20
12
|
if (await getTokens()) {
|
|
21
13
|
// code goes here
|
|
14
|
+
} else {
|
|
15
|
+
process.exitCode = 1;
|
|
22
16
|
}
|
|
23
17
|
}
|
|
24
18
|
// end command logic inside action handler
|