@credibledata/cred-cli 0.0.103 → 0.0.105
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/README.md +106 -1
- package/dist/agent-contract.spec.js +548 -0
- package/dist/agent-contract.spec.js.map +1 -0
- package/dist/browser.js +72 -0
- package/dist/browser.js.map +1 -0
- package/dist/browser.spec.js +125 -0
- package/dist/browser.spec.js.map +1 -0
- package/dist/client/api.js +4137 -1159
- package/dist/client/api.js.map +1 -1
- package/dist/client-codeassist/api.js +476 -0
- package/dist/client-codeassist/api.js.map +1 -0
- package/dist/client-codeassist/base.js +69 -0
- package/dist/client-codeassist/base.js.map +1 -0
- package/dist/client-codeassist/common.js +162 -0
- package/dist/client-codeassist/common.js.map +1 -0
- package/dist/client-codeassist/configuration.js +44 -0
- package/dist/client-codeassist/configuration.js.map +1 -0
- package/dist/client-codeassist/index.js +32 -0
- package/dist/client-codeassist/index.js.map +1 -0
- package/dist/clientconfiguration.js +17 -289
- package/dist/clientconfiguration.js.map +1 -1
- package/dist/clientconfiguration.spec.js +35 -96
- package/dist/clientconfiguration.spec.js.map +1 -1
- package/dist/commands/add.js +103 -3
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/add.spec.js +113 -0
- package/dist/commands/add.spec.js.map +1 -0
- package/dist/commands/connection/createconnections.js +104 -7
- package/dist/commands/connection/createconnections.js.map +1 -1
- package/dist/commands/connection/createconnections.spec.js +35 -1
- package/dist/commands/connection/createconnections.spec.js.map +1 -1
- package/dist/commands/connection/deleteconnection.js +4 -2
- package/dist/commands/connection/deleteconnection.js.map +1 -1
- package/dist/commands/connection/deleteconnection.spec.js +6 -1
- package/dist/commands/connection/deleteconnection.spec.js.map +1 -1
- package/dist/commands/connection/listconnections.js +2 -0
- package/dist/commands/connection/listconnections.js.map +1 -1
- package/dist/commands/connection/updateconnection.js +365 -0
- package/dist/commands/connection/updateconnection.js.map +1 -0
- package/dist/commands/connection/updateconnection.spec.js +625 -0
- package/dist/commands/connection/updateconnection.spec.js.map +1 -0
- package/dist/commands/database/createdatabase.js +52 -0
- package/dist/commands/database/createdatabase.js.map +1 -0
- package/dist/commands/database/database.spec.js +267 -0
- package/dist/commands/database/database.spec.js.map +1 -0
- package/dist/commands/database/deletedatabase.js +91 -0
- package/dist/commands/database/deletedatabase.js.map +1 -0
- package/dist/commands/database/getdatabase.js +97 -0
- package/dist/commands/database/getdatabase.js.map +1 -0
- package/dist/commands/database/listdatabases.js +36 -0
- package/dist/commands/database/listdatabases.js.map +1 -0
- package/dist/commands/database/shared.js +125 -0
- package/dist/commands/database/shared.js.map +1 -0
- package/dist/commands/database/shared.spec.js +109 -0
- package/dist/commands/database/shared.spec.js.map +1 -0
- package/dist/commands/database/updatedatabase.js +39 -0
- package/dist/commands/database/updatedatabase.js.map +1 -0
- package/dist/commands/environment/createenvironment.js +59 -28
- package/dist/commands/environment/createenvironment.js.map +1 -1
- package/dist/commands/environment/createenvironment.spec.js +29 -0
- package/dist/commands/environment/createenvironment.spec.js.map +1 -1
- package/dist/commands/environment/deleteenvironment.js +3 -2
- package/dist/commands/environment/deleteenvironment.js.map +1 -1
- package/dist/commands/environment/deleteenvironment.spec.js +5 -1
- package/dist/commands/environment/deleteenvironment.spec.js.map +1 -1
- package/dist/commands/environment/getenvironment.js +1 -0
- package/dist/commands/environment/getenvironment.js.map +1 -1
- package/dist/commands/environment/listenvironments.js +40 -8
- package/dist/commands/environment/listenvironments.js.map +1 -1
- package/dist/commands/environment/listenvironments.spec.js +41 -2
- package/dist/commands/environment/listenvironments.spec.js.map +1 -1
- package/dist/commands/environment/setenvironment.js +145 -6
- package/dist/commands/environment/setenvironment.js.map +1 -1
- package/dist/commands/environment/setenvironment.spec.js +256 -8
- package/dist/commands/environment/setenvironment.spec.js.map +1 -1
- package/dist/commands/environment/updateenvironment.js +12 -8
- package/dist/commands/environment/updateenvironment.js.map +1 -1
- package/dist/commands/environment/updateenvironment.spec.js +36 -2
- package/dist/commands/environment/updateenvironment.spec.js.map +1 -1
- package/dist/commands/get.js +64 -1
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/group/addmember.js +3 -1
- package/dist/commands/group/addmember.js.map +1 -1
- package/dist/commands/group/addmember.spec.js +7 -2
- package/dist/commands/group/addmember.spec.js.map +1 -1
- package/dist/commands/group/creategroup.js +2 -0
- package/dist/commands/group/creategroup.js.map +1 -1
- package/dist/commands/group/deletegroup.js +3 -1
- package/dist/commands/group/deletegroup.js.map +1 -1
- package/dist/commands/group/deletegroup.spec.js +7 -1
- package/dist/commands/group/deletegroup.spec.js.map +1 -1
- package/dist/commands/group/getgroup.js +2 -0
- package/dist/commands/group/getgroup.js.map +1 -1
- package/dist/commands/group/listgroups.js +2 -0
- package/dist/commands/group/listgroups.js.map +1 -1
- package/dist/commands/group/removemember.js +3 -1
- package/dist/commands/group/removemember.js.map +1 -1
- package/dist/commands/group/removemember.spec.js +7 -2
- package/dist/commands/group/removemember.spec.js.map +1 -1
- package/dist/commands/groupaccesstoken/deleteToken.js +2 -1
- package/dist/commands/groupaccesstoken/deleteToken.js.map +1 -1
- package/dist/commands/groupaccesstoken/groupContainer.js +2 -0
- package/dist/commands/groupaccesstoken/groupContainer.js.map +1 -1
- package/dist/commands/list.js +24 -4
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/materialization/cancelrun.js +3 -1
- package/dist/commands/materialization/cancelrun.js.map +1 -1
- package/dist/commands/materialization/getindex.js +2 -0
- package/dist/commands/materialization/getindex.js.map +1 -1
- package/dist/commands/materialization/getmaterialization.js +2 -0
- package/dist/commands/materialization/getmaterialization.js.map +1 -1
- package/dist/commands/materialization/getpreaggregate.js +2 -0
- package/dist/commands/materialization/getpreaggregate.js.map +1 -1
- package/dist/commands/materialization/getrun.js +2 -0
- package/dist/commands/materialization/getrun.js.map +1 -1
- package/dist/commands/materialization/listindexes.js +2 -0
- package/dist/commands/materialization/listindexes.js.map +1 -1
- package/dist/commands/materialization/listmaterializations.js +2 -0
- package/dist/commands/materialization/listmaterializations.js.map +1 -1
- package/dist/commands/materialization/listpreaggregates.js +2 -0
- package/dist/commands/materialization/listpreaggregates.js.map +1 -1
- package/dist/commands/materialization/listruns.js +3 -1
- package/dist/commands/materialization/listruns.js.map +1 -1
- package/dist/commands/materialization/rerun.js +3 -1
- package/dist/commands/materialization/rerun.js.map +1 -1
- package/dist/commands/misc/inquirerHost.js +87 -0
- package/dist/commands/misc/inquirerHost.js.map +1 -0
- package/dist/commands/misc/inquirerHost.spec.js +91 -0
- package/dist/commands/misc/inquirerHost.spec.js.map +1 -0
- package/dist/commands/misc/login.js +348 -58
- package/dist/commands/misc/login.js.map +1 -1
- package/dist/commands/misc/login.spec.js +525 -7
- package/dist/commands/misc/login.spec.js.map +1 -1
- package/dist/commands/misc/logout.js +26 -3
- package/dist/commands/misc/logout.js.map +1 -1
- package/dist/commands/misc/logout.spec.js +52 -12
- package/dist/commands/misc/logout.spec.js.map +1 -1
- package/dist/commands/misc/resolveLoginTarget.spec.js +90 -0
- package/dist/commands/misc/resolveLoginTarget.spec.js.map +1 -0
- package/dist/commands/misc/scope.spec.js +108 -0
- package/dist/commands/misc/scope.spec.js.map +1 -0
- package/dist/commands/misc/set-access-token.js +1 -1
- package/dist/commands/misc/set-access-token.js.map +1 -1
- package/dist/commands/misc/set-access-token.spec.js +13 -2
- package/dist/commands/misc/set-access-token.spec.js.map +1 -1
- package/dist/commands/misc/setup.js +819 -0
- package/dist/commands/misc/setup.js.map +1 -0
- package/dist/commands/misc/setup.spec.js +783 -0
- package/dist/commands/misc/setup.spec.js.map +1 -0
- package/dist/commands/misc/status.js +168 -0
- package/dist/commands/misc/status.js.map +1 -0
- package/dist/commands/misc/status.spec.js +301 -0
- package/dist/commands/misc/status.spec.js.map +1 -0
- package/dist/commands/misc/token.js +57 -0
- package/dist/commands/misc/token.js.map +1 -0
- package/dist/commands/misc/token.spec.js +92 -0
- package/dist/commands/misc/token.spec.js.map +1 -0
- package/dist/commands/package/deletepackage.js +4 -2
- package/dist/commands/package/deletepackage.js.map +1 -1
- package/dist/commands/package/deletepackage.spec.js +7 -1
- package/dist/commands/package/deletepackage.spec.js.map +1 -1
- package/dist/commands/package/getpackage.js +142 -0
- package/dist/commands/package/getpackage.js.map +1 -0
- package/dist/commands/package/getpackage.spec.js +246 -0
- package/dist/commands/package/getpackage.spec.js.map +1 -0
- package/dist/commands/package/listpackages.js +2 -0
- package/dist/commands/package/listpackages.js.map +1 -1
- package/dist/commands/package/publish.archive.spec.js +570 -0
- package/dist/commands/package/publish.archive.spec.js.map +1 -0
- package/dist/commands/package/publish.js +780 -49
- package/dist/commands/package/publish.js.map +1 -1
- package/dist/commands/package/publish.spec.js +451 -8
- package/dist/commands/package/publish.spec.js.map +1 -1
- package/dist/commands/package/updatepackage.js +22 -19
- package/dist/commands/package/updatepackage.js.map +1 -1
- package/dist/commands/package/updatepackage.spec.js +36 -1
- package/dist/commands/package/updatepackage.spec.js.map +1 -1
- package/dist/commands/permission/createpermission.js +3 -1
- package/dist/commands/permission/createpermission.js.map +1 -1
- package/dist/commands/permission/deletepermission.js +6 -3
- package/dist/commands/permission/deletepermission.js.map +1 -1
- package/dist/commands/permission/getpermission.js +2 -0
- package/dist/commands/permission/getpermission.js.map +1 -1
- package/dist/commands/permission/listpermissions.js +2 -0
- package/dist/commands/permission/listpermissions.js.map +1 -1
- package/dist/commands/rm.js +21 -0
- package/dist/commands/rm.js.map +1 -1
- package/dist/commands/set.js +40 -6
- package/dist/commands/set.js.map +1 -1
- package/dist/commands/set.spec.js +123 -0
- package/dist/commands/set.spec.js.map +1 -0
- package/dist/commands/table/addtable.js +155 -0
- package/dist/commands/table/addtable.js.map +1 -0
- package/dist/commands/table/deletetable.js +45 -0
- package/dist/commands/table/deletetable.js.map +1 -0
- package/dist/commands/table/gettable.js +32 -0
- package/dist/commands/table/gettable.js.map +1 -0
- package/dist/commands/table/listtables.js +36 -0
- package/dist/commands/table/listtables.js.map +1 -0
- package/dist/commands/table/table.spec.js +304 -0
- package/dist/commands/table/table.spec.js.map +1 -0
- package/dist/commands/table/tablefile.js +195 -0
- package/dist/commands/table/tablefile.js.map +1 -0
- package/dist/commands/table/tablefile.spec.js +158 -0
- package/dist/commands/table/tablefile.spec.js.map +1 -0
- package/dist/commands/update.js +21 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/version/archive-unarchive-version.js +4 -2
- package/dist/commands/version/archive-unarchive-version.js.map +1 -1
- package/dist/commands/version/archive-unarchive-version.spec.js +6 -1
- package/dist/commands/version/archive-unarchive-version.spec.js.map +1 -1
- package/dist/commands/version/listversions.js +2 -0
- package/dist/commands/version/listversions.js.map +1 -1
- package/dist/common/UserGroupId.js +9 -4
- package/dist/common/UserGroupId.js.map +1 -1
- package/dist/common/UserGroupId.spec.js +5 -0
- package/dist/common/UserGroupId.spec.js.map +1 -1
- package/dist/constants.js +37 -143
- package/dist/constants.js.map +1 -1
- package/dist/index.js +487 -90
- package/dist/index.js.map +1 -1
- package/dist/logger.js +42 -9
- package/dist/logger.js.map +1 -1
- package/dist/session.js +56 -0
- package/dist/session.js.map +1 -0
- package/dist/session.spec.js +103 -0
- package/dist/session.spec.js.map +1 -0
- package/dist/setup-core/briefing.js +176 -0
- package/dist/setup-core/briefing.js.map +1 -0
- package/dist/setup-core/credstore.js +415 -0
- package/dist/setup-core/credstore.js.map +1 -0
- package/dist/setup-core/credstore.spec.js +238 -0
- package/dist/setup-core/credstore.spec.js.map +1 -0
- package/dist/setup-core/environments.js +267 -0
- package/dist/setup-core/environments.js.map +1 -0
- package/dist/setup-core/flow.e2e.js +165 -0
- package/dist/setup-core/flow.e2e.js.map +1 -0
- package/dist/setup-core/flow.js +765 -0
- package/dist/setup-core/flow.js.map +1 -0
- package/dist/setup-core/flow.spec.js +1348 -0
- package/dist/setup-core/flow.spec.js.map +1 -0
- package/dist/setup-core/folderconfig.js +283 -0
- package/dist/setup-core/folderconfig.js.map +1 -0
- package/dist/setup-core/git.js +97 -0
- package/dist/setup-core/git.js.map +1 -0
- package/dist/setup-core/host.js +77 -0
- package/dist/setup-core/host.js.map +1 -0
- package/dist/setup-core/importconnections.js +470 -0
- package/dist/setup-core/importconnections.js.map +1 -0
- package/dist/setup-core/importconnections.spec.js +594 -0
- package/dist/setup-core/importconnections.spec.js.map +1 -0
- package/dist/setup-core/liveness.js +94 -0
- package/dist/setup-core/liveness.js.map +1 -0
- package/dist/setup-core/liveness.spec.js +59 -0
- package/dist/setup-core/liveness.spec.js.map +1 -0
- package/dist/setup-core/localpublisherconfig.js +26 -0
- package/dist/setup-core/localpublisherconfig.js.map +1 -0
- package/dist/setup-core/localpublisherconfig.spec.js +29 -0
- package/dist/setup-core/localpublisherconfig.spec.js.map +1 -0
- package/dist/setup-core/mcpconfig.js +198 -0
- package/dist/setup-core/mcpconfig.js.map +1 -0
- package/dist/setup-core/mcpconfig.spec.js +205 -0
- package/dist/setup-core/mcpconfig.spec.js.map +1 -0
- package/dist/setup-core/packagemanifest.js +55 -0
- package/dist/setup-core/packagemanifest.js.map +1 -0
- package/dist/setup-core/ports.js +182 -0
- package/dist/setup-core/ports.js.map +1 -0
- package/dist/setup-core/ports.spec.js +173 -0
- package/dist/setup-core/ports.spec.js.map +1 -0
- package/dist/setup-core/publisherconfig.js +268 -0
- package/dist/setup-core/publisherconfig.js.map +1 -0
- package/dist/setup-core/publisherconfig.oracle.js +166 -0
- package/dist/setup-core/publisherconfig.oracle.js.map +1 -0
- package/dist/setup-core/publisherconfig.spec.js +277 -0
- package/dist/setup-core/publisherconfig.spec.js.map +1 -0
- package/dist/setup-core/publisherversion.js +26 -0
- package/dist/setup-core/publisherversion.js.map +1 -0
- package/dist/setup-core/readiness.spec.js +161 -0
- package/dist/setup-core/readiness.spec.js.map +1 -0
- package/dist/setup-core/readylines.js +169 -0
- package/dist/setup-core/readylines.js.map +1 -0
- package/dist/setup-core/readylines.spec.js +70 -0
- package/dist/setup-core/readylines.spec.js.map +1 -0
- package/dist/setup-core/refresh.js +348 -0
- package/dist/setup-core/refresh.js.map +1 -0
- package/dist/setup-core/refresh.spec.js +501 -0
- package/dist/setup-core/refresh.spec.js.map +1 -0
- package/dist/setup-core/skills.js +279 -0
- package/dist/setup-core/skills.js.map +1 -0
- package/dist/setup-core/skills.spec.js +334 -0
- package/dist/setup-core/skills.spec.js.map +1 -0
- package/dist/setup-core/supervisor.js +879 -0
- package/dist/setup-core/supervisor.js.map +1 -0
- package/dist/setup-core/supervisor.spec.js +833 -0
- package/dist/setup-core/supervisor.spec.js.map +1 -0
- package/dist/setup-core/writefile.js +61 -0
- package/dist/setup-core/writefile.js.map +1 -0
- package/dist/setup-core/writefile.spec.js +68 -0
- package/dist/setup-core/writefile.spec.js.map +1 -0
- package/dist/utils.js +409 -3
- package/dist/utils.js.map +1 -1
- package/dist/utils.spec.js +373 -2
- package/dist/utils.spec.js.map +1 -1
- package/dist/versioncheck-refresh.js +18 -0
- package/dist/versioncheck-refresh.js.map +1 -0
- package/dist/versioncheck.js +324 -0
- package/dist/versioncheck.js.map +1 -0
- package/dist/versioncheck.spec.js +587 -0
- package/dist/versioncheck.spec.js.map +1 -0
- package/node_modules/@credibledata/cli-auth/dist/index.d.ts +86 -0
- package/node_modules/@credibledata/cli-auth/dist/index.js +102 -0
- package/node_modules/@credibledata/cli-auth/package.json +19 -0
- package/package.json +18 -6
- package/.github/workflows/build.yml +0 -23
- package/.mocharc.json +0 -10
- package/.prettierignore +0 -2
- package/.prettierrc +0 -4
- package/README-DEV.md +0 -40
- package/coverage/coverage-summary.json +0 -40
- package/coverage/tmp/coverage-2152-1789496974457-0.json +0 -1
- package/coverage/tmp/coverage-2153-1789496954404-0.json +0 -1
- package/docker/Dockerfile.ci +0 -18
- package/docker-compose.yml +0 -18
- package/eslint.config.mjs +0 -45
- package/generate-client.sh +0 -27
- package/mocha.setup.ts +0 -4
- package/openapitools.json +0 -10
- package/src/client/.openapi-generator/FILES +0 -9
- package/src/client/.openapi-generator/VERSION +0 -1
- package/src/client/.openapi-generator-ignore +0 -23
- package/src/client/api.ts +0 -15999
- package/src/client/base.ts +0 -86
- package/src/client/common.ts +0 -150
- package/src/client/configuration.ts +0 -110
- package/src/client/git_push.sh +0 -57
- package/src/client/index.ts +0 -18
- package/src/clientconfiguration.spec.ts +0 -615
- package/src/clientconfiguration.ts +0 -364
- package/src/commands/add.ts +0 -191
- package/src/commands/connection/createconnections.spec.ts +0 -413
- package/src/commands/connection/createconnections.ts +0 -109
- package/src/commands/connection/deleteconnection.spec.ts +0 -189
- package/src/commands/connection/deleteconnection.ts +0 -57
- package/src/commands/connection/listconnections.spec.ts +0 -132
- package/src/commands/connection/listconnections.ts +0 -58
- package/src/commands/environment/createenvironment.spec.ts +0 -249
- package/src/commands/environment/createenvironment.ts +0 -73
- package/src/commands/environment/deleteenvironment.spec.ts +0 -152
- package/src/commands/environment/deleteenvironment.ts +0 -48
- package/src/commands/environment/getenvironment.spec.ts +0 -110
- package/src/commands/environment/getenvironment.ts +0 -43
- package/src/commands/environment/listenvironments.spec.ts +0 -123
- package/src/commands/environment/listenvironments.ts +0 -67
- package/src/commands/environment/setenvironment.spec.ts +0 -63
- package/src/commands/environment/setenvironment.ts +0 -14
- package/src/commands/environment/updateenvironment.spec.ts +0 -386
- package/src/commands/environment/updateenvironment.ts +0 -168
- package/src/commands/get.ts +0 -153
- package/src/commands/group/addmember.spec.ts +0 -257
- package/src/commands/group/addmember.ts +0 -85
- package/src/commands/group/creategroup.spec.ts +0 -146
- package/src/commands/group/creategroup.ts +0 -54
- package/src/commands/group/deletegroup.spec.ts +0 -120
- package/src/commands/group/deletegroup.ts +0 -45
- package/src/commands/group/getgroup.spec.ts +0 -129
- package/src/commands/group/getgroup.ts +0 -47
- package/src/commands/group/listgroups.spec.ts +0 -137
- package/src/commands/group/listgroups.ts +0 -45
- package/src/commands/group/removemember.spec.ts +0 -224
- package/src/commands/group/removemember.ts +0 -75
- package/src/commands/groupaccesstoken/createToken.spec.ts +0 -211
- package/src/commands/groupaccesstoken/createToken.ts +0 -72
- package/src/commands/groupaccesstoken/deleteToken.spec.ts +0 -147
- package/src/commands/groupaccesstoken/deleteToken.ts +0 -29
- package/src/commands/groupaccesstoken/groupContainer.ts +0 -83
- package/src/commands/groupaccesstoken/listTokens.spec.ts +0 -147
- package/src/commands/groupaccesstoken/listTokens.ts +0 -29
- package/src/commands/legacy.ts +0 -5
- package/src/commands/list.ts +0 -326
- package/src/commands/materialization/cancelrun.ts +0 -70
- package/src/commands/materialization/getindex.ts +0 -55
- package/src/commands/materialization/getmaterialization.ts +0 -57
- package/src/commands/materialization/getpreaggregate.ts +0 -58
- package/src/commands/materialization/getrun.ts +0 -55
- package/src/commands/materialization/listindexes.ts +0 -69
- package/src/commands/materialization/listmaterializations.ts +0 -53
- package/src/commands/materialization/listpreaggregates.ts +0 -74
- package/src/commands/materialization/listruns.ts +0 -77
- package/src/commands/materialization/rerun.ts +0 -123
- package/src/commands/misc/login.spec.ts +0 -371
- package/src/commands/misc/login.ts +0 -343
- package/src/commands/misc/logout.spec.ts +0 -32
- package/src/commands/misc/logout.ts +0 -9
- package/src/commands/misc/loopbackOAuth.ts +0 -127
- package/src/commands/misc/set-access-token.spec.ts +0 -95
- package/src/commands/misc/set-access-token.ts +0 -32
- package/src/commands/package/deletepackage.spec.ts +0 -164
- package/src/commands/package/deletepackage.ts +0 -58
- package/src/commands/package/listpackages.spec.ts +0 -163
- package/src/commands/package/listpackages.ts +0 -74
- package/src/commands/package/publish.spec.ts +0 -642
- package/src/commands/package/publish.ts +0 -236
- package/src/commands/package/updatepackage.spec.ts +0 -319
- package/src/commands/package/updatepackage.ts +0 -95
- package/src/commands/permission/createpermission.spec.ts +0 -507
- package/src/commands/permission/createpermission.ts +0 -181
- package/src/commands/permission/deletepermission.ts +0 -117
- package/src/commands/permission/getpermission.ts +0 -115
- package/src/commands/permission/listpermissions.ts +0 -101
- package/src/commands/permission/scope.ts +0 -180
- package/src/commands/rm.ts +0 -146
- package/src/commands/set.ts +0 -25
- package/src/commands/update.ts +0 -107
- package/src/commands/version/archive-unarchive-version.spec.ts +0 -456
- package/src/commands/version/archive-unarchive-version.ts +0 -108
- package/src/commands/version/listversions.spec.ts +0 -138
- package/src/commands/version/listversions.ts +0 -45
- package/src/common/UserGroupId.spec.ts +0 -115
- package/src/common/UserGroupId.ts +0 -137
- package/src/constants.spec.ts +0 -111
- package/src/constants.ts +0 -228
- package/src/index.ts +0 -378
- package/src/logger.spec.ts +0 -158
- package/src/logger.ts +0 -90
- package/src/polyfills/file.polyfill.ts +0 -6
- package/src/utils.spec.ts +0 -135
- package/src/utils.ts +0 -115
- package/src/validator.spec.ts +0 -51
- package/src/validator.ts +0 -44
- package/tsconfig.json +0 -17
|
@@ -1,364 +0,0 @@
|
|
|
1
|
-
import crypto from "crypto";
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
import { jwtDecode } from "jwt-decode";
|
|
4
|
-
import kleur from "kleur";
|
|
5
|
-
import os from "os";
|
|
6
|
-
import {
|
|
7
|
-
ALL_ENVIRONMENTS,
|
|
8
|
-
ASCII_TITLE,
|
|
9
|
-
controlPlanesByEnv,
|
|
10
|
-
Environment,
|
|
11
|
-
} from "./constants";
|
|
12
|
-
import { logger } from "./logger";
|
|
13
|
-
|
|
14
|
-
interface ConfigFile {
|
|
15
|
-
configPerEnvironment: Partial<
|
|
16
|
-
Record<
|
|
17
|
-
Environment,
|
|
18
|
-
{
|
|
19
|
-
organization?: string;
|
|
20
|
-
project?: string;
|
|
21
|
-
auth?: { username: string; password: string };
|
|
22
|
-
vsCodeUser?: {
|
|
23
|
-
username: string;
|
|
24
|
-
email: string;
|
|
25
|
-
};
|
|
26
|
-
accessToken?: string;
|
|
27
|
-
jwtAccessToken?: string;
|
|
28
|
-
refreshToken?: string;
|
|
29
|
-
isServiceAccountToken?: boolean;
|
|
30
|
-
}
|
|
31
|
-
>
|
|
32
|
-
>;
|
|
33
|
-
activeEnvironment: Environment;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
interface JwtPayload {
|
|
37
|
-
exp: number;
|
|
38
|
-
iat?: number;
|
|
39
|
-
sub?: string;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Thrown when `.cred` exists but cannot be used: either it does not parse as
|
|
44
|
-
* JSON or it parses but lacks the required top-level shape. Distinct from fs
|
|
45
|
-
* errors (ENOENT, EACCES) so callers that want to recover — `cred login` —
|
|
46
|
-
* can target *only* a corrupt-content failure and leave permission/IO errors
|
|
47
|
-
* to surface loudly.
|
|
48
|
-
*/
|
|
49
|
-
export class InvalidConfigError extends Error {}
|
|
50
|
-
|
|
51
|
-
export class ClientConfiguration {
|
|
52
|
-
private configPath = `${os.homedir()}/.cred`;
|
|
53
|
-
private config: ConfigFile;
|
|
54
|
-
|
|
55
|
-
constructor(customConfigPath?: string) {
|
|
56
|
-
if (customConfigPath) {
|
|
57
|
-
this.configPath = customConfigPath;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
public loadConfig(): ConfigFile {
|
|
62
|
-
let fileContents: Buffer | undefined;
|
|
63
|
-
try {
|
|
64
|
-
fileContents = fs.readFileSync(this.configPath);
|
|
65
|
-
} catch (error) {
|
|
66
|
-
if ((error as NodeJS.ErrnoException)?.code === "ENOENT") {
|
|
67
|
-
// First-time setup: create a default config on disk.
|
|
68
|
-
this.config = this.defaultConfig();
|
|
69
|
-
this.writeConfig();
|
|
70
|
-
return this.config;
|
|
71
|
-
}
|
|
72
|
-
throw error;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
try {
|
|
76
|
-
this.config = JSON.parse(fileContents.toString());
|
|
77
|
-
} catch (error) {
|
|
78
|
-
// Non-atomic writes from older binaries, or a manually corrupted file,
|
|
79
|
-
// can leave `.cred` unparseable. Fail loud rather than silently
|
|
80
|
-
// overwriting — a silent reset erases the access token for every
|
|
81
|
-
// subsequent caller on the same machine.
|
|
82
|
-
throw new InvalidConfigError(
|
|
83
|
-
`Failed to parse ${this.configPath}: ${error}. The file may be corrupt; re-run \`cred login\` to reset.`,
|
|
84
|
-
);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
if (!this.config.activeEnvironment || !this.config.configPerEnvironment) {
|
|
88
|
-
throw new InvalidConfigError(
|
|
89
|
-
`Invalid config structure in ${this.configPath}; re-run \`cred login\` to reset.`,
|
|
90
|
-
);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
for (const env of ALL_ENVIRONMENTS) {
|
|
94
|
-
if (!this.config.configPerEnvironment[env]) {
|
|
95
|
-
this.config.configPerEnvironment[env] = {};
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
return this.config;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Ensure `.cred` is usable, recovering from a corrupt file if needed.
|
|
104
|
-
*
|
|
105
|
-
* `loadConfig` deliberately fails loud on a corrupt/invalid file so a read
|
|
106
|
-
* path never silently erases tokens. But `cred login` exists precisely to
|
|
107
|
-
* (re)establish config, so it must be able to get past a bad file — that is
|
|
108
|
-
* what the "re-run `cred login` to reset" message promises. We make the
|
|
109
|
-
* message true here: the bad file is renamed aside (never deleted, so a
|
|
110
|
-
* support engineer can still inspect it) and a fresh default is written.
|
|
111
|
-
*
|
|
112
|
-
* Only an {@link InvalidConfigError} triggers recovery. fs errors such as
|
|
113
|
-
* EACCES are real environment problems and are rethrown — resetting would
|
|
114
|
-
* just fail to write anyway, and we must not mask a permissions issue as a
|
|
115
|
-
* successful reset.
|
|
116
|
-
*
|
|
117
|
-
* @returns the path the corrupt file was backed up to, or null if the
|
|
118
|
-
* existing config was already valid.
|
|
119
|
-
*/
|
|
120
|
-
public recoverIfCorrupt(): string | null {
|
|
121
|
-
try {
|
|
122
|
-
this.loadConfig();
|
|
123
|
-
return null;
|
|
124
|
-
} catch (error) {
|
|
125
|
-
if (!(error instanceof InvalidConfigError)) {
|
|
126
|
-
throw error;
|
|
127
|
-
}
|
|
128
|
-
const backupPath = `${this.configPath}.corrupt-${crypto
|
|
129
|
-
.randomBytes(8)
|
|
130
|
-
.toString("hex")}`;
|
|
131
|
-
fs.renameSync(this.configPath, backupPath);
|
|
132
|
-
logger.warn(
|
|
133
|
-
`Existing config at ${this.configPath} was invalid and could not be read. ` +
|
|
134
|
-
`Backed it up to ${backupPath} and reset to defaults.`,
|
|
135
|
-
);
|
|
136
|
-
this.config = this.defaultConfig();
|
|
137
|
-
this.writeConfig();
|
|
138
|
-
return backupPath;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
private defaultConfig(): ConfigFile {
|
|
143
|
-
const configPerEnvironment: ConfigFile["configPerEnvironment"] = {};
|
|
144
|
-
for (const env of ALL_ENVIRONMENTS) {
|
|
145
|
-
configPerEnvironment[env] = {};
|
|
146
|
-
}
|
|
147
|
-
return { configPerEnvironment, activeEnvironment: "production" };
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// Atomic: write to a sibling temp file, then rename into place.
|
|
151
|
-
// Readers either see the old file or the new file, never a truncated
|
|
152
|
-
// zero-byte snapshot (the window that `writeFileSync` exposes between
|
|
153
|
-
// open(O_TRUNC) and write).
|
|
154
|
-
//
|
|
155
|
-
// The temp suffix uses 16 bytes of crypto-random hex so the temp
|
|
156
|
-
// path is unguessable — a predictable name (pid + Date.now()) lets a
|
|
157
|
-
// co-located attacker pre-create a symlink at that path and trick
|
|
158
|
-
// us into clobbering an arbitrary file (CodeQL js/insecure-temporary-file).
|
|
159
|
-
// O_EXCL on open further refuses to follow a pre-existing entry.
|
|
160
|
-
private writeConfig(): void {
|
|
161
|
-
const tmp = `${this.configPath}.${crypto.randomBytes(16).toString("hex")}.tmp`;
|
|
162
|
-
const fd = fs.openSync(
|
|
163
|
-
tmp,
|
|
164
|
-
fs.constants.O_WRONLY | fs.constants.O_CREAT | fs.constants.O_EXCL,
|
|
165
|
-
0o600,
|
|
166
|
-
);
|
|
167
|
-
try {
|
|
168
|
-
fs.writeFileSync(fd, JSON.stringify(this.config));
|
|
169
|
-
} finally {
|
|
170
|
-
fs.closeSync(fd);
|
|
171
|
-
}
|
|
172
|
-
fs.renameSync(tmp, this.configPath);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
public setOrganization(organizationName: string) {
|
|
176
|
-
this.loadConfig();
|
|
177
|
-
// TODO: Validate organization exists and user has access.
|
|
178
|
-
const environment = this.getEnvironment();
|
|
179
|
-
this.config.configPerEnvironment[environment].organization =
|
|
180
|
-
organizationName;
|
|
181
|
-
this.writeConfig();
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
public setProject(projectName: string) {
|
|
185
|
-
this.loadConfig();
|
|
186
|
-
// TODO: Validate project exists and user has access.
|
|
187
|
-
const environment = this.getEnvironment();
|
|
188
|
-
this.config.configPerEnvironment[environment].project = projectName;
|
|
189
|
-
this.writeConfig();
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
public getOrganization() {
|
|
193
|
-
this.loadConfig();
|
|
194
|
-
const environment = this.getEnvironment();
|
|
195
|
-
return this.config.configPerEnvironment[environment].organization;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
public getProject() {
|
|
199
|
-
this.loadConfig();
|
|
200
|
-
const environment = this.getEnvironment();
|
|
201
|
-
return this.config.configPerEnvironment[environment].project;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
public setAccessToken(userToken: boolean, accessToken: string) {
|
|
205
|
-
this.loadConfig();
|
|
206
|
-
const environment = this.getEnvironment();
|
|
207
|
-
this.config.configPerEnvironment[environment].isServiceAccountToken =
|
|
208
|
-
!userToken;
|
|
209
|
-
this.config.configPerEnvironment[environment].accessToken = accessToken;
|
|
210
|
-
this.writeConfig();
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
public getAuthenticationHeader() {
|
|
214
|
-
const environment = this.getEnvironment();
|
|
215
|
-
const jwt = this.config.configPerEnvironment[environment].accessToken;
|
|
216
|
-
const isServiceAccountToken =
|
|
217
|
-
this.config.configPerEnvironment[environment].isServiceAccountToken;
|
|
218
|
-
const authType = isServiceAccountToken ? "ApiKey" : "Bearer";
|
|
219
|
-
return `${authType} ${jwt}`;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
getAccessToken() {
|
|
223
|
-
this.loadConfig();
|
|
224
|
-
const environment = this.getEnvironment();
|
|
225
|
-
return this.config.configPerEnvironment[environment].accessToken;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
public setJwtAccessToken(jwtAccessToken: string) {
|
|
229
|
-
this.loadConfig();
|
|
230
|
-
const environment = this.getEnvironment();
|
|
231
|
-
this.config.configPerEnvironment[environment].jwtAccessToken =
|
|
232
|
-
jwtAccessToken;
|
|
233
|
-
this.writeConfig();
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
public getJwtAccessToken(): string | undefined {
|
|
237
|
-
this.loadConfig();
|
|
238
|
-
const environment = this.getEnvironment();
|
|
239
|
-
return this.config.configPerEnvironment[environment].jwtAccessToken;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
public setVSCodeUser(username: string, email: string) {
|
|
243
|
-
this.loadConfig();
|
|
244
|
-
const environment = this.getEnvironment();
|
|
245
|
-
if (!this.config.configPerEnvironment[environment]) {
|
|
246
|
-
this.config.configPerEnvironment[environment] = {};
|
|
247
|
-
}
|
|
248
|
-
this.config.configPerEnvironment[environment].vsCodeUser = {
|
|
249
|
-
username,
|
|
250
|
-
email,
|
|
251
|
-
};
|
|
252
|
-
this.writeConfig();
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
public getVSCodeUser(): { username: string; email: string } | undefined {
|
|
256
|
-
this.loadConfig();
|
|
257
|
-
const environment = this.getEnvironment();
|
|
258
|
-
return this.config.configPerEnvironment[environment].vsCodeUser;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
public setRefreshToken(refreshToken: string) {
|
|
262
|
-
this.loadConfig();
|
|
263
|
-
const environment = this.getEnvironment();
|
|
264
|
-
this.config.configPerEnvironment[environment].refreshToken = refreshToken;
|
|
265
|
-
this.writeConfig();
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
public getRefreshToken(): string | undefined {
|
|
269
|
-
this.loadConfig();
|
|
270
|
-
const environment = this.getEnvironment();
|
|
271
|
-
return this.config.configPerEnvironment[environment].refreshToken;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
public doesConfigExists() {
|
|
275
|
-
this.loadConfig();
|
|
276
|
-
const environment = this.getEnvironment();
|
|
277
|
-
return Boolean(this.config.configPerEnvironment[environment]);
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
public getHeaders() {
|
|
281
|
-
return {
|
|
282
|
-
Authorization: this.getAuthenticationHeader(),
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
public destroyConfig() {
|
|
287
|
-
this.loadConfig();
|
|
288
|
-
const environment = this.getEnvironment();
|
|
289
|
-
this.config.configPerEnvironment[environment] = {};
|
|
290
|
-
this.writeConfig();
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
public setEnvironment(environment: Environment) {
|
|
294
|
-
this.loadConfig();
|
|
295
|
-
this.config.activeEnvironment = environment;
|
|
296
|
-
this.writeConfig();
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
public getEnvironment() {
|
|
300
|
-
this.loadConfig();
|
|
301
|
-
return this.config.activeEnvironment || "production";
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
public isTokenValid(): { valid: boolean; reason?: string } {
|
|
305
|
-
this.loadConfig();
|
|
306
|
-
const environment = this.getEnvironment();
|
|
307
|
-
const accessToken =
|
|
308
|
-
this.config.configPerEnvironment[environment]?.accessToken;
|
|
309
|
-
|
|
310
|
-
if (!accessToken) {
|
|
311
|
-
return { valid: false, reason: "No token found. Please login." };
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
const isServiceAccountToken =
|
|
315
|
-
this.config.configPerEnvironment[environment]?.isServiceAccountToken;
|
|
316
|
-
if (isServiceAccountToken) {
|
|
317
|
-
return { valid: true };
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
try {
|
|
321
|
-
const decoded = jwtDecode<JwtPayload>(accessToken);
|
|
322
|
-
const currentTime = Math.floor(Date.now() / 1000);
|
|
323
|
-
|
|
324
|
-
if (decoded.exp && decoded.exp < currentTime) {
|
|
325
|
-
return {
|
|
326
|
-
valid: false,
|
|
327
|
-
reason: "Token expired. Please login again.",
|
|
328
|
-
};
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
return { valid: true };
|
|
332
|
-
} catch {
|
|
333
|
-
return {
|
|
334
|
-
valid: false,
|
|
335
|
-
reason: "Invalid token format. Please login again.",
|
|
336
|
-
};
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
public printStatus() {
|
|
341
|
-
this.loadConfig();
|
|
342
|
-
const tokenStatus = this.isTokenValid();
|
|
343
|
-
const cell = this.getEnvironment();
|
|
344
|
-
|
|
345
|
-
// The cell prints on both branches, and before anything else: an org and an
|
|
346
|
-
// environment name alone do not identify a cell (two cells can both hold a
|
|
347
|
-
// `demo`), and a stale token is most often a token for the wrong one.
|
|
348
|
-
console.log(kleur.green(ASCII_TITLE));
|
|
349
|
-
logger.info(`Cell: ${kleur.green(cell)} (${controlPlanesByEnv[cell]})`);
|
|
350
|
-
|
|
351
|
-
if (tokenStatus.valid) {
|
|
352
|
-
const organization = this.getOrganization();
|
|
353
|
-
const project = this.getProject();
|
|
354
|
-
|
|
355
|
-
logger.info(`Organization: ${kleur.green(organization || "Not set")}`);
|
|
356
|
-
logger.info(`Environment: ${kleur.green(project || "Not set")}`);
|
|
357
|
-
} else {
|
|
358
|
-
logger.error("Failed to get status");
|
|
359
|
-
logger.error(
|
|
360
|
-
tokenStatus.reason || "Please, make sure that you are logged in",
|
|
361
|
-
);
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
}
|
package/src/commands/add.ts
DELETED
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { Command } from "commander";
|
|
3
|
-
import { controlPlanesByEnv, Environment } from "../constants";
|
|
4
|
-
import { createConnections } from "./connection/createconnections";
|
|
5
|
-
import { addMember } from "./group/addmember";
|
|
6
|
-
import { createGroup } from "./group/creategroup";
|
|
7
|
-
import { createGroupAccessToken } from "./groupaccesstoken/createToken";
|
|
8
|
-
import { createEnvironment } from "./environment/createenvironment";
|
|
9
|
-
import { warnProjectDeprecated } from "./legacy";
|
|
10
|
-
import { createPermission } from "./permission/createpermission";
|
|
11
|
-
|
|
12
|
-
export const registerAddCommands = (cli: Command, environment: Environment) => {
|
|
13
|
-
const add = cli
|
|
14
|
-
.command("add")
|
|
15
|
-
.description("Add a resource")
|
|
16
|
-
.argument("<resource>", "The resource to add");
|
|
17
|
-
|
|
18
|
-
const addEnvironmentAction = (environmentName: string, options: any) => {
|
|
19
|
-
createEnvironment(
|
|
20
|
-
controlPlanesByEnv[environment],
|
|
21
|
-
environmentName,
|
|
22
|
-
options.readmeFile,
|
|
23
|
-
options.replication,
|
|
24
|
-
options.debug,
|
|
25
|
-
options.yes,
|
|
26
|
-
);
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
add.command("environment")
|
|
30
|
-
.description("Add an environment.")
|
|
31
|
-
.argument("<environmentName>", "The name of the environment to create.")
|
|
32
|
-
.option("--debug")
|
|
33
|
-
.option("-y, --yes", "Skip confirmation.")
|
|
34
|
-
.option(
|
|
35
|
-
"--readmeFile <readmeFile>",
|
|
36
|
-
"The path to the readme file for the environment.",
|
|
37
|
-
)
|
|
38
|
-
.option(
|
|
39
|
-
"--replication <replicationCount>",
|
|
40
|
-
"The replication count (must be at least 1).",
|
|
41
|
-
parseInt,
|
|
42
|
-
)
|
|
43
|
-
.action(addEnvironmentAction);
|
|
44
|
-
|
|
45
|
-
add.command("project")
|
|
46
|
-
.description("[deprecated] Alias for 'add environment'.")
|
|
47
|
-
.argument("<projectName>", "The name of the environment to create.")
|
|
48
|
-
.option("--debug")
|
|
49
|
-
.option("-y, --yes", "Skip confirmation.")
|
|
50
|
-
.option(
|
|
51
|
-
"--readmeFile <readmeFile>",
|
|
52
|
-
"The path to the readme file for the environment.",
|
|
53
|
-
)
|
|
54
|
-
.option(
|
|
55
|
-
"--replication <replicationCount>",
|
|
56
|
-
"The replication count (must be at least 1).",
|
|
57
|
-
parseInt,
|
|
58
|
-
)
|
|
59
|
-
.action((projectName, options) => {
|
|
60
|
-
warnProjectDeprecated("add environment");
|
|
61
|
-
addEnvironmentAction(projectName, options);
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
add.command("connection")
|
|
65
|
-
.argument(
|
|
66
|
-
"<connectionFileName>",
|
|
67
|
-
"The path to the file containing the connections to create.",
|
|
68
|
-
)
|
|
69
|
-
.option(
|
|
70
|
-
"--include-tables <includeTables>",
|
|
71
|
-
"The list of tables to include. Ex: {dataset/schema}.{table}",
|
|
72
|
-
)
|
|
73
|
-
.option(
|
|
74
|
-
"--exclude-tables <excludeTables>",
|
|
75
|
-
"The list of tables to exclude. Ex: {dataset/schema}.{table}",
|
|
76
|
-
)
|
|
77
|
-
.option(
|
|
78
|
-
"--skip-indexing",
|
|
79
|
-
"Disable automatic indexing for this connection.",
|
|
80
|
-
false,
|
|
81
|
-
)
|
|
82
|
-
.option("--debug")
|
|
83
|
-
.option("-y, --yes", "Skip confirmation.")
|
|
84
|
-
.action((connectionFileName, options) => {
|
|
85
|
-
createConnections(
|
|
86
|
-
controlPlanesByEnv[environment],
|
|
87
|
-
connectionFileName,
|
|
88
|
-
options.includeTables,
|
|
89
|
-
options.excludeTables,
|
|
90
|
-
options.skipIndexing,
|
|
91
|
-
options.debug,
|
|
92
|
-
options.yes,
|
|
93
|
-
);
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
add.command("group")
|
|
97
|
-
.description("Add a group.")
|
|
98
|
-
.argument("<groupName>", "The name of the group to create")
|
|
99
|
-
.option("-d, --description <description>", "Description for the group")
|
|
100
|
-
.option("--debug")
|
|
101
|
-
.option("-y, --yes", "Skip confirmation.")
|
|
102
|
-
.action((groupName, options) => {
|
|
103
|
-
createGroup(
|
|
104
|
-
controlPlanesByEnv[environment],
|
|
105
|
-
groupName,
|
|
106
|
-
options.debug || false,
|
|
107
|
-
options.description,
|
|
108
|
-
);
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
add.command("member")
|
|
112
|
-
.description("Add a member to a group.")
|
|
113
|
-
.argument("<groupName>", "The name of the group")
|
|
114
|
-
.argument("<memberType>", "The type of member (user or group)")
|
|
115
|
-
.argument("<memberName>", "The name of the member")
|
|
116
|
-
.argument("<role>", "The role for the member (admin or member)")
|
|
117
|
-
.option("--debug")
|
|
118
|
-
.action((groupName, memberType, memberName, role, options) => {
|
|
119
|
-
addMember(
|
|
120
|
-
controlPlanesByEnv[environment],
|
|
121
|
-
groupName,
|
|
122
|
-
memberType,
|
|
123
|
-
memberName,
|
|
124
|
-
role,
|
|
125
|
-
options.debug || false,
|
|
126
|
-
);
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
add.command("permission")
|
|
130
|
-
.description(
|
|
131
|
-
"Grant a user or group a permission on the organization, an environment, or a package.",
|
|
132
|
-
)
|
|
133
|
-
.argument(
|
|
134
|
-
"<userGroupId>",
|
|
135
|
-
"Who to grant it to [user:{email}|group:{groupName}|user:*]",
|
|
136
|
-
)
|
|
137
|
-
.argument(
|
|
138
|
-
"<role>",
|
|
139
|
-
"The role to grant (organization: admin|modeler|member; environment: admin|modeler|viewer; package: viewer)",
|
|
140
|
-
)
|
|
141
|
-
.option(
|
|
142
|
-
"--environment <environmentName>",
|
|
143
|
-
"Grant on this environment instead of the organization.",
|
|
144
|
-
)
|
|
145
|
-
.option(
|
|
146
|
-
"--package <packageName>",
|
|
147
|
-
"Grant on this package. Uses --environment, or the current environment.",
|
|
148
|
-
)
|
|
149
|
-
.option(
|
|
150
|
-
"--notifyPeople",
|
|
151
|
-
"Email the person about the new access. Applies to an environment or a package; an organization grant always notifies a user subject.",
|
|
152
|
-
false,
|
|
153
|
-
)
|
|
154
|
-
.option("--debug")
|
|
155
|
-
.option("-y, --yes", "Skip confirmation.")
|
|
156
|
-
.action((userGroupId, role, options) => {
|
|
157
|
-
createPermission(
|
|
158
|
-
controlPlanesByEnv[environment],
|
|
159
|
-
userGroupId,
|
|
160
|
-
role,
|
|
161
|
-
options.debug || false,
|
|
162
|
-
{
|
|
163
|
-
environment: options.environment,
|
|
164
|
-
package: options.package,
|
|
165
|
-
notifyPeople: options.notifyPeople === true,
|
|
166
|
-
yes: options.yes === true,
|
|
167
|
-
},
|
|
168
|
-
);
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
add.command("group-access-token")
|
|
172
|
-
.description("Create an access token for a group.")
|
|
173
|
-
.argument("<groupName>", "The name of the group")
|
|
174
|
-
.argument("<tokenName>", "The name of the token to create")
|
|
175
|
-
.option(
|
|
176
|
-
"-e, --expires-at <expiresAt>",
|
|
177
|
-
"Token expiration date in ISO 8601 format (e.g., 2025-12-31T23:59:59Z). If not provided, token will expire in 99 years.",
|
|
178
|
-
)
|
|
179
|
-
.option("--debug")
|
|
180
|
-
.option("-j, --json-output", "Output only JSON (for use in scripts)")
|
|
181
|
-
.action((groupName, tokenName, options) => {
|
|
182
|
-
createGroupAccessToken(
|
|
183
|
-
controlPlanesByEnv[environment],
|
|
184
|
-
groupName,
|
|
185
|
-
tokenName,
|
|
186
|
-
options.expiresAt,
|
|
187
|
-
options.jsonOutput === true,
|
|
188
|
-
options.debug || false,
|
|
189
|
-
);
|
|
190
|
-
});
|
|
191
|
-
};
|