@quonfig/cli 0.4.0 → 0.6.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/README.md +229 -77
- package/dist/agent/skill-bundle.generated.d.ts +1 -1
- package/dist/agent/skill-bundle.generated.js +4 -4
- package/dist/codegen/code-generators/base-typescript-generator.d.ts +1 -1
- package/dist/codegen/schema-extractor.d.ts +1 -1
- package/dist/commands/config-schema.js +9 -2
- package/dist/commands/create.d.ts +3 -1
- package/dist/commands/create.js +93 -20
- package/dist/commands/environments.d.ts +8 -0
- package/dist/commands/environments.js +32 -0
- package/dist/commands/get.d.ts +1 -0
- package/dist/commands/get.js +40 -3
- package/dist/commands/info.d.ts +1 -0
- package/dist/commands/info.js +69 -32
- package/dist/commands/set-default.d.ts +2 -0
- package/dist/commands/set-default.js +98 -35
- package/dist/commands/set-rollout.js +2 -2
- package/dist/index.d.ts +6 -0
- package/dist/index.js +35 -3
- package/dist/interactive-prompt.d.ts +18 -0
- package/dist/interactive-prompt.js +11 -2
- package/dist/migrate/quonfig-target/operators.js +4 -2
- package/dist/migrate/quonfig-target/ruleset.d.ts +48 -0
- package/dist/migrate/quonfig-target/ruleset.js +132 -8
- package/dist/migrate/sources/flagsmith/translate.js +11 -0
- package/dist/migrate/sources/launchdarkly/translate.js +19 -16
- package/dist/push/git-pack.d.ts +12 -0
- package/dist/push/git-pack.js +27 -3
- package/dist/push/run-push.d.ts +2 -1
- package/dist/push/run-push.js +1 -2
- package/dist/ui/get-confirmation.d.ts +10 -1
- package/dist/ui/get-confirmation.js +13 -4
- package/dist/ui/get-string.d.ts +18 -1
- package/dist/ui/get-string.js +20 -5
- package/dist/ui/get-value.d.ts +3 -1
- package/dist/ui/get-value.js +7 -7
- package/dist/util/clone-and-stack-push.js +8 -3
- package/dist/util/encryption.js +11 -20
- package/dist/util/git-ops.d.ts +4 -2
- package/dist/util/git-ops.js +4 -2
- package/dist/util/redact.d.ts +56 -0
- package/dist/util/redact.js +98 -0
- package/dist/util/value-source.d.ts +30 -0
- package/dist/util/value-source.js +81 -0
- package/dist/verify/regex-dialect.d.ts +39 -0
- package/dist/verify/regex-dialect.js +278 -0
- package/dist/verify/standalone.d.ts +3 -1
- package/dist/verify/standalone.js +4 -19
- package/dist/verify/validate.js +20 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/oclif.manifest.json +218 -97
- package/package.json +18 -16
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ $ npm install -g @quonfig/cli
|
|
|
17
17
|
$ qfg COMMAND
|
|
18
18
|
running command...
|
|
19
19
|
$ qfg (--version)
|
|
20
|
-
@quonfig/cli/0.
|
|
20
|
+
@quonfig/cli/0.6.0 linux-x64 node-v24.4.1
|
|
21
21
|
$ qfg --help [COMMAND]
|
|
22
22
|
USAGE
|
|
23
23
|
$ qfg COMMAND
|
|
@@ -137,6 +137,8 @@ script doesn't need to know which env it's running in.
|
|
|
137
137
|
* [`qfg contexts search CONTEXTTYPE QUERY`](#qfg-contexts-search-contexttype-query)
|
|
138
138
|
* [`qfg create NAME`](#qfg-create-name)
|
|
139
139
|
* [`qfg delete NAME`](#qfg-delete-name)
|
|
140
|
+
* [`qfg environments`](#qfg-environments)
|
|
141
|
+
* [`qfg envs`](#qfg-envs)
|
|
140
142
|
* [`qfg flag info [NAME]`](#qfg-flag-info-name)
|
|
141
143
|
* [`qfg flag list`](#qfg-flag-list)
|
|
142
144
|
* [`qfg flag show [NAME]`](#qfg-flag-show-name)
|
|
@@ -204,7 +206,7 @@ EXAMPLES
|
|
|
204
206
|
$ qfg activity restore my.flag --yes
|
|
205
207
|
```
|
|
206
208
|
|
|
207
|
-
_See code: [src/commands/activity.ts](https://github.com/quonfig/cli/blob/v0.
|
|
209
|
+
_See code: [src/commands/activity.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/activity.ts)_
|
|
208
210
|
|
|
209
211
|
## `qfg activity deleted`
|
|
210
212
|
|
|
@@ -233,7 +235,7 @@ EXAMPLES
|
|
|
233
235
|
$ qfg activity deleted --json
|
|
234
236
|
```
|
|
235
237
|
|
|
236
|
-
_See code: [src/commands/activity/deleted.ts](https://github.com/quonfig/cli/blob/v0.
|
|
238
|
+
_See code: [src/commands/activity/deleted.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/activity/deleted.ts)_
|
|
237
239
|
|
|
238
240
|
## `qfg activity feed`
|
|
239
241
|
|
|
@@ -268,7 +270,7 @@ EXAMPLES
|
|
|
268
270
|
$ qfg activity feed --json
|
|
269
271
|
```
|
|
270
272
|
|
|
271
|
-
_See code: [src/commands/activity/feed.ts](https://github.com/quonfig/cli/blob/v0.
|
|
273
|
+
_See code: [src/commands/activity/feed.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/activity/feed.ts)_
|
|
272
274
|
|
|
273
275
|
## `qfg activity history [NAME]`
|
|
274
276
|
|
|
@@ -302,7 +304,7 @@ EXAMPLES
|
|
|
302
304
|
$ qfg activity history request.timeout --json
|
|
303
305
|
```
|
|
304
306
|
|
|
305
|
-
_See code: [src/commands/activity/history.ts](https://github.com/quonfig/cli/blob/v0.
|
|
307
|
+
_See code: [src/commands/activity/history.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/activity/history.ts)_
|
|
306
308
|
|
|
307
309
|
## `qfg activity restore [NAME]`
|
|
308
310
|
|
|
@@ -341,7 +343,7 @@ EXAMPLES
|
|
|
341
343
|
$ qfg activity restore request.timeout --type config --yes
|
|
342
344
|
```
|
|
343
345
|
|
|
344
|
-
_See code: [src/commands/activity/restore.ts](https://github.com/quonfig/cli/blob/v0.
|
|
346
|
+
_See code: [src/commands/activity/restore.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/activity/restore.ts)_
|
|
345
347
|
|
|
346
348
|
## `qfg agent install-skill`
|
|
347
349
|
|
|
@@ -386,7 +388,7 @@ EXAMPLES
|
|
|
386
388
|
$ qfg agent install-skill --force
|
|
387
389
|
```
|
|
388
390
|
|
|
389
|
-
_See code: [src/commands/agent/install-skill.ts](https://github.com/quonfig/cli/blob/v0.
|
|
391
|
+
_See code: [src/commands/agent/install-skill.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/agent/install-skill.ts)_
|
|
390
392
|
|
|
391
393
|
## `qfg audit-log [NAME]`
|
|
392
394
|
|
|
@@ -414,7 +416,7 @@ EXAMPLES
|
|
|
414
416
|
$ qfg audit-log my.flag
|
|
415
417
|
```
|
|
416
418
|
|
|
417
|
-
_See code: [src/commands/audit-log.ts](https://github.com/quonfig/cli/blob/v0.
|
|
419
|
+
_See code: [src/commands/audit-log.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/audit-log.ts)_
|
|
418
420
|
|
|
419
421
|
## `qfg cleanup`
|
|
420
422
|
|
|
@@ -456,7 +458,7 @@ EXAMPLES
|
|
|
456
458
|
$ qfg cleanup status my.flag.key
|
|
457
459
|
```
|
|
458
460
|
|
|
459
|
-
_See code: [src/commands/cleanup.ts](https://github.com/quonfig/cli/blob/v0.
|
|
461
|
+
_See code: [src/commands/cleanup.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/cleanup.ts)_
|
|
460
462
|
|
|
461
463
|
## `qfg cleanup list`
|
|
462
464
|
|
|
@@ -503,7 +505,7 @@ EXAMPLES
|
|
|
503
505
|
$ qfg cleanup list --json
|
|
504
506
|
```
|
|
505
507
|
|
|
506
|
-
_See code: [src/commands/cleanup/list.ts](https://github.com/quonfig/cli/blob/v0.
|
|
508
|
+
_See code: [src/commands/cleanup/list.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/cleanup/list.ts)_
|
|
507
509
|
|
|
508
510
|
## `qfg cleanup remove [NAME]`
|
|
509
511
|
|
|
@@ -550,7 +552,7 @@ EXAMPLES
|
|
|
550
552
|
$ qfg cleanup remove my.flag.key --json
|
|
551
553
|
```
|
|
552
554
|
|
|
553
|
-
_See code: [src/commands/cleanup/remove.ts](https://github.com/quonfig/cli/blob/v0.
|
|
555
|
+
_See code: [src/commands/cleanup/remove.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/cleanup/remove.ts)_
|
|
554
556
|
|
|
555
557
|
## `qfg cleanup status [NAME]`
|
|
556
558
|
|
|
@@ -590,7 +592,7 @@ EXAMPLES
|
|
|
590
592
|
$ qfg cleanup status my.flag.key --json
|
|
591
593
|
```
|
|
592
594
|
|
|
593
|
-
_See code: [src/commands/cleanup/status.ts](https://github.com/quonfig/cli/blob/v0.
|
|
595
|
+
_See code: [src/commands/cleanup/status.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/cleanup/status.ts)_
|
|
594
596
|
|
|
595
597
|
## `qfg cleanup verify [NAME]`
|
|
596
598
|
|
|
@@ -636,7 +638,7 @@ EXAMPLES
|
|
|
636
638
|
$ qfg cleanup verify my.flag.key && qfg delete my.flag.key
|
|
637
639
|
```
|
|
638
640
|
|
|
639
|
-
_See code: [src/commands/cleanup/verify.ts](https://github.com/quonfig/cli/blob/v0.
|
|
641
|
+
_See code: [src/commands/cleanup/verify.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/cleanup/verify.ts)_
|
|
640
642
|
|
|
641
643
|
## `qfg config-schema`
|
|
642
644
|
|
|
@@ -665,7 +667,7 @@ EXAMPLES
|
|
|
665
667
|
$ qfg config-schema --json-schema # full JSON Schema document (copy into your editor)
|
|
666
668
|
```
|
|
667
669
|
|
|
668
|
-
_See code: [src/commands/config-schema.ts](https://github.com/quonfig/cli/blob/v0.
|
|
670
|
+
_See code: [src/commands/config-schema.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/config-schema.ts)_
|
|
669
671
|
|
|
670
672
|
## `qfg contexts`
|
|
671
673
|
|
|
@@ -688,7 +690,7 @@ EXAMPLES
|
|
|
688
690
|
$ qfg contexts search organization formhealth
|
|
689
691
|
```
|
|
690
692
|
|
|
691
|
-
_See code: [src/commands/contexts.ts](https://github.com/quonfig/cli/blob/v0.
|
|
693
|
+
_See code: [src/commands/contexts.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/contexts.ts)_
|
|
692
694
|
|
|
693
695
|
## `qfg contexts search CONTEXTTYPE QUERY`
|
|
694
696
|
|
|
@@ -740,7 +742,7 @@ EXAMPLES
|
|
|
740
742
|
$ qfg contexts search organization formhealth --json
|
|
741
743
|
```
|
|
742
744
|
|
|
743
|
-
_See code: [src/commands/contexts/search.ts](https://github.com/quonfig/cli/blob/v0.
|
|
745
|
+
_See code: [src/commands/contexts/search.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/contexts/search.ts)_
|
|
744
746
|
|
|
745
747
|
## `qfg create NAME`
|
|
746
748
|
|
|
@@ -748,22 +750,26 @@ Create a new feature flag, config value, or other item.
|
|
|
748
750
|
|
|
749
751
|
```
|
|
750
752
|
USAGE
|
|
751
|
-
$ qfg create NAME --
|
|
752
|
-
[--
|
|
753
|
-
<value>] [--secret] [--secret-key-name <value>]
|
|
753
|
+
$ qfg create NAME [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [--confidential]
|
|
754
|
+
[--env-var <value>] [--type boolean-flag|boolean|string|double|int|string-list|json|duration|log_level] [--value
|
|
755
|
+
<value>] [--value-from-env VAR] [--value-stdin] [--secret] [--secret-key-name <value>]
|
|
754
756
|
|
|
755
757
|
ARGUMENTS
|
|
756
758
|
NAME name for your new item (e.g. my.new.flag)
|
|
757
759
|
|
|
758
760
|
FLAGS
|
|
759
761
|
--confidential mark the value as confidential
|
|
760
|
-
--env-var=<value>
|
|
761
|
-
|
|
762
|
+
--env-var=<value> store no value: the SDK reads it from this env var at RUNTIME. To read a value from a local
|
|
763
|
+
env var NOW, use --value-from-env
|
|
764
|
+
--secret encrypt the value of this item (string-only; the CLI never prints the plaintext)
|
|
762
765
|
--secret-key-name=<value> [default: quonfig.secrets.encryption.key] name of the secret key to use for
|
|
763
766
|
encryption/decryption
|
|
764
|
-
--type=<option> (required)
|
|
767
|
+
--type=<option> kind of item to create (required, except with --secret, which implies string)
|
|
765
768
|
<options: boolean-flag|boolean|string|double|int|string-list|json|duration|log_level>
|
|
766
|
-
--value=<value> default value for your new item
|
|
769
|
+
--value=<value> default value for your new item (for secrets prefer --value-stdin / --value-from-env)
|
|
770
|
+
--value-from-env=VAR read the value to store from this LOCAL env var now (keeps it out of argv/shell history).
|
|
771
|
+
Not the same as --env-var
|
|
772
|
+
--value-stdin read the value to store from stdin (one trailing newline is stripped). Keeps it out of argv
|
|
767
773
|
|
|
768
774
|
GLOBAL FLAGS
|
|
769
775
|
-w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
|
|
@@ -786,6 +792,17 @@ DESCRIPTION
|
|
|
786
792
|
duration An ISO 8601 duration string, e.g. PT30S, PT5M, PT1H30M (SDK returns milliseconds)
|
|
787
793
|
log_level A dynamic log level (value must be one of TRACE/DEBUG/INFO/WARN/ERROR/FATAL)
|
|
788
794
|
|
|
795
|
+
Secrets (--secret) are encrypted client-side and are STRING-ONLY: --secret
|
|
796
|
+
implies --type string, so you can leave --type off. To store a JSON secret, store the JSON as a string secret and
|
|
797
|
+
JSON.parse it in your app. The CLI never prints a secret's plaintext: it shows
|
|
798
|
+
a redacted fingerprint like [encrypted *****3fa9c, 51 chars, ends …a1b2].
|
|
799
|
+
|
|
800
|
+
Keep the value out of argv / shell history / agent transcripts with:
|
|
801
|
+
--value-stdin read the value from stdin
|
|
802
|
+
--value-from-env=VAR read the value from a local env var, now
|
|
803
|
+
These are different from --env-var, which stores NO value: it tells the SDK to
|
|
804
|
+
read the value from that env var at runtime.
|
|
805
|
+
|
|
789
806
|
This sets the global default value. Override per-environment with:
|
|
790
807
|
qfg set-default my.flag --environment production --value true
|
|
791
808
|
|
|
@@ -812,7 +829,15 @@ EXAMPLES
|
|
|
812
829
|
|
|
813
830
|
$ qfg create my.new.string --type string --value="hello world"
|
|
814
831
|
|
|
815
|
-
|
|
832
|
+
# Create a secret without the value ever appearing in argv (--secret implies --type string):
|
|
833
|
+
|
|
834
|
+
pbpaste | qfg create stripe.api-key --secret --value-stdin
|
|
835
|
+
|
|
836
|
+
$ qfg create stripe.api-key --secret --value-from-env STRIPE_API_KEY
|
|
837
|
+
|
|
838
|
+
# A JSON secret is a string secret holding JSON (JSON.parse it in your app):
|
|
839
|
+
|
|
840
|
+
$ qfg create gcp.service-account --secret --value-stdin < sa.json
|
|
816
841
|
|
|
817
842
|
$ qfg create my.new.string --type string --env-var=MY_ENV_VAR_NAME
|
|
818
843
|
|
|
@@ -827,7 +852,7 @@ EXAMPLES
|
|
|
827
852
|
$ qfg set-rollout my.new.flag --environment production --true-percent 20
|
|
828
853
|
```
|
|
829
854
|
|
|
830
|
-
_See code: [src/commands/create.ts](https://github.com/quonfig/cli/blob/v0.
|
|
855
|
+
_See code: [src/commands/create.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/create.ts)_
|
|
831
856
|
|
|
832
857
|
## `qfg delete NAME`
|
|
833
858
|
|
|
@@ -873,7 +898,73 @@ EXAMPLES
|
|
|
873
898
|
$ qfg delete my.config --yes
|
|
874
899
|
```
|
|
875
900
|
|
|
876
|
-
_See code: [src/commands/delete.ts](https://github.com/quonfig/cli/blob/v0.
|
|
901
|
+
_See code: [src/commands/delete.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/delete.ts)_
|
|
902
|
+
|
|
903
|
+
## `qfg environments`
|
|
904
|
+
|
|
905
|
+
List the environments in your workspace.
|
|
906
|
+
|
|
907
|
+
```
|
|
908
|
+
USAGE
|
|
909
|
+
$ qfg environments [--json] [--interactive] [--no-color] [--verbose] [-w <value>]
|
|
910
|
+
|
|
911
|
+
GLOBAL FLAGS
|
|
912
|
+
-w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
|
|
913
|
+
--[no-]interactive Force interactive mode
|
|
914
|
+
--json Format output as json.
|
|
915
|
+
--no-color Do not colorize output
|
|
916
|
+
--verbose Verbose output
|
|
917
|
+
|
|
918
|
+
DESCRIPTION
|
|
919
|
+
List the environments in your workspace.
|
|
920
|
+
|
|
921
|
+
Use these names with --environment (set-default, set-rollout, get, run, ...).
|
|
922
|
+
"[Default]" is not an environment: it names the default rules that every
|
|
923
|
+
environment without rules of its own inherits. Protected environments may
|
|
924
|
+
require extra permissions to change.
|
|
925
|
+
|
|
926
|
+
ALIASES
|
|
927
|
+
$ qfg envs
|
|
928
|
+
|
|
929
|
+
EXAMPLES
|
|
930
|
+
$ qfg environments
|
|
931
|
+
|
|
932
|
+
$ qfg environments --json
|
|
933
|
+
```
|
|
934
|
+
|
|
935
|
+
_See code: [src/commands/environments.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/environments.ts)_
|
|
936
|
+
|
|
937
|
+
## `qfg envs`
|
|
938
|
+
|
|
939
|
+
List the environments in your workspace.
|
|
940
|
+
|
|
941
|
+
```
|
|
942
|
+
USAGE
|
|
943
|
+
$ qfg envs [--json] [--interactive] [--no-color] [--verbose] [-w <value>]
|
|
944
|
+
|
|
945
|
+
GLOBAL FLAGS
|
|
946
|
+
-w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
|
|
947
|
+
--[no-]interactive Force interactive mode
|
|
948
|
+
--json Format output as json.
|
|
949
|
+
--no-color Do not colorize output
|
|
950
|
+
--verbose Verbose output
|
|
951
|
+
|
|
952
|
+
DESCRIPTION
|
|
953
|
+
List the environments in your workspace.
|
|
954
|
+
|
|
955
|
+
Use these names with --environment (set-default, set-rollout, get, run, ...).
|
|
956
|
+
"[Default]" is not an environment: it names the default rules that every
|
|
957
|
+
environment without rules of its own inherits. Protected environments may
|
|
958
|
+
require extra permissions to change.
|
|
959
|
+
|
|
960
|
+
ALIASES
|
|
961
|
+
$ qfg envs
|
|
962
|
+
|
|
963
|
+
EXAMPLES
|
|
964
|
+
$ qfg envs
|
|
965
|
+
|
|
966
|
+
$ qfg envs --json
|
|
967
|
+
```
|
|
877
968
|
|
|
878
969
|
## `qfg flag info [NAME]`
|
|
879
970
|
|
|
@@ -1077,7 +1168,7 @@ EXAMPLES
|
|
|
1077
1168
|
$ qfg generate --targets node-ts -o ./dist # combine with targets
|
|
1078
1169
|
```
|
|
1079
1170
|
|
|
1080
|
-
_See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1171
|
+
_See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/generate.ts)_
|
|
1081
1172
|
|
|
1082
1173
|
## `qfg generate-new-hex-key`
|
|
1083
1174
|
|
|
@@ -1100,7 +1191,7 @@ EXAMPLES
|
|
|
1100
1191
|
$ qfg generate-new-hex-key
|
|
1101
1192
|
```
|
|
1102
1193
|
|
|
1103
|
-
_See code: [src/commands/generate-new-hex-key.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1194
|
+
_See code: [src/commands/generate-new-hex-key.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/generate-new-hex-key.ts)_
|
|
1104
1195
|
|
|
1105
1196
|
## `qfg get [NAME]`
|
|
1106
1197
|
|
|
@@ -1109,12 +1200,14 @@ Get the value of a config/feature-flag/etc.
|
|
|
1109
1200
|
```
|
|
1110
1201
|
USAGE
|
|
1111
1202
|
$ qfg get [NAME] [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [--environment <value>]
|
|
1203
|
+
[--reveal]
|
|
1112
1204
|
|
|
1113
1205
|
ARGUMENTS
|
|
1114
1206
|
NAME config/feature-flag/etc. name
|
|
1115
1207
|
|
|
1116
1208
|
FLAGS
|
|
1117
1209
|
--environment=<value> environment to evaluate in
|
|
1210
|
+
--reveal print the plaintext of a secret/confidential value (it is redacted by default)
|
|
1118
1211
|
|
|
1119
1212
|
GLOBAL FLAGS
|
|
1120
1213
|
-w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
|
|
@@ -1126,13 +1219,24 @@ GLOBAL FLAGS
|
|
|
1126
1219
|
DESCRIPTION
|
|
1127
1220
|
Get the value of a config/feature-flag/etc.
|
|
1128
1221
|
|
|
1222
|
+
Secrets (encrypted) and confidential values print REDACTED by default, as a
|
|
1223
|
+
fingerprint plus length (and the last 4 characters for values of 12+ chars):
|
|
1224
|
+
[encrypted *****3fa9c, 51 chars, ends …a1b2]
|
|
1225
|
+
The fingerprint is the same one SDK telemetry and the Quonfig UI show, so you
|
|
1226
|
+
can confirm a rotation landed without printing the secret. Pass --reveal to
|
|
1227
|
+
print the plaintext. To inject secrets into a process, prefer `qfg run`.
|
|
1228
|
+
|
|
1129
1229
|
EXAMPLES
|
|
1130
1230
|
$ qfg get my.config.name
|
|
1131
1231
|
|
|
1132
1232
|
$ qfg get my.config.name --environment=production
|
|
1233
|
+
|
|
1234
|
+
$ qfg get stripe.api-key --environment=production # redacted fingerprint
|
|
1235
|
+
|
|
1236
|
+
$ qfg get stripe.api-key --environment=production --reveal # plaintext
|
|
1133
1237
|
```
|
|
1134
1238
|
|
|
1135
|
-
_See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1239
|
+
_See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/get.ts)_
|
|
1136
1240
|
|
|
1137
1241
|
## `qfg history NAME`
|
|
1138
1242
|
|
|
@@ -1158,7 +1262,7 @@ EXAMPLES
|
|
|
1158
1262
|
$ qfg history my.flag
|
|
1159
1263
|
```
|
|
1160
1264
|
|
|
1161
|
-
_See code: [src/commands/history.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1265
|
+
_See code: [src/commands/history.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/history.ts)_
|
|
1162
1266
|
|
|
1163
1267
|
## `qfg info [NAME]`
|
|
1164
1268
|
|
|
@@ -1206,7 +1310,7 @@ EXAMPLES
|
|
|
1206
1310
|
$ qfg info my.config.name --exclude-evaluations # skip 24h stats
|
|
1207
1311
|
```
|
|
1208
1312
|
|
|
1209
|
-
_See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1313
|
+
_See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/info.ts)_
|
|
1210
1314
|
|
|
1211
1315
|
## `qfg init [DIRECTORY]`
|
|
1212
1316
|
|
|
@@ -1246,7 +1350,7 @@ EXAMPLES
|
|
|
1246
1350
|
$ qfg init --dry-run
|
|
1247
1351
|
```
|
|
1248
1352
|
|
|
1249
|
-
_See code: [src/commands/init.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1353
|
+
_See code: [src/commands/init.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/init.ts)_
|
|
1250
1354
|
|
|
1251
1355
|
## `qfg interactive`
|
|
1252
1356
|
|
|
@@ -1276,7 +1380,7 @@ EXAMPLES
|
|
|
1276
1380
|
$ qfg
|
|
1277
1381
|
```
|
|
1278
1382
|
|
|
1279
|
-
_See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1383
|
+
_See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/interactive.ts)_
|
|
1280
1384
|
|
|
1281
1385
|
## `qfg list`
|
|
1282
1386
|
|
|
@@ -1316,7 +1420,7 @@ EXAMPLES
|
|
|
1316
1420
|
$ qfg list --feature-flags
|
|
1317
1421
|
```
|
|
1318
1422
|
|
|
1319
|
-
_See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1423
|
+
_See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/list.ts)_
|
|
1320
1424
|
|
|
1321
1425
|
## `qfg log`
|
|
1322
1426
|
|
|
@@ -1341,7 +1445,7 @@ EXAMPLES
|
|
|
1341
1445
|
$ qfg log --limit 5
|
|
1342
1446
|
```
|
|
1343
1447
|
|
|
1344
|
-
_See code: [src/commands/log.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1448
|
+
_See code: [src/commands/log.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/log.ts)_
|
|
1345
1449
|
|
|
1346
1450
|
## `qfg log-level NAME`
|
|
1347
1451
|
|
|
@@ -1406,7 +1510,7 @@ EXAMPLES
|
|
|
1406
1510
|
$ qfg log-level log-level.my-app --target=Chatty --value=INFO --environment=production
|
|
1407
1511
|
```
|
|
1408
1512
|
|
|
1409
|
-
_See code: [src/commands/log-level.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1513
|
+
_See code: [src/commands/log-level.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/log-level.ts)_
|
|
1410
1514
|
|
|
1411
1515
|
## `qfg login`
|
|
1412
1516
|
|
|
@@ -1431,7 +1535,7 @@ EXAMPLES
|
|
|
1431
1535
|
$ qfg login --profile myprofile
|
|
1432
1536
|
```
|
|
1433
1537
|
|
|
1434
|
-
_See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1538
|
+
_See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/login.ts)_
|
|
1435
1539
|
|
|
1436
1540
|
## `qfg logout`
|
|
1437
1541
|
|
|
@@ -1454,7 +1558,7 @@ EXAMPLES
|
|
|
1454
1558
|
$ qfg logout
|
|
1455
1559
|
```
|
|
1456
1560
|
|
|
1457
|
-
_See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1561
|
+
_See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/logout.ts)_
|
|
1458
1562
|
|
|
1459
1563
|
## `qfg migrate`
|
|
1460
1564
|
|
|
@@ -1519,7 +1623,7 @@ EXAMPLES
|
|
|
1519
1623
|
$ qfg migrate --from launch --source-api-key $LAUNCH_API_KEY --dir ./quonfig-repo --staging
|
|
1520
1624
|
```
|
|
1521
1625
|
|
|
1522
|
-
_See code: [src/commands/migrate.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1626
|
+
_See code: [src/commands/migrate.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/migrate.ts)_
|
|
1523
1627
|
|
|
1524
1628
|
## `qfg migrate doctor`
|
|
1525
1629
|
|
|
@@ -1557,7 +1661,7 @@ EXAMPLES
|
|
|
1557
1661
|
$ qfg migrate doctor --json
|
|
1558
1662
|
```
|
|
1559
1663
|
|
|
1560
|
-
_See code: [src/commands/migrate/doctor.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1664
|
+
_See code: [src/commands/migrate/doctor.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/migrate/doctor.ts)_
|
|
1561
1665
|
|
|
1562
1666
|
## `qfg migrate my-code`
|
|
1563
1667
|
|
|
@@ -1589,7 +1693,7 @@ EXAMPLES
|
|
|
1589
1693
|
$ qfg migrate my-code --dry-run
|
|
1590
1694
|
```
|
|
1591
1695
|
|
|
1592
|
-
_See code: [src/commands/migrate/my-code.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1696
|
+
_See code: [src/commands/migrate/my-code.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/migrate/my-code.ts)_
|
|
1593
1697
|
|
|
1594
1698
|
## `qfg migrate status`
|
|
1595
1699
|
|
|
@@ -1620,7 +1724,7 @@ EXAMPLES
|
|
|
1620
1724
|
$ qfg migrate status --json
|
|
1621
1725
|
```
|
|
1622
1726
|
|
|
1623
|
-
_See code: [src/commands/migrate/status.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1727
|
+
_See code: [src/commands/migrate/status.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/migrate/status.ts)_
|
|
1624
1728
|
|
|
1625
1729
|
## `qfg override [NAME] [VALUE]`
|
|
1626
1730
|
|
|
@@ -1675,7 +1779,7 @@ EXAMPLES
|
|
|
1675
1779
|
$ qfg override my.flag true --env=staging
|
|
1676
1780
|
```
|
|
1677
1781
|
|
|
1678
|
-
_See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1782
|
+
_See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/override.ts)_
|
|
1679
1783
|
|
|
1680
1784
|
## `qfg pull`
|
|
1681
1785
|
|
|
@@ -1722,7 +1826,7 @@ EXAMPLES
|
|
|
1722
1826
|
$ qfg pull # uses QUONFIG_DIR env var
|
|
1723
1827
|
```
|
|
1724
1828
|
|
|
1725
|
-
_See code: [src/commands/pull.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1829
|
+
_See code: [src/commands/pull.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/pull.ts)_
|
|
1726
1830
|
|
|
1727
1831
|
## `qfg push`
|
|
1728
1832
|
|
|
@@ -1771,7 +1875,7 @@ EXAMPLES
|
|
|
1771
1875
|
$ qfg push --dir ./our-config --yes
|
|
1772
1876
|
```
|
|
1773
1877
|
|
|
1774
|
-
_See code: [src/commands/push.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1878
|
+
_See code: [src/commands/push.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/push.ts)_
|
|
1775
1879
|
|
|
1776
1880
|
## `qfg run [COMMAND]`
|
|
1777
1881
|
|
|
@@ -1822,7 +1926,7 @@ EXAMPLES
|
|
|
1822
1926
|
$ qfg run --env DATABASE_URL=db.url --preserve-env --environment=staging -- npm test
|
|
1823
1927
|
```
|
|
1824
1928
|
|
|
1825
|
-
_See code: [src/commands/run.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1929
|
+
_See code: [src/commands/run.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/run.ts)_
|
|
1826
1930
|
|
|
1827
1931
|
## `qfg schema NAME`
|
|
1828
1932
|
|
|
@@ -1860,7 +1964,7 @@ EXAMPLES
|
|
|
1860
1964
|
$ qfg schema my-schema --set-json-schema=@schemas/my-schema.json --protected
|
|
1861
1965
|
```
|
|
1862
1966
|
|
|
1863
|
-
_See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1967
|
+
_See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/schema.ts)_
|
|
1864
1968
|
|
|
1865
1969
|
## `qfg sdk-key`
|
|
1866
1970
|
|
|
@@ -1887,7 +1991,7 @@ EXAMPLES
|
|
|
1887
1991
|
$ qfg sdk-key revoke <key-id>
|
|
1888
1992
|
```
|
|
1889
1993
|
|
|
1890
|
-
_See code: [src/commands/sdk-key.ts](https://github.com/quonfig/cli/blob/v0.
|
|
1994
|
+
_See code: [src/commands/sdk-key.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/sdk-key.ts)_
|
|
1891
1995
|
|
|
1892
1996
|
## `qfg sdk-key create`
|
|
1893
1997
|
|
|
@@ -1919,7 +2023,7 @@ EXAMPLES
|
|
|
1919
2023
|
$ qfg sdk-key create --environment staging --type browser
|
|
1920
2024
|
```
|
|
1921
2025
|
|
|
1922
|
-
_See code: [src/commands/sdk-key/create.ts](https://github.com/quonfig/cli/blob/v0.
|
|
2026
|
+
_See code: [src/commands/sdk-key/create.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/sdk-key/create.ts)_
|
|
1923
2027
|
|
|
1924
2028
|
## `qfg sdk-key list`
|
|
1925
2029
|
|
|
@@ -1948,7 +2052,7 @@ EXAMPLES
|
|
|
1948
2052
|
$ qfg sdk-key list --environment production
|
|
1949
2053
|
```
|
|
1950
2054
|
|
|
1951
|
-
_See code: [src/commands/sdk-key/list.ts](https://github.com/quonfig/cli/blob/v0.
|
|
2055
|
+
_See code: [src/commands/sdk-key/list.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/sdk-key/list.ts)_
|
|
1952
2056
|
|
|
1953
2057
|
## `qfg sdk-key revoke KEYID`
|
|
1954
2058
|
|
|
@@ -1975,7 +2079,7 @@ EXAMPLES
|
|
|
1975
2079
|
$ qfg sdk-key revoke a1b2c3d4-e5f6-7890-abcd-ef1234567890
|
|
1976
2080
|
```
|
|
1977
2081
|
|
|
1978
|
-
_See code: [src/commands/sdk-key/revoke.ts](https://github.com/quonfig/cli/blob/v0.
|
|
2082
|
+
_See code: [src/commands/sdk-key/revoke.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/sdk-key/revoke.ts)_
|
|
1979
2083
|
|
|
1980
2084
|
## `qfg serve`
|
|
1981
2085
|
|
|
@@ -2033,7 +2137,7 @@ EXAMPLES
|
|
|
2033
2137
|
$ qfg serve --port 6581 --frontend-sdk-key PUBLIC_KEY
|
|
2034
2138
|
```
|
|
2035
2139
|
|
|
2036
|
-
_See code: [src/commands/serve.ts](https://github.com/quonfig/cli/blob/v0.
|
|
2140
|
+
_See code: [src/commands/serve.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/serve.ts)_
|
|
2037
2141
|
|
|
2038
2142
|
## `qfg set-default [NAME]`
|
|
2039
2143
|
|
|
@@ -2042,23 +2146,29 @@ Set the fallback value for a flag or config in one environment.
|
|
|
2042
2146
|
```
|
|
2043
2147
|
USAGE
|
|
2044
2148
|
$ qfg set-default [NAME] [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [--confidential]
|
|
2045
|
-
[--env-var <value>] [--environment <value>] [--replace-targeting] [--value <value>] [--
|
|
2046
|
-
[--secret-key-name <value>]
|
|
2149
|
+
[--env-var <value>] [--environment <value>] [--replace-targeting] [--value <value>] [--value-from-env VAR]
|
|
2150
|
+
[--value-stdin] [--confirm] [--secret] [--secret-key-name <value>]
|
|
2047
2151
|
|
|
2048
2152
|
ARGUMENTS
|
|
2049
2153
|
NAME config/feature-flag/etc. name
|
|
2050
2154
|
|
|
2051
2155
|
FLAGS
|
|
2052
|
-
--confidential
|
|
2156
|
+
--[no-]confidential mark the value as confidential. Auto-detected when the key already holds a confidential
|
|
2157
|
+
value; pass --no-confidential to store it in the clear
|
|
2053
2158
|
--confirm confirm without prompt
|
|
2054
|
-
--env-var=<value>
|
|
2055
|
-
|
|
2159
|
+
--env-var=<value> store no value: the SDK reads it from this env var at RUNTIME. To read a value from a local
|
|
2160
|
+
env var NOW, use --value-from-env
|
|
2161
|
+
--environment=<value> environment to change, e.g. production. Use "[Default]" for the default rules that every
|
|
2162
|
+
environment without its own rules inherits
|
|
2056
2163
|
--replace-targeting set the value for EVERYONE: delete this environment's targeting rules instead of keeping
|
|
2057
2164
|
them (they stay in git history)
|
|
2058
|
-
--secret encrypt the value of this item
|
|
2165
|
+
--secret encrypt the value of this item (string-only; the CLI never prints the plaintext)
|
|
2059
2166
|
--secret-key-name=<value> [default: quonfig.secrets.encryption.key] name of the secret key to use for
|
|
2060
2167
|
encryption/decryption
|
|
2061
|
-
--value=<value> new default value
|
|
2168
|
+
--value=<value> new default value (for secrets prefer --value-stdin / --value-from-env)
|
|
2169
|
+
--value-from-env=VAR read the value to store from this LOCAL env var now (keeps it out of argv/shell history).
|
|
2170
|
+
Not the same as --env-var
|
|
2171
|
+
--value-stdin read the value to store from stdin (one trailing newline is stripped). Keeps it out of argv
|
|
2062
2172
|
|
|
2063
2173
|
GLOBAL FLAGS
|
|
2064
2174
|
-w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
|
|
@@ -2083,6 +2193,16 @@ DESCRIPTION
|
|
|
2083
2193
|
To set a percentage rollout (gradual rollout / A/B test / canary deploy) instead:
|
|
2084
2194
|
qfg set-rollout my.flag --environment production --true-percent 20
|
|
2085
2195
|
|
|
2196
|
+
Secrets (--secret, or any config whose value is already encrypted) are
|
|
2197
|
+
STRING-ONLY. To store a JSON secret, make it a string secret holding the JSON
|
|
2198
|
+
and JSON.parse it in your app. The CLI never prints a secret's plaintext; it
|
|
2199
|
+
shows a redacted fingerprint like [encrypted *****3fa9c, 51 chars, ends …a1b2].
|
|
2200
|
+
Rotate a secret without the value entering argv / shell history:
|
|
2201
|
+
pbpaste | qfg set-default stripe.api-key --environment production --secret --value-stdin --confirm
|
|
2202
|
+
qfg set-default stripe.api-key --environment production --secret --value-from-env STRIPE_API_KEY --confirm
|
|
2203
|
+
(--env-var is different: it stores NO value and tells the SDK to read one from
|
|
2204
|
+
that env var at runtime.)
|
|
2205
|
+
|
|
2086
2206
|
To see all current values and rules for a flag:
|
|
2087
2207
|
qfg info my.flag
|
|
2088
2208
|
|
|
@@ -2100,7 +2220,15 @@ EXAMPLES
|
|
|
2100
2220
|
|
|
2101
2221
|
$ qfg set-default my.flag.name --value=false --environment=production --replace-targeting # kill-switch: off for everyone
|
|
2102
2222
|
|
|
2103
|
-
|
|
2223
|
+
# Rotate a secret without the value entering argv:
|
|
2224
|
+
|
|
2225
|
+
pbpaste | qfg set-default my.secret --environment=production --secret --value-stdin --confirm
|
|
2226
|
+
|
|
2227
|
+
$ qfg set-default my.secret --environment=production --secret --value-from-env=MY_SECRET --confirm
|
|
2228
|
+
|
|
2229
|
+
# Write the [Default] rules (inherited by every environment without its own):
|
|
2230
|
+
|
|
2231
|
+
$ qfg set-default my.secret --environment="[Default]" --secret --value-from-env=MY_SECRET --confirm
|
|
2104
2232
|
|
|
2105
2233
|
$ qfg set-default my.config.name --env-var=MY_ENV_VAR_NAME --environment=production
|
|
2106
2234
|
|
|
@@ -2113,7 +2241,7 @@ EXAMPLES
|
|
|
2113
2241
|
$ qfg pull && qfg config-schema
|
|
2114
2242
|
```
|
|
2115
2243
|
|
|
2116
|
-
_See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.
|
|
2244
|
+
_See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/set-default.ts)_
|
|
2117
2245
|
|
|
2118
2246
|
## `qfg set-rollout [NAME]`
|
|
2119
2247
|
|
|
@@ -2204,7 +2332,7 @@ EXAMPLES
|
|
|
2204
2332
|
$ qfg set-rollout my.variant.flag --environment production --weights "a:33,b:33,c:34" --hash-by user.id
|
|
2205
2333
|
```
|
|
2206
2334
|
|
|
2207
|
-
_See code: [src/commands/set-rollout.ts](https://github.com/quonfig/cli/blob/v0.
|
|
2335
|
+
_See code: [src/commands/set-rollout.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/set-rollout.ts)_
|
|
2208
2336
|
|
|
2209
2337
|
## `qfg sync`
|
|
2210
2338
|
|
|
@@ -2236,7 +2364,7 @@ EXAMPLES
|
|
|
2236
2364
|
$ qfg sync --watch --dir ./our-config --interval 30
|
|
2237
2365
|
```
|
|
2238
2366
|
|
|
2239
|
-
_See code: [src/commands/sync.ts](https://github.com/quonfig/cli/blob/v0.
|
|
2367
|
+
_See code: [src/commands/sync.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/sync.ts)_
|
|
2240
2368
|
|
|
2241
2369
|
## `qfg toggle [NAME]`
|
|
2242
2370
|
|
|
@@ -2245,23 +2373,29 @@ Set the fallback value for a flag or config in one environment.
|
|
|
2245
2373
|
```
|
|
2246
2374
|
USAGE
|
|
2247
2375
|
$ qfg toggle [NAME] [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [--confidential]
|
|
2248
|
-
[--env-var <value>] [--environment <value>] [--replace-targeting] [--value <value>] [--
|
|
2249
|
-
[--secret-key-name <value>]
|
|
2376
|
+
[--env-var <value>] [--environment <value>] [--replace-targeting] [--value <value>] [--value-from-env VAR]
|
|
2377
|
+
[--value-stdin] [--confirm] [--secret] [--secret-key-name <value>]
|
|
2250
2378
|
|
|
2251
2379
|
ARGUMENTS
|
|
2252
2380
|
NAME config/feature-flag/etc. name
|
|
2253
2381
|
|
|
2254
2382
|
FLAGS
|
|
2255
|
-
--confidential
|
|
2383
|
+
--[no-]confidential mark the value as confidential. Auto-detected when the key already holds a confidential
|
|
2384
|
+
value; pass --no-confidential to store it in the clear
|
|
2256
2385
|
--confirm confirm without prompt
|
|
2257
|
-
--env-var=<value>
|
|
2258
|
-
|
|
2386
|
+
--env-var=<value> store no value: the SDK reads it from this env var at RUNTIME. To read a value from a local
|
|
2387
|
+
env var NOW, use --value-from-env
|
|
2388
|
+
--environment=<value> environment to change, e.g. production. Use "[Default]" for the default rules that every
|
|
2389
|
+
environment without its own rules inherits
|
|
2259
2390
|
--replace-targeting set the value for EVERYONE: delete this environment's targeting rules instead of keeping
|
|
2260
2391
|
them (they stay in git history)
|
|
2261
|
-
--secret encrypt the value of this item
|
|
2392
|
+
--secret encrypt the value of this item (string-only; the CLI never prints the plaintext)
|
|
2262
2393
|
--secret-key-name=<value> [default: quonfig.secrets.encryption.key] name of the secret key to use for
|
|
2263
2394
|
encryption/decryption
|
|
2264
|
-
--value=<value> new default value
|
|
2395
|
+
--value=<value> new default value (for secrets prefer --value-stdin / --value-from-env)
|
|
2396
|
+
--value-from-env=VAR read the value to store from this LOCAL env var now (keeps it out of argv/shell history).
|
|
2397
|
+
Not the same as --env-var
|
|
2398
|
+
--value-stdin read the value to store from stdin (one trailing newline is stripped). Keeps it out of argv
|
|
2265
2399
|
|
|
2266
2400
|
GLOBAL FLAGS
|
|
2267
2401
|
-w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
|
|
@@ -2286,6 +2420,16 @@ DESCRIPTION
|
|
|
2286
2420
|
To set a percentage rollout (gradual rollout / A/B test / canary deploy) instead:
|
|
2287
2421
|
qfg set-rollout my.flag --environment production --true-percent 20
|
|
2288
2422
|
|
|
2423
|
+
Secrets (--secret, or any config whose value is already encrypted) are
|
|
2424
|
+
STRING-ONLY. To store a JSON secret, make it a string secret holding the JSON
|
|
2425
|
+
and JSON.parse it in your app. The CLI never prints a secret's plaintext; it
|
|
2426
|
+
shows a redacted fingerprint like [encrypted *****3fa9c, 51 chars, ends …a1b2].
|
|
2427
|
+
Rotate a secret without the value entering argv / shell history:
|
|
2428
|
+
pbpaste | qfg set-default stripe.api-key --environment production --secret --value-stdin --confirm
|
|
2429
|
+
qfg set-default stripe.api-key --environment production --secret --value-from-env STRIPE_API_KEY --confirm
|
|
2430
|
+
(--env-var is different: it stores NO value and tells the SDK to read one from
|
|
2431
|
+
that env var at runtime.)
|
|
2432
|
+
|
|
2289
2433
|
To see all current values and rules for a flag:
|
|
2290
2434
|
qfg info my.flag
|
|
2291
2435
|
|
|
@@ -2303,7 +2447,15 @@ EXAMPLES
|
|
|
2303
2447
|
|
|
2304
2448
|
$ qfg toggle my.flag.name --value=false --environment=production --replace-targeting # kill-switch: off for everyone
|
|
2305
2449
|
|
|
2306
|
-
|
|
2450
|
+
# Rotate a secret without the value entering argv:
|
|
2451
|
+
|
|
2452
|
+
pbpaste | qfg toggle my.secret --environment=production --secret --value-stdin --confirm
|
|
2453
|
+
|
|
2454
|
+
$ qfg toggle my.secret --environment=production --secret --value-from-env=MY_SECRET --confirm
|
|
2455
|
+
|
|
2456
|
+
# Write the [Default] rules (inherited by every environment without its own):
|
|
2457
|
+
|
|
2458
|
+
$ qfg toggle my.secret --environment="[Default]" --secret --value-from-env=MY_SECRET --confirm
|
|
2307
2459
|
|
|
2308
2460
|
$ qfg toggle my.config.name --env-var=MY_ENV_VAR_NAME --environment=production
|
|
2309
2461
|
|
|
@@ -2347,7 +2499,7 @@ EXAMPLES
|
|
|
2347
2499
|
$ qfg verify --json
|
|
2348
2500
|
```
|
|
2349
2501
|
|
|
2350
|
-
_See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.
|
|
2502
|
+
_See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/verify.ts)_
|
|
2351
2503
|
|
|
2352
2504
|
## `qfg whoami`
|
|
2353
2505
|
|
|
@@ -2370,7 +2522,7 @@ EXAMPLES
|
|
|
2370
2522
|
$ qfg whoami
|
|
2371
2523
|
```
|
|
2372
2524
|
|
|
2373
|
-
_See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.
|
|
2525
|
+
_See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/whoami.ts)_
|
|
2374
2526
|
|
|
2375
2527
|
## `qfg workspace`
|
|
2376
2528
|
|
|
@@ -2393,7 +2545,7 @@ EXAMPLES
|
|
|
2393
2545
|
$ qfg workspace
|
|
2394
2546
|
```
|
|
2395
2547
|
|
|
2396
|
-
_See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.
|
|
2548
|
+
_See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/workspace.ts)_
|
|
2397
2549
|
|
|
2398
2550
|
## `qfg workspace bootstrap`
|
|
2399
2551
|
|
|
@@ -2426,7 +2578,7 @@ EXAMPLES
|
|
|
2426
2578
|
$ qfg workspace bootstrap --dir ./our-config --skip-validate
|
|
2427
2579
|
```
|
|
2428
2580
|
|
|
2429
|
-
_See code: [src/commands/workspace/bootstrap.ts](https://github.com/quonfig/cli/blob/v0.
|
|
2581
|
+
_See code: [src/commands/workspace/bootstrap.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/workspace/bootstrap.ts)_
|
|
2430
2582
|
|
|
2431
2583
|
## `qfg workspace create SLUG`
|
|
2432
2584
|
|
|
@@ -2460,7 +2612,7 @@ EXAMPLES
|
|
|
2460
2612
|
$ qfg workspace create my-team --org 11111111-1111-1111-1111-111111111111
|
|
2461
2613
|
```
|
|
2462
2614
|
|
|
2463
|
-
_See code: [src/commands/workspace/create.ts](https://github.com/quonfig/cli/blob/v0.
|
|
2615
|
+
_See code: [src/commands/workspace/create.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/workspace/create.ts)_
|
|
2464
2616
|
|
|
2465
2617
|
## `qfg workspace switch [SLUG]`
|
|
2466
2618
|
|
|
@@ -2488,7 +2640,7 @@ EXAMPLES
|
|
|
2488
2640
|
$ qfg workspace switch acme/production
|
|
2489
2641
|
```
|
|
2490
2642
|
|
|
2491
|
-
_See code: [src/commands/workspace/switch.ts](https://github.com/quonfig/cli/blob/v0.
|
|
2643
|
+
_See code: [src/commands/workspace/switch.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/workspace/switch.ts)_
|
|
2492
2644
|
<!-- commandsstop -->
|
|
2493
2645
|
|
|
2494
2646
|
## Local Development
|