primitive-admin 1.0.61 → 1.0.63
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 +125 -69
- package/assets/skill/skills/primitive-platform/SKILL.md +336 -37
- package/dist/bin/primitive.js +25 -14
- package/dist/bin/primitive.js.map +1 -1
- package/dist/src/commands/analytics.js +36 -16
- package/dist/src/commands/analytics.js.map +1 -1
- package/dist/src/commands/apps.js +52 -188
- package/dist/src/commands/apps.js.map +1 -1
- package/dist/src/commands/blob-buckets.js +13 -153
- package/dist/src/commands/blob-buckets.js.map +1 -1
- package/dist/src/commands/collection-type-configs.js +14 -100
- package/dist/src/commands/collection-type-configs.js.map +1 -1
- package/dist/src/commands/collections.js +47 -8
- package/dist/src/commands/collections.js.map +1 -1
- package/dist/src/commands/config.d.ts +46 -0
- package/dist/src/commands/config.js +479 -0
- package/dist/src/commands/config.js.map +1 -0
- package/dist/src/commands/connections.js +12 -7
- package/dist/src/commands/connections.js.map +1 -1
- package/dist/src/commands/cron-triggers.js +84 -176
- package/dist/src/commands/cron-triggers.js.map +1 -1
- package/dist/src/commands/database-type-configs.d.ts +2 -0
- package/dist/src/commands/database-type-configs.js +171 -0
- package/dist/src/commands/database-type-configs.js.map +1 -0
- package/dist/src/commands/database-types.js +4 -4
- package/dist/src/commands/database-types.js.map +1 -1
- package/dist/src/commands/databases.d.ts +63 -0
- package/dist/src/commands/databases.js +649 -87
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/documents.js +869 -12
- package/dist/src/commands/documents.js.map +1 -1
- package/dist/src/commands/email-templates.js +21 -128
- package/dist/src/commands/email-templates.js.map +1 -1
- package/dist/src/commands/env.d.ts +12 -1
- package/dist/src/commands/env.js +115 -26
- package/dist/src/commands/env.js.map +1 -1
- package/dist/src/commands/feature-flags.d.ts +14 -0
- package/dist/src/commands/feature-flags.js +116 -0
- package/dist/src/commands/feature-flags.js.map +1 -0
- package/dist/src/commands/group-type-configs.js +14 -109
- package/dist/src/commands/group-type-configs.js.map +1 -1
- package/dist/src/commands/init.d.ts +24 -1
- package/dist/src/commands/init.js +1194 -279
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/integrations.js +166 -435
- package/dist/src/commands/integrations.js.map +1 -1
- package/dist/src/commands/metadata-category-configs.d.ts +12 -0
- package/dist/src/commands/metadata-category-configs.js +112 -0
- package/dist/src/commands/metadata-category-configs.js.map +1 -0
- package/dist/src/commands/metadata.js +33 -141
- package/dist/src/commands/metadata.js.map +1 -1
- package/dist/src/commands/prompts.js +206 -563
- package/dist/src/commands/prompts.js.map +1 -1
- package/dist/src/commands/rule-sets.d.ts +1 -1
- package/dist/src/commands/rule-sets.js +16 -132
- package/dist/src/commands/rule-sets.js.map +1 -1
- package/dist/src/commands/scripts.d.ts +10 -0
- package/dist/src/commands/scripts.js +203 -241
- package/dist/src/commands/scripts.js.map +1 -1
- package/dist/src/commands/sessions.js +17 -5
- package/dist/src/commands/sessions.js.map +1 -1
- package/dist/src/commands/sync-app-settings.d.ts +113 -70
- package/dist/src/commands/sync-app-settings.js +193 -242
- package/dist/src/commands/sync-app-settings.js.map +1 -1
- package/dist/src/commands/sync.d.ts +1904 -51
- package/dist/src/commands/sync.js +9468 -1790
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/commands/tokens.js +8 -2
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/commands/users.js +92 -1
- package/dist/src/commands/users.js.map +1 -1
- package/dist/src/commands/vars.js +44 -58
- package/dist/src/commands/vars.js.map +1 -1
- package/dist/src/commands/webhooks.js +318 -156
- package/dist/src/commands/webhooks.js.map +1 -1
- package/dist/src/commands/workflows.d.ts +49 -12
- package/dist/src/commands/workflows.js +652 -1086
- package/dist/src/commands/workflows.js.map +1 -1
- package/dist/src/lib/access-rule-display.d.ts +21 -0
- package/dist/src/lib/access-rule-display.js +34 -0
- package/dist/src/lib/access-rule-display.js.map +1 -0
- package/dist/src/lib/api-client.d.ts +541 -61
- package/dist/src/lib/api-client.js +559 -102
- package/dist/src/lib/api-client.js.map +1 -1
- package/dist/src/lib/app-settings-descriptor.d.ts +180 -25
- package/dist/src/lib/app-settings-descriptor.js +403 -82
- package/dist/src/lib/app-settings-descriptor.js.map +1 -1
- package/dist/src/lib/canonical-json.d.ts +12 -0
- package/dist/src/lib/canonical-json.js +35 -0
- package/dist/src/lib/canonical-json.js.map +1 -0
- package/dist/src/lib/cli-manifest.d.ts +8 -0
- package/dist/src/lib/cli-manifest.js +1 -0
- package/dist/src/lib/cli-manifest.js.map +1 -1
- package/dist/src/lib/codegen-shared/generatedFiles.d.ts +6 -2
- package/dist/src/lib/codegen-shared/generatedFiles.js +9 -2
- package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -1
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +6 -6
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +8 -8
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js.map +1 -1
- package/dist/src/lib/config-object-descriptor.d.ts +127 -0
- package/dist/src/lib/config-object-descriptor.js +658 -0
- package/dist/src/lib/config-object-descriptor.js.map +1 -0
- package/dist/src/lib/config-payload.d.ts +85 -0
- package/dist/src/lib/config-payload.js +116 -0
- package/dist/src/lib/config-payload.js.map +1 -0
- package/dist/src/lib/config-surface.d.ts +130 -0
- package/dist/src/lib/config-surface.js +300 -0
- package/dist/src/lib/config-surface.js.map +1 -0
- package/dist/src/lib/credentials-store.d.ts +10 -0
- package/dist/src/lib/credentials-store.js +23 -0
- package/dist/src/lib/credentials-store.js.map +1 -1
- package/dist/src/lib/data-input.d.ts +23 -0
- package/dist/src/lib/data-input.js +50 -0
- package/dist/src/lib/data-input.js.map +1 -0
- package/dist/src/lib/db-codegen/dbTemplates.js +1 -1
- package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -1
- package/dist/src/lib/db-codegen/dbTypeIR.d.ts +1 -1
- package/dist/src/lib/env-resolver-core.d.ts +187 -0
- package/dist/src/lib/env-resolver-core.js +325 -0
- package/dist/src/lib/env-resolver-core.js.map +1 -0
- package/dist/src/lib/env-resolver.d.ts +28 -6
- package/dist/src/lib/env-resolver.js +44 -32
- package/dist/src/lib/env-resolver.js.map +1 -1
- package/dist/src/lib/generated-allowlist.js +12 -0
- package/dist/src/lib/generated-allowlist.js.map +1 -1
- package/dist/src/lib/generated-config-surfaces.d.ts +682 -0
- package/dist/src/lib/generated-config-surfaces.js +4058 -0
- package/dist/src/lib/generated-config-surfaces.js.map +1 -0
- package/dist/src/lib/generated-template-lint.d.ts +212 -0
- package/dist/src/lib/generated-template-lint.js +624 -0
- package/dist/src/lib/generated-template-lint.js.map +1 -0
- package/dist/src/lib/init-adopt.d.ts +16 -0
- package/dist/src/lib/init-adopt.js +34 -0
- package/dist/src/lib/init-adopt.js.map +1 -0
- package/dist/src/lib/init-assets.d.ts +39 -0
- package/dist/src/lib/init-assets.js +97 -0
- package/dist/src/lib/init-assets.js.map +1 -0
- package/dist/src/lib/init-client-platforms.d.ts +14 -0
- package/dist/src/lib/init-client-platforms.js +71 -0
- package/dist/src/lib/init-client-platforms.js.map +1 -0
- package/dist/src/lib/init-config.d.ts +44 -5
- package/dist/src/lib/init-config.js +80 -7
- package/dist/src/lib/init-config.js.map +1 -1
- package/dist/src/lib/init-email-redirect-uris.d.ts +37 -0
- package/dist/src/lib/init-email-redirect-uris.js +46 -0
- package/dist/src/lib/init-email-redirect-uris.js.map +1 -0
- package/dist/src/lib/init-ios-links.d.ts +90 -0
- package/dist/src/lib/init-ios-links.js +218 -0
- package/dist/src/lib/init-ios-links.js.map +1 -0
- package/dist/src/lib/init-plan.d.ts +80 -0
- package/dist/src/lib/init-plan.js +95 -0
- package/dist/src/lib/init-plan.js.map +1 -0
- package/dist/src/lib/init-production-env.d.ts +48 -0
- package/dist/src/lib/init-production-env.js +59 -0
- package/dist/src/lib/init-production-env.js.map +1 -0
- package/dist/src/lib/init-schema.d.ts +74 -0
- package/dist/src/lib/init-schema.js +358 -0
- package/dist/src/lib/init-schema.js.map +1 -0
- package/dist/src/lib/init-xcode.d.ts +33 -0
- package/dist/src/lib/init-xcode.js +114 -0
- package/dist/src/lib/init-xcode.js.map +1 -0
- package/dist/src/lib/integration-request-config.d.ts +30 -0
- package/dist/src/lib/integration-request-config.js +145 -0
- package/dist/src/lib/integration-request-config.js.map +1 -0
- package/dist/src/lib/integration-selector.d.ts +42 -0
- package/dist/src/lib/integration-selector.js +46 -0
- package/dist/src/lib/integration-selector.js.map +1 -0
- package/dist/src/lib/local-state.d.ts +55 -0
- package/dist/src/lib/local-state.js +167 -0
- package/dist/src/lib/local-state.js.map +1 -0
- package/dist/src/lib/local-test-cases.d.ts +63 -0
- package/dist/src/lib/local-test-cases.js +135 -0
- package/dist/src/lib/local-test-cases.js.map +1 -0
- package/dist/src/lib/log-inspection.d.ts +568 -0
- package/dist/src/lib/log-inspection.js +639 -0
- package/dist/src/lib/log-inspection.js.map +1 -0
- package/dist/src/lib/migration-nag.d.ts +2 -2
- package/dist/src/lib/migration-nag.js +3 -3
- package/dist/src/lib/object-status-filter.d.ts +22 -0
- package/dist/src/lib/object-status-filter.js +45 -0
- package/dist/src/lib/object-status-filter.js.map +1 -0
- package/dist/src/lib/output.d.ts +24 -1
- package/dist/src/lib/output.js +42 -1
- package/dist/src/lib/output.js.map +1 -1
- package/dist/src/lib/package-manager.d.ts +140 -0
- package/dist/src/lib/package-manager.js +305 -0
- package/dist/src/lib/package-manager.js.map +1 -0
- package/dist/src/lib/paginate.d.ts +50 -0
- package/dist/src/lib/paginate.js +53 -0
- package/dist/src/lib/paginate.js.map +1 -1
- package/dist/src/lib/platform-owned.d.ts +29 -3
- package/dist/src/lib/platform-owned.js +42 -3
- package/dist/src/lib/platform-owned.js.map +1 -1
- package/dist/src/lib/project-config.d.ts +8 -0
- package/dist/src/lib/project-config.js +30 -5
- package/dist/src/lib/project-config.js.map +1 -1
- package/dist/src/lib/query-operators.d.ts +1 -1
- package/dist/src/lib/query-operators.js +1 -1
- package/dist/src/lib/record-filter.d.ts +18 -0
- package/dist/src/lib/record-filter.js +55 -0
- package/dist/src/lib/record-filter.js.map +1 -0
- package/dist/src/lib/resolve-init-dev-port.d.ts +56 -0
- package/dist/src/lib/resolve-init-dev-port.js +55 -0
- package/dist/src/lib/resolve-init-dev-port.js.map +1 -0
- package/dist/src/lib/resolve-init-server.d.ts +64 -0
- package/dist/src/lib/resolve-init-server.js +77 -0
- package/dist/src/lib/resolve-init-server.js.map +1 -0
- package/dist/src/lib/resolve-platform.d.ts +43 -14
- package/dist/src/lib/resolve-platform.js +74 -12
- package/dist/src/lib/resolve-platform.js.map +1 -1
- package/dist/src/lib/run-status.d.ts +19 -0
- package/dist/src/lib/run-status.generated.d.ts +39 -0
- package/dist/src/lib/run-status.generated.js +66 -0
- package/dist/src/lib/run-status.generated.js.map +1 -0
- package/dist/src/lib/run-status.js +19 -0
- package/dist/src/lib/run-status.js.map +1 -0
- package/dist/src/lib/server-text-normalization.d.ts +51 -0
- package/dist/src/lib/server-text-normalization.js +90 -0
- package/dist/src/lib/server-text-normalization.js.map +1 -0
- package/dist/src/lib/server-url.d.ts +22 -0
- package/dist/src/lib/server-url.js +33 -0
- package/dist/src/lib/server-url.js.map +1 -0
- package/dist/src/lib/signing-secret-status.d.ts +81 -0
- package/dist/src/lib/signing-secret-status.js +116 -0
- package/dist/src/lib/signing-secret-status.js.map +1 -0
- package/dist/src/lib/skill-installer.js +6 -3
- package/dist/src/lib/skill-installer.js.map +1 -1
- package/dist/src/lib/snapshots.d.ts +2 -2
- package/dist/src/lib/snapshots.js +2 -2
- package/dist/src/lib/swift-codegen/dbGenerator.d.ts +15 -2
- package/dist/src/lib/swift-codegen/dbGenerator.js +250 -18
- package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -1
- package/dist/src/lib/swift-codegen/generator.d.ts +11 -2
- package/dist/src/lib/swift-codegen/generator.js +181 -7
- package/dist/src/lib/swift-codegen/generator.js.map +1 -1
- package/dist/src/lib/swift-codegen/siblingSymbols.d.ts +7 -3
- package/dist/src/lib/swift-codegen/siblingSymbols.js +4 -1
- package/dist/src/lib/swift-codegen/siblingSymbols.js.map +1 -1
- package/dist/src/lib/sync-dir-selector.d.ts +21 -0
- package/dist/src/lib/sync-dir-selector.js +30 -0
- package/dist/src/lib/sync-dir-selector.js.map +1 -0
- package/dist/src/lib/sync-paths.d.ts +39 -0
- package/dist/src/lib/sync-paths.js +70 -2
- package/dist/src/lib/sync-paths.js.map +1 -1
- package/dist/src/lib/sync-resource-types.d.ts +138 -31
- package/dist/src/lib/sync-resource-types.js +241 -47
- package/dist/src/lib/sync-resource-types.js.map +1 -1
- package/dist/src/lib/sync-selectors.d.ts +95 -0
- package/dist/src/lib/sync-selectors.js +228 -0
- package/dist/src/lib/sync-selectors.js.map +1 -0
- package/dist/src/lib/template.d.ts +62 -4
- package/dist/src/lib/template.js +147 -39
- package/dist/src/lib/template.js.map +1 -1
- package/dist/src/lib/test-case-file-names.d.ts +40 -0
- package/dist/src/lib/test-case-file-names.js +91 -0
- package/dist/src/lib/test-case-file-names.js.map +1 -0
- package/dist/src/lib/test-case-keys.d.ts +29 -0
- package/dist/src/lib/test-case-keys.js +55 -0
- package/dist/src/lib/test-case-keys.js.map +1 -0
- package/dist/src/lib/test-case-variables.d.ts +15 -0
- package/dist/src/lib/test-case-variables.js +29 -0
- package/dist/src/lib/test-case-variables.js.map +1 -0
- package/dist/src/lib/toml-database-config.d.ts +4 -4
- package/dist/src/lib/toml-database-config.js +27 -34
- package/dist/src/lib/toml-database-config.js.map +1 -1
- package/dist/src/lib/toml-metadata-config.d.ts +9 -5
- package/dist/src/lib/toml-metadata-config.js +40 -45
- package/dist/src/lib/toml-metadata-config.js.map +1 -1
- package/dist/src/lib/toml-native-form.d.ts +1 -1
- package/dist/src/lib/toml-native-form.js +1 -1
- package/dist/src/lib/toml-params-validator.d.ts +1 -1
- package/dist/src/lib/toml-params-validator.js +1 -1
- package/dist/src/lib/toml-scalar-edit.d.ts +43 -0
- package/dist/src/lib/toml-scalar-edit.js +283 -0
- package/dist/src/lib/toml-scalar-edit.js.map +1 -0
- package/dist/src/lib/user-selector.d.ts +24 -0
- package/dist/src/lib/user-selector.js +33 -0
- package/dist/src/lib/user-selector.js.map +1 -0
- package/dist/src/lib/version-check.d.ts +25 -0
- package/dist/src/lib/version-check.js +77 -8
- package/dist/src/lib/version-check.js.map +1 -1
- package/dist/src/lib/watch.d.ts +121 -0
- package/dist/src/lib/watch.js +169 -0
- package/dist/src/lib/watch.js.map +1 -0
- package/dist/src/lib/web-url.d.ts +40 -0
- package/dist/src/lib/web-url.js +76 -0
- package/dist/src/lib/web-url.js.map +1 -0
- package/dist/src/lib/workflow-apply.d.ts +69 -45
- package/dist/src/lib/workflow-apply.js +99 -72
- package/dist/src/lib/workflow-apply.js.map +1 -1
- package/dist/src/lib/workflow-codegen/generator.js +4 -4
- package/dist/src/lib/workflow-codegen/generator.js.map +1 -1
- package/dist/src/lib/workflow-codegen/invokerIR.d.ts +11 -0
- package/dist/src/lib/workflow-codegen/invokerIR.js +5 -0
- package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -1
- package/dist/src/lib/workflow-config-apply.d.ts +70 -0
- package/dist/src/lib/workflow-config-apply.js +137 -0
- package/dist/src/lib/workflow-config-apply.js.map +1 -0
- package/dist/src/lib/workflow-config-sidecar.d.ts +63 -0
- package/dist/src/lib/workflow-config-sidecar.js +96 -0
- package/dist/src/lib/workflow-config-sidecar.js.map +1 -0
- package/dist/src/lib/workflow-defaults.d.ts +29 -0
- package/dist/src/lib/workflow-defaults.js +41 -0
- package/dist/src/lib/workflow-defaults.js.map +1 -0
- package/dist/src/lib/workflow-include-preserve.d.ts +76 -0
- package/dist/src/lib/workflow-include-preserve.js +286 -0
- package/dist/src/lib/workflow-include-preserve.js.map +1 -0
- package/dist/src/lib/workflow-payload.d.ts +31 -20
- package/dist/src/lib/workflow-payload.js +100 -110
- package/dist/src/lib/workflow-payload.js.map +1 -1
- package/dist/src/lib/workflow-toml-validator.d.ts +37 -16
- package/dist/src/lib/workflow-toml-validator.js +141 -16
- package/dist/src/lib/workflow-toml-validator.js.map +1 -1
- package/dist/src/types/index.d.ts +78 -22
- package/dist/src/validators.d.ts +7 -7
- package/dist/src/validators.js +6 -6
- package/package.json +11 -6
- package/dist/src/commands/settings.d.ts +0 -15
- package/dist/src/commands/settings.js +0 -102
- package/dist/src/commands/settings.js.map +0 -1
package/dist/src/commands/env.js
CHANGED
|
@@ -5,14 +5,31 @@
|
|
|
5
5
|
* env list — show all environments
|
|
6
6
|
* env add <name> — add a new environment
|
|
7
7
|
* env remove <name> — delete an environment
|
|
8
|
-
* env use <name> —
|
|
8
|
+
* env use <name> — select the environment THIS machine uses
|
|
9
9
|
* env show [name] — show details for an environment (default: current)
|
|
10
|
+
*
|
|
11
|
+
* Two different things live here, and #2873 stopped them sharing one field:
|
|
12
|
+
* - `defaultEnvironment` in the committed config is the TEAM default — what
|
|
13
|
+
* a fresh clone resolves.
|
|
14
|
+
* - `.primitive/local.json` is THIS machine's selection, written by
|
|
15
|
+
* `env use`. It is gitignored, so switching backends never dirties a
|
|
16
|
+
* tracked file.
|
|
17
|
+
*
|
|
18
|
+
* `list` and `show` therefore refuse to paper over a broken selection: corrupt
|
|
19
|
+
* local state, or a selection naming an environment that no longer exists, is
|
|
20
|
+
* a different situation from "nothing is selected" and has a different remedy.
|
|
10
21
|
*/
|
|
11
22
|
import { join, dirname } from "path";
|
|
12
23
|
import { CURRENT_CONFIG_VERSION, PROJECT_CONFIG_DIR, PROJECT_CONFIG_FILENAME, PROJECT_CONFIG_DISPLAY_NAME, ProjectConfigError, findProjectConfigPath, loadProjectConfig, saveProjectConfig, } from "../lib/project-config.js";
|
|
13
|
-
import {
|
|
24
|
+
import { getCurrentEnvironment, resetEnvResolver, } from "../lib/env-resolver.js";
|
|
25
|
+
import { PrimitiveEnvError, localStatePathForConfigPath, readLocalSelection, } from "../lib/env-resolver-core.js";
|
|
26
|
+
import { clearLocalSelection, ensureLocalStateIgnored, writeLocalSelection, } from "../lib/local-state.js";
|
|
14
27
|
import { clearCredentialsForEnvInProject } from "../lib/credentials-store.js";
|
|
28
|
+
import { validateServerUrl } from "../lib/server-url.js";
|
|
29
|
+
import { normalizeWebUrl, validateWebUrl } from "../lib/web-url.js";
|
|
15
30
|
import { error, info, keyValue, result as printResult, success, warn, json, formatTable, divider, } from "../lib/output.js";
|
|
31
|
+
/** How the per-machine selection file is named in user-facing messages. */
|
|
32
|
+
const LOCAL_STATE_LABEL = ".primitive/local.json";
|
|
16
33
|
function requireProjectConfig() {
|
|
17
34
|
const path = findProjectConfigPath();
|
|
18
35
|
if (!path) {
|
|
@@ -43,6 +60,28 @@ function validateEnvName(name) {
|
|
|
43
60
|
}
|
|
44
61
|
return null;
|
|
45
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* The environment display commands resolve for real rather than through the
|
|
65
|
+
* error-swallowing `getCurrentEnvNameSafe()`. A selection that cannot resolve
|
|
66
|
+
* is the whole point of these commands: hiding it behind "(none)" is how a
|
|
67
|
+
* user ends up staring at a table that disagrees with every other command.
|
|
68
|
+
*/
|
|
69
|
+
function resolveForDisplay() {
|
|
70
|
+
try {
|
|
71
|
+
const configPath = findProjectConfigPath();
|
|
72
|
+
const selected = configPath ? readLocalSelection(configPath) : null;
|
|
73
|
+
return { name: getCurrentEnvironment()?.name ?? null, selected };
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
if (err instanceof PrimitiveEnvError && err.kind === "no-selection") {
|
|
77
|
+
// Nothing selected among several environments is a legitimate state to
|
|
78
|
+
// display — the table shows them all and marks no current one.
|
|
79
|
+
return { name: null, selected: null };
|
|
80
|
+
}
|
|
81
|
+
error(err.message || String(err));
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
46
85
|
export function registerEnvCommands(program) {
|
|
47
86
|
const env = program
|
|
48
87
|
.command("env")
|
|
@@ -51,7 +90,7 @@ export function registerEnvCommands(program) {
|
|
|
51
90
|
Examples:
|
|
52
91
|
$ primitive env list # list environments
|
|
53
92
|
$ primitive env add prod --api-url https://... # add an environment
|
|
54
|
-
$ primitive env use prod #
|
|
93
|
+
$ primitive env use prod # select it on this machine
|
|
55
94
|
$ primitive env show dev # show env details
|
|
56
95
|
$ primitive env remove staging # remove an environment
|
|
57
96
|
`);
|
|
@@ -62,14 +101,18 @@ Examples:
|
|
|
62
101
|
.option("--json", "Output as JSON")
|
|
63
102
|
.action((options) => {
|
|
64
103
|
const { config } = requireProjectConfig();
|
|
104
|
+
const { name: current, selected } = resolveForDisplay();
|
|
65
105
|
const rows = Object.entries(config.environments).map(([name, e]) => ({
|
|
66
106
|
name,
|
|
67
107
|
apiUrl: e.apiUrl,
|
|
68
108
|
appId: e.appId || "(unset)",
|
|
109
|
+
current: name === current ? "*" : "",
|
|
69
110
|
default: name === config.defaultEnvironment ? "*" : "",
|
|
70
111
|
}));
|
|
71
112
|
if (options.json) {
|
|
72
113
|
json({
|
|
114
|
+
currentEnvironment: current,
|
|
115
|
+
selectedEnvironment: selected,
|
|
73
116
|
defaultEnvironment: config.defaultEnvironment || null,
|
|
74
117
|
environments: config.environments,
|
|
75
118
|
});
|
|
@@ -80,11 +123,18 @@ Examples:
|
|
|
80
123
|
return;
|
|
81
124
|
}
|
|
82
125
|
console.log(formatTable(rows, [
|
|
83
|
-
{ key: "
|
|
126
|
+
{ key: "current", header: "CURRENT" },
|
|
84
127
|
{ key: "name", header: "Name" },
|
|
85
128
|
{ key: "apiUrl", header: "API URL" },
|
|
86
129
|
{ key: "appId", header: "App ID" },
|
|
130
|
+
{ key: "default", header: "TEAM DEFAULT" },
|
|
87
131
|
]));
|
|
132
|
+
if (selected) {
|
|
133
|
+
info(`"${selected}" is selected on this machine (${LOCAL_STATE_LABEL}).`);
|
|
134
|
+
}
|
|
135
|
+
else if (config.defaultEnvironment) {
|
|
136
|
+
info(`No local selection; falling back to the committed default "${config.defaultEnvironment}". Run 'primitive env use <name>' to choose one.`);
|
|
137
|
+
}
|
|
88
138
|
});
|
|
89
139
|
// env add
|
|
90
140
|
env
|
|
@@ -94,6 +144,7 @@ Examples:
|
|
|
94
144
|
.requiredOption("--api-url <url>", "API base URL for this environment")
|
|
95
145
|
.option("--app-id <id>", "Optional app ID bound to this environment")
|
|
96
146
|
.option("--app-name <name>", "Optional app name (display only)")
|
|
147
|
+
.option("--web-url <url>", "Optional web origin for this environment (https://app.example.com) — the app's web deployment, which the emailed sign-in link points at")
|
|
97
148
|
.option("--description <text>", "Optional description")
|
|
98
149
|
.option("--default", "Set this environment as the new default")
|
|
99
150
|
.action((name, options) => {
|
|
@@ -102,14 +153,18 @@ Examples:
|
|
|
102
153
|
error(validationError);
|
|
103
154
|
process.exit(1);
|
|
104
155
|
}
|
|
105
|
-
// Validate
|
|
106
|
-
|
|
107
|
-
new URL(options.apiUrl);
|
|
108
|
-
}
|
|
109
|
-
catch {
|
|
156
|
+
// Validate URLs before touching disk.
|
|
157
|
+
if (validateServerUrl(options.apiUrl) !== true) {
|
|
110
158
|
error(`Invalid --api-url: ${options.apiUrl}`);
|
|
111
159
|
process.exit(1);
|
|
112
160
|
}
|
|
161
|
+
if (options.webUrl !== undefined) {
|
|
162
|
+
const problem = validateWebUrl(options.webUrl);
|
|
163
|
+
if (problem !== true) {
|
|
164
|
+
error(`Invalid --web-url: ${problem}`);
|
|
165
|
+
process.exit(1);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
113
168
|
let { path, config, created } = findOrCreateConfig();
|
|
114
169
|
if (config.environments[name]) {
|
|
115
170
|
error(`Environment "${name}" already exists. Use 'primitive env remove ${name}' first or edit ${PROJECT_CONFIG_DISPLAY_NAME} directly.`);
|
|
@@ -119,6 +174,7 @@ Examples:
|
|
|
119
174
|
apiUrl: options.apiUrl.replace(/\/$/, ""),
|
|
120
175
|
appId: options.appId,
|
|
121
176
|
appName: options.appName,
|
|
177
|
+
webUrl: options.webUrl === undefined ? undefined : normalizeWebUrl(options.webUrl),
|
|
122
178
|
description: options.description,
|
|
123
179
|
};
|
|
124
180
|
// Auto-default if this is the first env, or if --default was passed.
|
|
@@ -133,11 +189,14 @@ Examples:
|
|
|
133
189
|
keyValue("API URL", config.environments[name].apiUrl);
|
|
134
190
|
if (options.appId)
|
|
135
191
|
keyValue("App ID", options.appId);
|
|
192
|
+
if (config.environments[name].webUrl) {
|
|
193
|
+
keyValue("Web URL", config.environments[name].webUrl);
|
|
194
|
+
}
|
|
136
195
|
if (config.defaultEnvironment === name) {
|
|
137
196
|
info(`"${name}" is now the default environment.`);
|
|
138
197
|
}
|
|
139
198
|
else {
|
|
140
|
-
info(`Run 'primitive env use ${name}' to
|
|
199
|
+
info(`Run 'primitive env use ${name}' to point this machine at it.`);
|
|
141
200
|
}
|
|
142
201
|
});
|
|
143
202
|
// env remove
|
|
@@ -158,6 +217,12 @@ Examples:
|
|
|
158
217
|
warn(`"${name}" was the default environment. Set a new default with 'primitive env use <name>'.`);
|
|
159
218
|
}
|
|
160
219
|
writeProjectConfig(path, config);
|
|
220
|
+
// A selection naming an environment that no longer exists would make
|
|
221
|
+
// every later command fail on an unknown-environment error, so drop it
|
|
222
|
+
// with the environment it names.
|
|
223
|
+
if (clearLocalSelection(path, name)) {
|
|
224
|
+
info(`Cleared the local selection of "${name}" (${LOCAL_STATE_LABEL}).`);
|
|
225
|
+
}
|
|
161
226
|
// Also drop the credentials slot for this env so a subsequent `env add`
|
|
162
227
|
// with the same name can't silently re-use stale tokens from the old
|
|
163
228
|
// instance. The project root is two levels up from .primitive/config.json.
|
|
@@ -167,7 +232,7 @@ Examples:
|
|
|
167
232
|
// env use
|
|
168
233
|
env
|
|
169
234
|
.command("use")
|
|
170
|
-
.description("
|
|
235
|
+
.description("Select the environment this machine uses (local, not committed)")
|
|
171
236
|
.argument("<name>", "Environment name")
|
|
172
237
|
.action((name) => {
|
|
173
238
|
const { path, config } = requireProjectConfig();
|
|
@@ -175,9 +240,38 @@ Examples:
|
|
|
175
240
|
error(`Environment "${name}" does not exist. Run 'primitive env list' to see available environments.`);
|
|
176
241
|
process.exit(1);
|
|
177
242
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
243
|
+
// Ignore coverage BEFORE the write: a selection that shows up in
|
|
244
|
+
// `git status` is the tracked-file problem this replaced, just moved to
|
|
245
|
+
// an untracked file.
|
|
246
|
+
const localPath = localStatePathForConfigPath(path);
|
|
247
|
+
const coverage = ensureLocalStateIgnored(localPath);
|
|
248
|
+
if (coverage.status === "excluded") {
|
|
249
|
+
info(`Added "${coverage.pattern}" to ${coverage.excludePath} so the selection stays out of git.`);
|
|
250
|
+
info(`Consider committing "${LOCAL_STATE_LABEL}" to .gitignore so the whole team is covered.`);
|
|
251
|
+
}
|
|
252
|
+
else if (coverage.status === "failed") {
|
|
253
|
+
// Stop rather than write: an unignored local.json is committable state,
|
|
254
|
+
// which is the whole problem `env use` moved off the tracked config.
|
|
255
|
+
// The remedy is one line in .gitignore, after which this succeeds.
|
|
256
|
+
error(`Could not confirm ${LOCAL_STATE_LABEL} is git-ignored: ${coverage.detail}`);
|
|
257
|
+
error(`Add "${LOCAL_STATE_LABEL}" to your .gitignore and run 'primitive env use ${name}' again — ` +
|
|
258
|
+
`the selection is per-machine state and must never be committable.`);
|
|
259
|
+
process.exit(1);
|
|
260
|
+
}
|
|
261
|
+
writeLocalSelection(path, name);
|
|
262
|
+
resetEnvResolver();
|
|
263
|
+
success(`Now using environment "${name}" on this machine.`);
|
|
264
|
+
keyValue("API URL", config.environments[name].apiUrl);
|
|
265
|
+
if (config.environments[name].appId) {
|
|
266
|
+
keyValue("App ID", config.environments[name].appId);
|
|
267
|
+
}
|
|
268
|
+
if (config.environments[name].webUrl) {
|
|
269
|
+
keyValue("Web URL", config.environments[name].webUrl);
|
|
270
|
+
}
|
|
271
|
+
info(`Selection stored in ${localPath} (local state — never committed).`);
|
|
272
|
+
info(config.defaultEnvironment
|
|
273
|
+
? `The committed team default ("defaultEnvironment") is still "${config.defaultEnvironment}".`
|
|
274
|
+
: `No committed team default ("defaultEnvironment") is set for a fresh clone.`);
|
|
181
275
|
});
|
|
182
276
|
// env show
|
|
183
277
|
env
|
|
@@ -187,17 +281,12 @@ Examples:
|
|
|
187
281
|
.option("--json", "Output as JSON")
|
|
188
282
|
.action((name, options) => {
|
|
189
283
|
const { config } = requireProjectConfig();
|
|
190
|
-
// "Current" means the resolved env (honoring --env / PRIMITIVE_ENV /
|
|
191
|
-
// defaultEnvironment). We intentionally read this
|
|
192
|
-
// requireProjectConfig() so errors surface in a consistent order
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}
|
|
197
|
-
catch {
|
|
198
|
-
return null;
|
|
199
|
-
}
|
|
200
|
-
})();
|
|
284
|
+
// "Current" means the resolved env (honoring --env / PRIMITIVE_ENV / the
|
|
285
|
+
// local selection / defaultEnvironment). We intentionally read this
|
|
286
|
+
// AFTER requireProjectConfig() so errors surface in a consistent order —
|
|
287
|
+
// and we do NOT swallow a broken selection, which would show the default
|
|
288
|
+
// as though it were current.
|
|
289
|
+
const resolvedName = name ? null : resolveForDisplay().name;
|
|
201
290
|
const envName = name || resolvedName || config.defaultEnvironment;
|
|
202
291
|
if (!envName) {
|
|
203
292
|
error(`No environment specified and no defaultEnvironment set. Usage: primitive env show <name>`);
|
|
@@ -222,7 +311,7 @@ Examples:
|
|
|
222
311
|
if (e.description)
|
|
223
312
|
printResult("Description", e.description);
|
|
224
313
|
if (config.defaultEnvironment === envName) {
|
|
225
|
-
info(
|
|
314
|
+
info(`(committed team default — "defaultEnvironment")`);
|
|
226
315
|
}
|
|
227
316
|
divider();
|
|
228
317
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
/**
|
|
3
|
+
* The platform's feature flags (issue #2803, phase 6).
|
|
4
|
+
*
|
|
5
|
+
* A feature flag is already what the rest of this issue is arguing for: one
|
|
6
|
+
* server-owned toggle with one writer. What it did not have was both surfaces —
|
|
7
|
+
* the console could flip a flag and the CLI could not read one, so an operator
|
|
8
|
+
* without a browser had no way to see or change platform behaviour.
|
|
9
|
+
*
|
|
10
|
+
* The model is unchanged (`enabled`, a boolean; not the five carrying types'
|
|
11
|
+
* `status`), and the routes already existed. This is the missing half of
|
|
12
|
+
* "every operational control is reachable from the CLI and from web-admin".
|
|
13
|
+
*/
|
|
14
|
+
export declare function registerFeatureFlagsCommands(program: Command): void;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { ApiClient } from "../lib/api-client.js";
|
|
2
|
+
import { success, error, info, formatTable, formatBoolean, result as printResult, json, } from "../lib/output.js";
|
|
3
|
+
/**
|
|
4
|
+
* The platform's feature flags (issue #2803, phase 6).
|
|
5
|
+
*
|
|
6
|
+
* A feature flag is already what the rest of this issue is arguing for: one
|
|
7
|
+
* server-owned toggle with one writer. What it did not have was both surfaces —
|
|
8
|
+
* the console could flip a flag and the CLI could not read one, so an operator
|
|
9
|
+
* without a browser had no way to see or change platform behaviour.
|
|
10
|
+
*
|
|
11
|
+
* The model is unchanged (`enabled`, a boolean; not the five carrying types'
|
|
12
|
+
* `status`), and the routes already existed. This is the missing half of
|
|
13
|
+
* "every operational control is reachable from the CLI and from web-admin".
|
|
14
|
+
*/
|
|
15
|
+
export function registerFeatureFlagsCommands(program) {
|
|
16
|
+
const flags = program
|
|
17
|
+
.command("feature-flags")
|
|
18
|
+
.description("Read and toggle platform feature flags (super-admin only)")
|
|
19
|
+
.addHelpText("after", `
|
|
20
|
+
Examples:
|
|
21
|
+
$ primitive feature-flags list
|
|
22
|
+
$ primitive feature-flags get unified-block-canonical-storage
|
|
23
|
+
$ primitive feature-flags enable unified-block-canonical-storage
|
|
24
|
+
$ primitive feature-flags disable unified-block-canonical-storage
|
|
25
|
+
|
|
26
|
+
A flag is platform state, not app configuration: it is not in the TOML tree and
|
|
27
|
+
'config push' neither reads nor writes it.
|
|
28
|
+
`);
|
|
29
|
+
flags
|
|
30
|
+
.command("list")
|
|
31
|
+
.description("List every feature flag and whether it is enabled")
|
|
32
|
+
.option("--json", "Output as JSON")
|
|
33
|
+
.action(async (options) => {
|
|
34
|
+
const client = new ApiClient();
|
|
35
|
+
try {
|
|
36
|
+
const result = await client.listFeatureFlags();
|
|
37
|
+
const items = result?.items ?? result?.flags ?? result ?? [];
|
|
38
|
+
if (options.json) {
|
|
39
|
+
json(items);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (!Array.isArray(items) || items.length === 0) {
|
|
43
|
+
info("No feature flags found.");
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
console.log(formatTable(items, [
|
|
47
|
+
{ header: "KEY", key: "flagKey" },
|
|
48
|
+
{ header: "ENABLED", key: "enabled", format: formatBoolean },
|
|
49
|
+
{ header: "DESCRIPTION", key: "description" },
|
|
50
|
+
]));
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
error(err.message);
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
flags
|
|
58
|
+
.command("get")
|
|
59
|
+
.description("Show one feature flag, including its per-app overrides")
|
|
60
|
+
.argument("<flag-key>", "Feature flag key")
|
|
61
|
+
.option("--json", "Output as JSON")
|
|
62
|
+
.action(async (flagKey, options) => {
|
|
63
|
+
const client = new ApiClient();
|
|
64
|
+
try {
|
|
65
|
+
const flag = await client.getFeatureFlag(flagKey);
|
|
66
|
+
if (options.json) {
|
|
67
|
+
json(flag);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
printResult("Key", flag.flagKey);
|
|
71
|
+
printResult("Enabled", formatBoolean(flag.enabled));
|
|
72
|
+
printResult("Description", flag.description || "-");
|
|
73
|
+
// The per-app overrides are what make a flag's effective value differ
|
|
74
|
+
// from the global one, so `get` shows them rather than only the global.
|
|
75
|
+
printResult("Enabled for apps", Array.isArray(flag.enabledAppIds) && flag.enabledAppIds.length > 0
|
|
76
|
+
? flag.enabledAppIds.join(", ")
|
|
77
|
+
: "-");
|
|
78
|
+
printResult("Disabled for apps", Array.isArray(flag.disabledAppIds) && flag.disabledAppIds.length > 0
|
|
79
|
+
? flag.disabledAppIds.join(", ")
|
|
80
|
+
: "-");
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
error(err.message);
|
|
84
|
+
process.exit(1);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
for (const [verb, enabled] of [
|
|
88
|
+
["enable", true],
|
|
89
|
+
["disable", false],
|
|
90
|
+
]) {
|
|
91
|
+
flags
|
|
92
|
+
.command(verb)
|
|
93
|
+
.description(enabled
|
|
94
|
+
? "Turn a feature flag on globally"
|
|
95
|
+
: "Turn a feature flag off globally")
|
|
96
|
+
.argument("<flag-key>", "Feature flag key")
|
|
97
|
+
.option("--json", "Output as JSON")
|
|
98
|
+
.action(async (flagKey, options) => {
|
|
99
|
+
const client = new ApiClient();
|
|
100
|
+
try {
|
|
101
|
+
const flag = await client.setFeatureFlagEnabled(flagKey, enabled);
|
|
102
|
+
if (options.json) {
|
|
103
|
+
json(flag);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
success(`Feature flag ${enabled ? "enabled" : "disabled"}: ${flagKey}`);
|
|
107
|
+
info("Per-app overrides still apply — `primitive feature-flags get` shows them.");
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
error(err.message);
|
|
111
|
+
process.exit(1);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=feature-flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../../../src/commands/feature-flags.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ApiClient } from "../lib/api-client.js";
|
|
2
2
|
import { resolveAppId } from "../lib/config.js";
|
|
3
|
-
import {
|
|
4
|
-
import { confirmPrompt } from "../lib/confirm-prompt.js";
|
|
3
|
+
import { error, info, result as printResult, formatTable, formatDate, json, } from "../lib/output.js";
|
|
5
4
|
export function registerGroupTypeConfigsCommands(program) {
|
|
6
5
|
const configs = program
|
|
7
6
|
.command("group-type-configs")
|
|
@@ -9,10 +8,20 @@ export function registerGroupTypeConfigsCommands(program) {
|
|
|
9
8
|
.addHelpText("after", `
|
|
10
9
|
Examples:
|
|
11
10
|
$ primitive group-type-configs list
|
|
12
|
-
$ primitive
|
|
11
|
+
$ primitive config create group-type-config team # scaffold group-type-configs/team.toml
|
|
12
|
+
$ primitive config push --only group-type-config/team # apply it
|
|
13
13
|
$ primitive group-type-configs get team
|
|
14
|
-
$ primitive group-type-
|
|
15
|
-
$ primitive group-type-
|
|
14
|
+
$ primitive config set group-type-config/team groupTypeConfig.autoAddCreator=false
|
|
15
|
+
$ primitive config push --only group-type-config/team
|
|
16
|
+
`);
|
|
17
|
+
// Server-side configuration is authored in TOML and applied with `config push`
|
|
18
|
+
// (issue #2645) — this group no longer carries config-setting flags.
|
|
19
|
+
configs.addHelpText("after", `
|
|
20
|
+
Configuration lives in group-type-configs/<type>.toml:
|
|
21
|
+
$ primitive config fields group-type-config # the file's keys, types and defaults
|
|
22
|
+
$ primitive config create group-type-config <key> # scaffold one locally
|
|
23
|
+
$ primitive config set group-type-config/<key> <path>=<value>
|
|
24
|
+
$ primitive config push --only group-type-config/<key>
|
|
16
25
|
`);
|
|
17
26
|
// List
|
|
18
27
|
configs
|
|
@@ -47,41 +56,6 @@ Examples:
|
|
|
47
56
|
process.exit(1);
|
|
48
57
|
}
|
|
49
58
|
});
|
|
50
|
-
// Create
|
|
51
|
-
configs
|
|
52
|
-
.command("create")
|
|
53
|
-
.description("Create a group type config")
|
|
54
|
-
.requiredOption("--group-type <type>", "Group type")
|
|
55
|
-
.option("--rule-set-id <id>", "Rule set ID to attach")
|
|
56
|
-
.option("--auto-add-creator <bool>", "Auto-add creator to group (default: true)")
|
|
57
|
-
.option("--app <app-id>", "App ID")
|
|
58
|
-
.option("--json", "Output as JSON")
|
|
59
|
-
.action(async (options) => {
|
|
60
|
-
const resolvedAppId = resolveAppId(undefined, options);
|
|
61
|
-
const client = new ApiClient();
|
|
62
|
-
try {
|
|
63
|
-
const data = { groupType: options.groupType };
|
|
64
|
-
if (options.ruleSetId)
|
|
65
|
-
data.ruleSetId = options.ruleSetId;
|
|
66
|
-
if (options.autoAddCreator !== undefined) {
|
|
67
|
-
data.autoAddCreator = options.autoAddCreator !== "false";
|
|
68
|
-
}
|
|
69
|
-
const result = await client.createGroupTypeConfig(resolvedAppId, data);
|
|
70
|
-
if (options.json) {
|
|
71
|
-
json(result);
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
success("Group type config created.");
|
|
75
|
-
keyValue("Group Type", result.groupType);
|
|
76
|
-
keyValue("Rule Set ID", result.ruleSetId || "(none)");
|
|
77
|
-
keyValue("Auto-Add Creator", String(result.autoAddCreator));
|
|
78
|
-
}
|
|
79
|
-
catch (err) {
|
|
80
|
-
error(err.message);
|
|
81
|
-
process.exit(1);
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
// Get
|
|
85
59
|
configs
|
|
86
60
|
.command("get")
|
|
87
61
|
.description("Get a group type config")
|
|
@@ -108,74 +82,5 @@ Examples:
|
|
|
108
82
|
process.exit(1);
|
|
109
83
|
}
|
|
110
84
|
});
|
|
111
|
-
// Update
|
|
112
|
-
configs
|
|
113
|
-
.command("update")
|
|
114
|
-
.description("Update a group type config")
|
|
115
|
-
.argument("<group-type>", "Group type")
|
|
116
|
-
.option("--rule-set-id <id>", "Rule set ID (use 'null' to detach)")
|
|
117
|
-
.option("--auto-add-creator <bool>", "Auto-add creator to group")
|
|
118
|
-
.option("--app <app-id>", "App ID")
|
|
119
|
-
.option("--json", "Output as JSON")
|
|
120
|
-
.action(async (groupType, options) => {
|
|
121
|
-
const resolvedAppId = resolveAppId(undefined, options);
|
|
122
|
-
const client = new ApiClient();
|
|
123
|
-
const data = {};
|
|
124
|
-
if (options.ruleSetId !== undefined) {
|
|
125
|
-
data.ruleSetId = options.ruleSetId === "null" ? null : options.ruleSetId;
|
|
126
|
-
}
|
|
127
|
-
if (options.autoAddCreator !== undefined) {
|
|
128
|
-
data.autoAddCreator = options.autoAddCreator !== "false";
|
|
129
|
-
}
|
|
130
|
-
if (Object.keys(data).length === 0) {
|
|
131
|
-
error("Nothing to update. Provide --rule-set-id or --auto-add-creator.");
|
|
132
|
-
process.exit(1);
|
|
133
|
-
}
|
|
134
|
-
try {
|
|
135
|
-
const result = await client.updateGroupTypeConfig(resolvedAppId, groupType, data);
|
|
136
|
-
if (options.json) {
|
|
137
|
-
json(result);
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
success(`Group type config '${groupType}' updated.`);
|
|
141
|
-
}
|
|
142
|
-
catch (err) {
|
|
143
|
-
error(err.message);
|
|
144
|
-
process.exit(1);
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
// Delete
|
|
148
|
-
configs
|
|
149
|
-
.command("delete")
|
|
150
|
-
.description("Delete a group type config")
|
|
151
|
-
.argument("<group-type>", "Group type")
|
|
152
|
-
.option("--app <app-id>", "App ID")
|
|
153
|
-
.option("-y, --yes", "Skip confirmation prompt")
|
|
154
|
-
.action(async (groupType, options) => {
|
|
155
|
-
const resolvedAppId = resolveAppId(undefined, options);
|
|
156
|
-
if (!options.yes) {
|
|
157
|
-
let confirm;
|
|
158
|
-
try {
|
|
159
|
-
confirm = await confirmPrompt(`Delete group type config '${groupType}'? This cannot be undone.`);
|
|
160
|
-
}
|
|
161
|
-
catch (err) {
|
|
162
|
-
error(err.message);
|
|
163
|
-
process.exit(1);
|
|
164
|
-
}
|
|
165
|
-
if (!confirm) {
|
|
166
|
-
info("Cancelled.");
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
const client = new ApiClient();
|
|
171
|
-
try {
|
|
172
|
-
await client.deleteGroupTypeConfig(resolvedAppId, groupType);
|
|
173
|
-
success(`Group type config '${groupType}' deleted.`);
|
|
174
|
-
}
|
|
175
|
-
catch (err) {
|
|
176
|
-
error(err.message);
|
|
177
|
-
process.exit(1);
|
|
178
|
-
}
|
|
179
|
-
});
|
|
180
85
|
}
|
|
181
86
|
//# sourceMappingURL=group-type-configs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group-type-configs.js","sourceRoot":"","sources":["../../../src/commands/group-type-configs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"group-type-configs.js","sourceRoot":"","sources":["../../../src/commands/group-type-configs.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,5 +13,28 @@ import { Command } from "commander";
|
|
|
13
13
|
* the restored `.primitive-sync.json` baseline — can never surface as untracked
|
|
14
14
|
* files in a tracked custom config dir.
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
/**
|
|
17
|
+
* The origin a local dev server is served from. ONE spelling: the app's CORS
|
|
18
|
+
* origins, its `emailRedirectUris` seed and the environment's `webUrl` all
|
|
19
|
+
* name this, and a second spelling would be a 400 on the scaffolded app's
|
|
20
|
+
* first sign-in (#2982).
|
|
21
|
+
*/
|
|
22
|
+
export declare function localDevOrigin(port: number): string;
|
|
23
|
+
/**
|
|
24
|
+
* Point an existing environment at the app's web counterpart.
|
|
25
|
+
*
|
|
26
|
+
* Returns false — and writes nothing — when there is no config to write, the
|
|
27
|
+
* environment is not in it, or the file cannot be read: an adopting run does
|
|
28
|
+
* not own the project config, and a seed is never worth failing an init over.
|
|
29
|
+
*/
|
|
30
|
+
export declare function seedEnvironmentWebUrl(projectRoot: string, environment: string, webUrl: string): boolean;
|
|
31
|
+
export declare const GITIGNORE_LOCAL_STATE_ENTRIES: readonly [".primitive/credentials.json", ".primitive/local.json", ".primitive/sync/**/.primitive-sync.json", ".primitive/sync-backups/", ".snapshots/", "config-snapshots/"];
|
|
32
|
+
/**
|
|
33
|
+
* Ensures the project root's .gitignore lists the Primitive CLI's local state.
|
|
34
|
+
*
|
|
35
|
+
* Split out of `scaffoldProjectConfig` because a run that ADOPTS an existing
|
|
36
|
+
* project (#2890) must not rewrite its config, but still has to make sure the
|
|
37
|
+
* per-machine state a new client's environment produces cannot be committed.
|
|
38
|
+
*/
|
|
39
|
+
export declare function ensureGitignoreLocalState(targetDir: string): void;
|
|
17
40
|
export declare function registerInitCommand(program: Command): void;
|