@quonfig/cli 0.0.1
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/LICENSE +21 -0
- package/README.md +707 -0
- package/bin/dev.cmd +3 -0
- package/bin/dev.js +9 -0
- package/bin/run.cmd +3 -0
- package/bin/run.js +8 -0
- package/dist/api/get-environments.d.ts +10 -0
- package/dist/api/get-environments.js +11 -0
- package/dist/codegen/code-generators/base-generator.d.ts +11 -0
- package/dist/codegen/code-generators/base-generator.js +8 -0
- package/dist/codegen/code-generators/base-typescript-generator.d.ts +17 -0
- package/dist/codegen/code-generators/base-typescript-generator.js +35 -0
- package/dist/codegen/code-generators/node-typescript-generator.d.ts +8 -0
- package/dist/codegen/code-generators/node-typescript-generator.js +96 -0
- package/dist/codegen/code-generators/react-typescript-generator.d.ts +11 -0
- package/dist/codegen/code-generators/react-typescript-generator.js +116 -0
- package/dist/codegen/config-downloader.d.ts +7 -0
- package/dist/codegen/config-downloader.js +26 -0
- package/dist/codegen/json-schema-to-zod.d.ts +3 -0
- package/dist/codegen/json-schema-to-zod.js +170 -0
- package/dist/codegen/language-mappers/json-to-zod-mapper.d.ts +4 -0
- package/dist/codegen/language-mappers/json-to-zod-mapper.js +55 -0
- package/dist/codegen/language-mappers/zod-base-mapper.d.ts +35 -0
- package/dist/codegen/language-mappers/zod-base-mapper.js +111 -0
- package/dist/codegen/language-mappers/zod-to-string-mapper.d.ts +25 -0
- package/dist/codegen/language-mappers/zod-to-string-mapper.js +87 -0
- package/dist/codegen/language-mappers/zod-to-typescript-mapper.d.ts +35 -0
- package/dist/codegen/language-mappers/zod-to-typescript-mapper.js +133 -0
- package/dist/codegen/language-mappers/zod-to-typescript-return-value-mapper.d.ts +36 -0
- package/dist/codegen/language-mappers/zod-to-typescript-return-value-mapper.js +150 -0
- package/dist/codegen/mustache-extractor.d.ts +6 -0
- package/dist/codegen/mustache-extractor.js +83 -0
- package/dist/codegen/schema-evaluator.d.ts +37 -0
- package/dist/codegen/schema-evaluator.js +283 -0
- package/dist/codegen/schema-extractor.d.ts +24 -0
- package/dist/codegen/schema-extractor.js +265 -0
- package/dist/codegen/types.d.ts +44 -0
- package/dist/codegen/types.js +5 -0
- package/dist/codegen/zod-introspection.d.ts +85 -0
- package/dist/codegen/zod-introspection.js +205 -0
- package/dist/commands/create.d.ts +19 -0
- package/dist/commands/create.js +175 -0
- package/dist/commands/download.d.ts +13 -0
- package/dist/commands/download.js +63 -0
- package/dist/commands/generate-new-hex-key.d.ts +7 -0
- package/dist/commands/generate-new-hex-key.js +10 -0
- package/dist/commands/generate.d.ts +16 -0
- package/dist/commands/generate.js +220 -0
- package/dist/commands/get.d.ts +13 -0
- package/dist/commands/get.js +141 -0
- package/dist/commands/info.d.ts +21 -0
- package/dist/commands/info.js +464 -0
- package/dist/commands/interactive.d.ts +5 -0
- package/dist/commands/interactive.js +8 -0
- package/dist/commands/list.d.ts +13 -0
- package/dist/commands/list.js +61 -0
- package/dist/commands/login.d.ts +10 -0
- package/dist/commands/login.js +124 -0
- package/dist/commands/logout.d.ts +7 -0
- package/dist/commands/logout.js +12 -0
- package/dist/commands/mcp.d.ts +13 -0
- package/dist/commands/mcp.js +145 -0
- package/dist/commands/override.d.ts +17 -0
- package/dist/commands/override.js +170 -0
- package/dist/commands/profile.d.ts +7 -0
- package/dist/commands/profile.js +47 -0
- package/dist/commands/schema.d.ts +21 -0
- package/dist/commands/schema.js +168 -0
- package/dist/commands/serve.d.ts +13 -0
- package/dist/commands/serve.js +99 -0
- package/dist/commands/set-default.d.ts +20 -0
- package/dist/commands/set-default.js +273 -0
- package/dist/commands/verify.d.ts +12 -0
- package/dist/commands/verify.js +48 -0
- package/dist/commands/whoami.d.ts +7 -0
- package/dist/commands/whoami.js +52 -0
- package/dist/commands/workspace.d.ts +7 -0
- package/dist/commands/workspace.js +38 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.js +2 -0
- package/dist/help.d.ts +4 -0
- package/dist/help.js +10 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +112 -0
- package/dist/interactive-prompt.d.ts +2 -0
- package/dist/interactive-prompt.js +162 -0
- package/dist/quonfig.d.ts +15 -0
- package/dist/quonfig.js +75 -0
- package/dist/result.d.ts +35 -0
- package/dist/result.js +9 -0
- package/dist/services/mcp.d.ts +15 -0
- package/dist/services/mcp.js +59 -0
- package/dist/ui/get-confirmation.d.ts +10 -0
- package/dist/ui/get-confirmation.js +4 -0
- package/dist/ui/get-environment.d.ts +11 -0
- package/dist/ui/get-environment.js +42 -0
- package/dist/ui/get-key.d.ts +27 -0
- package/dist/ui/get-key.js +15 -0
- package/dist/ui/get-string.d.ts +5 -0
- package/dist/ui/get-string.js +8 -0
- package/dist/ui/get-value.d.ts +18 -0
- package/dist/ui/get-value.js +46 -0
- package/dist/util/autocomplete.d.ts +6 -0
- package/dist/util/autocomplete.js +25 -0
- package/dist/util/coerce.d.ts +7 -0
- package/dist/util/coerce.js +62 -0
- package/dist/util/color.d.ts +3 -0
- package/dist/util/color.js +4 -0
- package/dist/util/config-value-dto.d.ts +16 -0
- package/dist/util/config-value-dto.js +82 -0
- package/dist/util/context.d.ts +18 -0
- package/dist/util/context.js +10 -0
- package/dist/util/domain-urls.d.ts +3 -0
- package/dist/util/domain-urls.js +18 -0
- package/dist/util/encryption.d.ts +20 -0
- package/dist/util/encryption.js +153 -0
- package/dist/util/file-manager.d.ts +12 -0
- package/dist/util/file-manager.js +16 -0
- package/dist/util/get-client.d.ts +7 -0
- package/dist/util/get-client.js +127 -0
- package/dist/util/is-interactive.d.ts +5 -0
- package/dist/util/is-interactive.js +7 -0
- package/dist/util/json-maybe.d.ts +3 -0
- package/dist/util/json-maybe.js +14 -0
- package/dist/util/name-arg.d.ts +4 -0
- package/dist/util/name-arg.js +3 -0
- package/dist/util/oauth-client.d.ts +30 -0
- package/dist/util/oauth-client.js +99 -0
- package/dist/util/secret-flags.d.ts +13 -0
- package/dist/util/secret-flags.js +13 -0
- package/dist/util/token-storage.d.ts +25 -0
- package/dist/util/token-storage.js +90 -0
- package/dist/validations/value.d.ts +4 -0
- package/dist/validations/value.js +11 -0
- package/dist/verify/standalone.d.ts +14 -0
- package/dist/verify/standalone.js +133 -0
- package/dist/verify/validate.d.ts +43 -0
- package/dist/verify/validate.js +756 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +2 -0
- package/oclif.manifest.json +1429 -0
- package/package.json +104 -0
package/README.md
ADDED
|
@@ -0,0 +1,707 @@
|
|
|
1
|
+
# Quonfig CLI
|
|
2
|
+
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
* [Quonfig CLI](#quonfig-cli)
|
|
5
|
+
* [Usage](#usage)
|
|
6
|
+
* [Commands](#commands)
|
|
7
|
+
<!-- tocstop -->
|
|
8
|
+
|
|
9
|
+
# Usage
|
|
10
|
+
|
|
11
|
+
<!-- usage -->
|
|
12
|
+
```sh-session
|
|
13
|
+
$ npm install -g @quonfig/cli
|
|
14
|
+
$ qfg COMMAND
|
|
15
|
+
running command...
|
|
16
|
+
$ qfg (--version)
|
|
17
|
+
@quonfig/cli/0.0.1 darwin-arm64 node-v24.4.1
|
|
18
|
+
$ qfg --help [COMMAND]
|
|
19
|
+
USAGE
|
|
20
|
+
$ qfg COMMAND
|
|
21
|
+
...
|
|
22
|
+
```
|
|
23
|
+
<!-- usagestop -->
|
|
24
|
+
|
|
25
|
+
# Commands
|
|
26
|
+
|
|
27
|
+
<!-- commands -->
|
|
28
|
+
* [`qfg create NAME`](#qfg-create-name)
|
|
29
|
+
* [`qfg download`](#qfg-download)
|
|
30
|
+
* [`qfg generate`](#qfg-generate)
|
|
31
|
+
* [`qfg generate-new-hex-key`](#qfg-generate-new-hex-key)
|
|
32
|
+
* [`qfg get [NAME]`](#qfg-get-name)
|
|
33
|
+
* [`qfg info [NAME]`](#qfg-info-name)
|
|
34
|
+
* [`qfg interactive`](#qfg-interactive)
|
|
35
|
+
* [`qfg list`](#qfg-list)
|
|
36
|
+
* [`qfg login`](#qfg-login)
|
|
37
|
+
* [`qfg logout`](#qfg-logout)
|
|
38
|
+
* [`qfg mcp`](#qfg-mcp)
|
|
39
|
+
* [`qfg override [NAME]`](#qfg-override-name)
|
|
40
|
+
* [`qfg profile`](#qfg-profile)
|
|
41
|
+
* [`qfg schema NAME`](#qfg-schema-name)
|
|
42
|
+
* [`qfg serve DATA-FILE`](#qfg-serve-data-file)
|
|
43
|
+
* [`qfg set-default [NAME]`](#qfg-set-default-name)
|
|
44
|
+
* [`qfg verify [PATH]`](#qfg-verify-path)
|
|
45
|
+
* [`qfg whoami`](#qfg-whoami)
|
|
46
|
+
* [`qfg workspace`](#qfg-workspace)
|
|
47
|
+
|
|
48
|
+
## `qfg create NAME`
|
|
49
|
+
|
|
50
|
+
Create a new item in Quonfig
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
USAGE
|
|
54
|
+
$ qfg create NAME --type boolean-flag|boolean|string|double|int|string-list|json [--json] [--interactive]
|
|
55
|
+
[--no-color] [--verbose] [-p <value>] [--confidential] [--env-var <value>] [--value <value>] [--secret]
|
|
56
|
+
[--secret-key-name <value>]
|
|
57
|
+
|
|
58
|
+
ARGUMENTS
|
|
59
|
+
NAME name for your new item (e.g. my.new.flag)
|
|
60
|
+
|
|
61
|
+
FLAGS
|
|
62
|
+
--confidential mark the value as confidential
|
|
63
|
+
--env-var=<value> environment variable to get value from
|
|
64
|
+
--secret encrypt the value of this item
|
|
65
|
+
--secret-key-name=<value> [default: quonfig.secrets.encryption.key] name of the secret key to use for
|
|
66
|
+
encryption/decryption
|
|
67
|
+
--type=<option> (required)
|
|
68
|
+
<options: boolean-flag|boolean|string|double|int|string-list|json>
|
|
69
|
+
--value=<value> default value for your new item
|
|
70
|
+
|
|
71
|
+
GLOBAL FLAGS
|
|
72
|
+
-p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
|
|
73
|
+
--[no-]interactive Force interactive mode
|
|
74
|
+
--json Format output as json.
|
|
75
|
+
--no-color Do not colorize output
|
|
76
|
+
--verbose Verbose output
|
|
77
|
+
|
|
78
|
+
DESCRIPTION
|
|
79
|
+
Create a new item in Quonfig
|
|
80
|
+
|
|
81
|
+
EXAMPLES
|
|
82
|
+
$ qfg create my.new.flag --type boolean-flag
|
|
83
|
+
|
|
84
|
+
$ qfg create my.new.flag --type boolean-flag --value=true
|
|
85
|
+
|
|
86
|
+
$ qfg create my.new.string --type string --value="hello world"
|
|
87
|
+
|
|
88
|
+
$ qfg create my.new.string --type string --value="hello world" --secret
|
|
89
|
+
|
|
90
|
+
$ qfg create my.new.string --type string --env-var=MY_ENV_VAR_NAME
|
|
91
|
+
|
|
92
|
+
$ qfg create my.new.string --type json --value="{\"key\": \"value\"}"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
_See code: [src/commands/create.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/create.ts)_
|
|
96
|
+
|
|
97
|
+
## `qfg download`
|
|
98
|
+
|
|
99
|
+
Download a Datafile for a given environment
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
USAGE
|
|
103
|
+
$ qfg download [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--environment <value>]
|
|
104
|
+
[--sdk-key <value>]
|
|
105
|
+
|
|
106
|
+
FLAGS
|
|
107
|
+
--environment=<value> environment to download
|
|
108
|
+
--sdk-key=<value> SDK key for authentication (uses legacy download endpoint)
|
|
109
|
+
|
|
110
|
+
GLOBAL FLAGS
|
|
111
|
+
-p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
|
|
112
|
+
--[no-]interactive Force interactive mode
|
|
113
|
+
--json Format output as json.
|
|
114
|
+
--no-color Do not colorize output
|
|
115
|
+
--verbose Verbose output
|
|
116
|
+
|
|
117
|
+
DESCRIPTION
|
|
118
|
+
Download a Datafile for a given environment
|
|
119
|
+
|
|
120
|
+
You can serve a datafile using the `serve` command.
|
|
121
|
+
|
|
122
|
+
EXAMPLES
|
|
123
|
+
$ qfg download --environment=test
|
|
124
|
+
|
|
125
|
+
$ qfg download --environment=test --sdk-key=YOUR_SDK_KEY
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
_See code: [src/commands/download.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/download.ts)_
|
|
129
|
+
|
|
130
|
+
## `qfg generate`
|
|
131
|
+
|
|
132
|
+
Generate type definitions for your Quonfig configuration
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
USAGE
|
|
136
|
+
$ qfg generate [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [-o <value>] [--targets
|
|
137
|
+
<value>]
|
|
138
|
+
|
|
139
|
+
FLAGS
|
|
140
|
+
-o, --output-directory=<value> Override the output directory for generated files
|
|
141
|
+
--targets=<value> [default: react-ts] Determines for language/framework to generate code for (node-ts,
|
|
142
|
+
react-ts)
|
|
143
|
+
|
|
144
|
+
GLOBAL FLAGS
|
|
145
|
+
-p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
|
|
146
|
+
--[no-]interactive Force interactive mode
|
|
147
|
+
--json Format output as json.
|
|
148
|
+
--no-color Do not colorize output
|
|
149
|
+
--verbose Verbose output
|
|
150
|
+
|
|
151
|
+
DESCRIPTION
|
|
152
|
+
Generate type definitions for your Quonfig configuration
|
|
153
|
+
|
|
154
|
+
You can use the default type-generation configuration, or by provide your own via a quonfig.config.json file:
|
|
155
|
+
|
|
156
|
+
Format:
|
|
157
|
+
{
|
|
158
|
+
outputDirectory?: string;
|
|
159
|
+
targets?: {
|
|
160
|
+
<language key>?: {
|
|
161
|
+
outputDirectory?: string;
|
|
162
|
+
outputFileName?: string;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
Example quonfig.config.json:
|
|
168
|
+
```json
|
|
169
|
+
{
|
|
170
|
+
"outputDirectory": "path/to/your/directory",
|
|
171
|
+
"targets": {
|
|
172
|
+
"react-ts": {
|
|
173
|
+
"outputDirectory": "diff/path/to/your/directory",
|
|
174
|
+
"declarationFileName": "quonfig-client-types.d.ts",
|
|
175
|
+
"clientFileName": "quonfig-client.ts",
|
|
176
|
+
},
|
|
177
|
+
"node-ts": {
|
|
178
|
+
"declarationFileName": "quonfig-server-types.d.ts",
|
|
179
|
+
"clientFileName": "quonfig-server.ts",
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
EXAMPLES
|
|
187
|
+
$ qfg generate # react-ts only by default
|
|
188
|
+
|
|
189
|
+
$ qfg generate --targets node-ts # node-ts only
|
|
190
|
+
|
|
191
|
+
$ qfg generate --targets react-ts,node-ts # both node + react-ts
|
|
192
|
+
|
|
193
|
+
$ qfg generate -o ./src/generated # specify output directory
|
|
194
|
+
|
|
195
|
+
$ qfg generate --targets node-ts -o ./dist # combine with targets
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
_See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/generate.ts)_
|
|
199
|
+
|
|
200
|
+
## `qfg generate-new-hex-key`
|
|
201
|
+
|
|
202
|
+
Generate a new hex key suitable for secrets
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
USAGE
|
|
206
|
+
$ qfg generate-new-hex-key [--json] [--interactive] [--no-color] [--verbose]
|
|
207
|
+
|
|
208
|
+
GLOBAL FLAGS
|
|
209
|
+
--[no-]interactive Force interactive mode
|
|
210
|
+
--json Format output as json.
|
|
211
|
+
--no-color Do not colorize output
|
|
212
|
+
--verbose Verbose output
|
|
213
|
+
|
|
214
|
+
DESCRIPTION
|
|
215
|
+
Generate a new hex key suitable for secrets
|
|
216
|
+
|
|
217
|
+
EXAMPLES
|
|
218
|
+
$ qfg generate-new-hex-key
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
_See code: [src/commands/generate-new-hex-key.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/generate-new-hex-key.ts)_
|
|
222
|
+
|
|
223
|
+
## `qfg get [NAME]`
|
|
224
|
+
|
|
225
|
+
Get the value of a config/feature-flag/etc.
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
USAGE
|
|
229
|
+
$ qfg get [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--environment <value>]
|
|
230
|
+
|
|
231
|
+
ARGUMENTS
|
|
232
|
+
NAME config/feature-flag/etc. name
|
|
233
|
+
|
|
234
|
+
FLAGS
|
|
235
|
+
--environment=<value> environment to evaluate in
|
|
236
|
+
|
|
237
|
+
GLOBAL FLAGS
|
|
238
|
+
-p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
|
|
239
|
+
--[no-]interactive Force interactive mode
|
|
240
|
+
--json Format output as json.
|
|
241
|
+
--no-color Do not colorize output
|
|
242
|
+
--verbose Verbose output
|
|
243
|
+
|
|
244
|
+
DESCRIPTION
|
|
245
|
+
Get the value of a config/feature-flag/etc.
|
|
246
|
+
|
|
247
|
+
EXAMPLES
|
|
248
|
+
$ qfg get my.config.name
|
|
249
|
+
|
|
250
|
+
$ qfg get my.config.name --environment=production
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
_See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/get.ts)_
|
|
254
|
+
|
|
255
|
+
## `qfg info [NAME]`
|
|
256
|
+
|
|
257
|
+
Show details about the provided config/feature-flag/etc.
|
|
258
|
+
|
|
259
|
+
```
|
|
260
|
+
USAGE
|
|
261
|
+
$ qfg info [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--exclude-evaluations]
|
|
262
|
+
|
|
263
|
+
ARGUMENTS
|
|
264
|
+
NAME config/feature-flag/etc. name
|
|
265
|
+
|
|
266
|
+
FLAGS
|
|
267
|
+
--exclude-evaluations Exclude evaluation data
|
|
268
|
+
|
|
269
|
+
GLOBAL FLAGS
|
|
270
|
+
-p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
|
|
271
|
+
--[no-]interactive Force interactive mode
|
|
272
|
+
--json Format output as json.
|
|
273
|
+
--no-color Do not colorize output
|
|
274
|
+
--verbose Verbose output
|
|
275
|
+
|
|
276
|
+
DESCRIPTION
|
|
277
|
+
Show details about the provided config/feature-flag/etc.
|
|
278
|
+
|
|
279
|
+
EXAMPLES
|
|
280
|
+
$ qfg info my.config.name
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
_See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/info.ts)_
|
|
284
|
+
|
|
285
|
+
## `qfg interactive`
|
|
286
|
+
|
|
287
|
+
```
|
|
288
|
+
USAGE
|
|
289
|
+
$ qfg interactive [--json] [--interactive] [--no-color] [--verbose]
|
|
290
|
+
|
|
291
|
+
GLOBAL FLAGS
|
|
292
|
+
--[no-]interactive Force interactive mode
|
|
293
|
+
--json Format output as json.
|
|
294
|
+
--no-color Do not colorize output
|
|
295
|
+
--verbose Verbose output
|
|
296
|
+
|
|
297
|
+
EXAMPLES
|
|
298
|
+
$ qfg
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
_See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/interactive.ts)_
|
|
302
|
+
|
|
303
|
+
## `qfg list`
|
|
304
|
+
|
|
305
|
+
Show keys for your config/feature flags/etc.
|
|
306
|
+
|
|
307
|
+
```
|
|
308
|
+
USAGE
|
|
309
|
+
$ qfg list [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--configs] [--feature-flags]
|
|
310
|
+
[--log-levels] [--schemas] [--segments]
|
|
311
|
+
|
|
312
|
+
FLAGS
|
|
313
|
+
--configs include configs
|
|
314
|
+
--feature-flags include flags
|
|
315
|
+
--log-levels include log levels
|
|
316
|
+
--schemas include schemas
|
|
317
|
+
--segments include segments
|
|
318
|
+
|
|
319
|
+
GLOBAL FLAGS
|
|
320
|
+
-p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
|
|
321
|
+
--[no-]interactive Force interactive mode
|
|
322
|
+
--json Format output as json.
|
|
323
|
+
--no-color Do not colorize output
|
|
324
|
+
--verbose Verbose output
|
|
325
|
+
|
|
326
|
+
DESCRIPTION
|
|
327
|
+
Show keys for your config/feature flags/etc.
|
|
328
|
+
|
|
329
|
+
All types are returned by default. If you pass one or more type flags (e.g. --configs), only those types will be
|
|
330
|
+
returned
|
|
331
|
+
|
|
332
|
+
EXAMPLES
|
|
333
|
+
$ qfg list
|
|
334
|
+
|
|
335
|
+
$ qfg list --feature-flags
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
_See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/list.ts)_
|
|
339
|
+
|
|
340
|
+
## `qfg login`
|
|
341
|
+
|
|
342
|
+
Log in to Quonfig via WorkOS device authorization
|
|
343
|
+
|
|
344
|
+
```
|
|
345
|
+
USAGE
|
|
346
|
+
$ qfg login [--json] [--interactive] [--no-color] [--verbose] [-p <value>]
|
|
347
|
+
|
|
348
|
+
FLAGS
|
|
349
|
+
-p, --profile=<value> Profile name to create or update (defaults to "default")
|
|
350
|
+
|
|
351
|
+
GLOBAL FLAGS
|
|
352
|
+
--[no-]interactive Force interactive mode
|
|
353
|
+
--json Format output as json.
|
|
354
|
+
--no-color Do not colorize output
|
|
355
|
+
--verbose Verbose output
|
|
356
|
+
|
|
357
|
+
DESCRIPTION
|
|
358
|
+
Log in to Quonfig via WorkOS device authorization
|
|
359
|
+
|
|
360
|
+
EXAMPLES
|
|
361
|
+
$ qfg login
|
|
362
|
+
|
|
363
|
+
$ qfg login --profile myprofile
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
_See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/login.ts)_
|
|
367
|
+
|
|
368
|
+
## `qfg logout`
|
|
369
|
+
|
|
370
|
+
Log out and clear stored authentication tokens
|
|
371
|
+
|
|
372
|
+
```
|
|
373
|
+
USAGE
|
|
374
|
+
$ qfg logout [--json] [--interactive] [--no-color] [--verbose]
|
|
375
|
+
|
|
376
|
+
GLOBAL FLAGS
|
|
377
|
+
--[no-]interactive Force interactive mode
|
|
378
|
+
--json Format output as json.
|
|
379
|
+
--no-color Do not colorize output
|
|
380
|
+
--verbose Verbose output
|
|
381
|
+
|
|
382
|
+
DESCRIPTION
|
|
383
|
+
Log out and clear stored authentication tokens
|
|
384
|
+
|
|
385
|
+
EXAMPLES
|
|
386
|
+
$ qfg logout
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
_See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/logout.ts)_
|
|
390
|
+
|
|
391
|
+
## `qfg mcp`
|
|
392
|
+
|
|
393
|
+
Configure Quonfig MCP server for your AI assistant
|
|
394
|
+
|
|
395
|
+
```
|
|
396
|
+
USAGE
|
|
397
|
+
$ qfg mcp [--json] [--interactive] [--no-color] [--verbose] [--editor claude-code|codeium] [--url
|
|
398
|
+
<value>]
|
|
399
|
+
|
|
400
|
+
FLAGS
|
|
401
|
+
--editor=<option> Editor to configure (cursor, vscode, claude, windsurf)
|
|
402
|
+
<options: claude-code|codeium>
|
|
403
|
+
--url=<value> Internal URL for testing (defaults to https://app.quonfig.com/api/v1/mcp)
|
|
404
|
+
|
|
405
|
+
GLOBAL FLAGS
|
|
406
|
+
--[no-]interactive Force interactive mode
|
|
407
|
+
--json Format output as json.
|
|
408
|
+
--no-color Do not colorize output
|
|
409
|
+
--verbose Verbose output
|
|
410
|
+
|
|
411
|
+
DESCRIPTION
|
|
412
|
+
Configure Quonfig MCP server for your AI assistant
|
|
413
|
+
|
|
414
|
+
EXAMPLES
|
|
415
|
+
$ qfg mcp
|
|
416
|
+
|
|
417
|
+
$ qfg mcp --editor cursor
|
|
418
|
+
|
|
419
|
+
$ qfg mcp --url http://local-app.goatsofquonfig.com:3003/api/v1/mcp
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
_See code: [src/commands/mcp.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/mcp.ts)_
|
|
423
|
+
|
|
424
|
+
## `qfg override [NAME]`
|
|
425
|
+
|
|
426
|
+
Override the value of an item for your user/SDK key combo
|
|
427
|
+
|
|
428
|
+
```
|
|
429
|
+
USAGE
|
|
430
|
+
$ qfg override [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--environment <value>]
|
|
431
|
+
[--remove] [--value <value>]
|
|
432
|
+
|
|
433
|
+
ARGUMENTS
|
|
434
|
+
NAME config/feature-flag/etc. name
|
|
435
|
+
|
|
436
|
+
FLAGS
|
|
437
|
+
--environment=<value> environment to override in
|
|
438
|
+
--remove remove your override (if present)
|
|
439
|
+
--value=<value> value to use for your override
|
|
440
|
+
|
|
441
|
+
GLOBAL FLAGS
|
|
442
|
+
-p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
|
|
443
|
+
--[no-]interactive Force interactive mode
|
|
444
|
+
--json Format output as json.
|
|
445
|
+
--no-color Do not colorize output
|
|
446
|
+
--verbose Verbose output
|
|
447
|
+
|
|
448
|
+
DESCRIPTION
|
|
449
|
+
Override the value of an item for your user/SDK key combo
|
|
450
|
+
|
|
451
|
+
EXAMPLES
|
|
452
|
+
$ qfg override # will prompt for name and value
|
|
453
|
+
|
|
454
|
+
$ qfg override my.flag.name --value=true
|
|
455
|
+
|
|
456
|
+
$ qfg override my.flag.name --remove
|
|
457
|
+
|
|
458
|
+
$ qfg override my.double.config --value=3.14159
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
_See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/override.ts)_
|
|
462
|
+
|
|
463
|
+
## `qfg profile`
|
|
464
|
+
|
|
465
|
+
Manage profiles and set default profile
|
|
466
|
+
|
|
467
|
+
```
|
|
468
|
+
USAGE
|
|
469
|
+
$ qfg profile [--json] [--interactive] [--no-color] [--verbose]
|
|
470
|
+
|
|
471
|
+
GLOBAL FLAGS
|
|
472
|
+
--[no-]interactive Force interactive mode
|
|
473
|
+
--json Format output as json.
|
|
474
|
+
--no-color Do not colorize output
|
|
475
|
+
--verbose Verbose output
|
|
476
|
+
|
|
477
|
+
DESCRIPTION
|
|
478
|
+
Manage profiles and set default profile
|
|
479
|
+
|
|
480
|
+
EXAMPLES
|
|
481
|
+
$ qfg profile
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
_See code: [src/commands/profile.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/profile.ts)_
|
|
485
|
+
|
|
486
|
+
## `qfg schema NAME`
|
|
487
|
+
|
|
488
|
+
Get or update first-class schema documents
|
|
489
|
+
|
|
490
|
+
```
|
|
491
|
+
USAGE
|
|
492
|
+
$ qfg schema NAME [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--get] [--protected]
|
|
493
|
+
[--set-json-schema <value>] [--set-zod <value>]
|
|
494
|
+
|
|
495
|
+
ARGUMENTS
|
|
496
|
+
NAME schema key
|
|
497
|
+
|
|
498
|
+
FLAGS
|
|
499
|
+
--get get the schema document
|
|
500
|
+
--protected store the schema in protected storage
|
|
501
|
+
--set-json-schema=<value> set a plain JSON Schema document (inline JSON or @file path)
|
|
502
|
+
--set-zod=<value> compatibility alias for --set-json-schema; now expects plain JSON Schema
|
|
503
|
+
|
|
504
|
+
GLOBAL FLAGS
|
|
505
|
+
-p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
|
|
506
|
+
--[no-]interactive Force interactive mode
|
|
507
|
+
--json Format output as json.
|
|
508
|
+
--no-color Do not colorize output
|
|
509
|
+
--verbose Verbose output
|
|
510
|
+
|
|
511
|
+
DESCRIPTION
|
|
512
|
+
Get or update first-class schema documents
|
|
513
|
+
|
|
514
|
+
EXAMPLES
|
|
515
|
+
$ qfg schema my-schema --get
|
|
516
|
+
|
|
517
|
+
$ qfg schema my-schema --set-json-schema='{"type":"object","properties":{}}'
|
|
518
|
+
|
|
519
|
+
$ qfg schema my-schema --set-json-schema=@schemas/my-schema.json --protected
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
_See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/schema.ts)_
|
|
523
|
+
|
|
524
|
+
## `qfg serve DATA-FILE`
|
|
525
|
+
|
|
526
|
+
Serve a datafile on a local port
|
|
527
|
+
|
|
528
|
+
```
|
|
529
|
+
USAGE
|
|
530
|
+
$ qfg serve DATA-FILE [--json] [--interactive] [--no-color] [--verbose] [--port <value>]
|
|
531
|
+
|
|
532
|
+
ARGUMENTS
|
|
533
|
+
DATA-FILE file to read
|
|
534
|
+
|
|
535
|
+
FLAGS
|
|
536
|
+
--port=<value> [default: 3099] port to serve on
|
|
537
|
+
|
|
538
|
+
GLOBAL FLAGS
|
|
539
|
+
--[no-]interactive Force interactive mode
|
|
540
|
+
--json Format output as json.
|
|
541
|
+
--no-color Do not colorize output
|
|
542
|
+
--verbose Verbose output
|
|
543
|
+
|
|
544
|
+
DESCRIPTION
|
|
545
|
+
Serve a datafile on a local port
|
|
546
|
+
|
|
547
|
+
You can download a datafile using the `download` command.
|
|
548
|
+
|
|
549
|
+
You'll need to update your JavaScript (or React) client to point to this server.
|
|
550
|
+
|
|
551
|
+
e.g. `endpoints: ["http://localhost:3099"],`
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
EXAMPLES
|
|
555
|
+
$ qfg serve ./quonfig.test.588.config.json --port=3099
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
_See code: [src/commands/serve.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/serve.ts)_
|
|
559
|
+
|
|
560
|
+
## `qfg set-default [NAME]`
|
|
561
|
+
|
|
562
|
+
Set/update the default value for an environment (other rules still apply)
|
|
563
|
+
|
|
564
|
+
```
|
|
565
|
+
USAGE
|
|
566
|
+
$ qfg set-default [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--confidential]
|
|
567
|
+
[--env-var <value>] [--environment <value>] [--value <value>] [--confirm] [--secret] [--secret-key-name <value>]
|
|
568
|
+
|
|
569
|
+
ARGUMENTS
|
|
570
|
+
NAME config/feature-flag/etc. name
|
|
571
|
+
|
|
572
|
+
FLAGS
|
|
573
|
+
--confidential mark the value as confidential
|
|
574
|
+
--confirm confirm without prompt
|
|
575
|
+
--env-var=<value> environment variable to use as default value
|
|
576
|
+
--environment=<value> environment to change
|
|
577
|
+
--secret encrypt the value of this item
|
|
578
|
+
--secret-key-name=<value> [default: quonfig.secrets.encryption.key] name of the secret key to use for
|
|
579
|
+
encryption/decryption
|
|
580
|
+
--value=<value> new default value
|
|
581
|
+
|
|
582
|
+
GLOBAL FLAGS
|
|
583
|
+
-p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
|
|
584
|
+
--[no-]interactive Force interactive mode
|
|
585
|
+
--json Format output as json.
|
|
586
|
+
--no-color Do not colorize output
|
|
587
|
+
--verbose Verbose output
|
|
588
|
+
|
|
589
|
+
DESCRIPTION
|
|
590
|
+
Set/update the default value for an environment (other rules still apply)
|
|
591
|
+
|
|
592
|
+
EXAMPLES
|
|
593
|
+
$ qfg set-default my.flag.name # will prompt for value and env
|
|
594
|
+
|
|
595
|
+
$ qfg set-default my.flag.name --value=true --environment=staging
|
|
596
|
+
|
|
597
|
+
$ qfg set-default my.flag.name --value=true --secret
|
|
598
|
+
|
|
599
|
+
$ qfg set-default my.config.name --env-var=MY_ENV_VAR_NAME --environment=production
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
_See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/set-default.ts)_
|
|
603
|
+
|
|
604
|
+
## `qfg verify [PATH]`
|
|
605
|
+
|
|
606
|
+
Validate a Quonfig workspace directory
|
|
607
|
+
|
|
608
|
+
```
|
|
609
|
+
USAGE
|
|
610
|
+
$ qfg verify [PATH] [--json] [--interactive] [--no-color] [--verbose] [--strict]
|
|
611
|
+
|
|
612
|
+
ARGUMENTS
|
|
613
|
+
PATH [default: .] Path to workspace directory
|
|
614
|
+
|
|
615
|
+
FLAGS
|
|
616
|
+
--strict Treat warnings as errors
|
|
617
|
+
|
|
618
|
+
GLOBAL FLAGS
|
|
619
|
+
--[no-]interactive Force interactive mode
|
|
620
|
+
--json Format output as json.
|
|
621
|
+
--no-color Do not colorize output
|
|
622
|
+
--verbose Verbose output
|
|
623
|
+
|
|
624
|
+
DESCRIPTION
|
|
625
|
+
Validate a Quonfig workspace directory
|
|
626
|
+
|
|
627
|
+
EXAMPLES
|
|
628
|
+
$ qfg verify
|
|
629
|
+
|
|
630
|
+
$ qfg verify ./my-workspace
|
|
631
|
+
|
|
632
|
+
$ qfg verify --json
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
_See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/verify.ts)_
|
|
636
|
+
|
|
637
|
+
## `qfg whoami`
|
|
638
|
+
|
|
639
|
+
Display information about the currently logged in user
|
|
640
|
+
|
|
641
|
+
```
|
|
642
|
+
USAGE
|
|
643
|
+
$ qfg whoami [--json] [--interactive] [--no-color] [--verbose]
|
|
644
|
+
|
|
645
|
+
GLOBAL FLAGS
|
|
646
|
+
--[no-]interactive Force interactive mode
|
|
647
|
+
--json Format output as json.
|
|
648
|
+
--no-color Do not colorize output
|
|
649
|
+
--verbose Verbose output
|
|
650
|
+
|
|
651
|
+
DESCRIPTION
|
|
652
|
+
Display information about the currently logged in user
|
|
653
|
+
|
|
654
|
+
EXAMPLES
|
|
655
|
+
$ qfg whoami
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
_See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/whoami.ts)_
|
|
659
|
+
|
|
660
|
+
## `qfg workspace`
|
|
661
|
+
|
|
662
|
+
Display current workspace. To switch workspaces, run `qfg login --profile <name>`.
|
|
663
|
+
|
|
664
|
+
```
|
|
665
|
+
USAGE
|
|
666
|
+
$ qfg workspace [--json] [--interactive] [--no-color] [--verbose]
|
|
667
|
+
|
|
668
|
+
GLOBAL FLAGS
|
|
669
|
+
--[no-]interactive Force interactive mode
|
|
670
|
+
--json Format output as json.
|
|
671
|
+
--no-color Do not colorize output
|
|
672
|
+
--verbose Verbose output
|
|
673
|
+
|
|
674
|
+
DESCRIPTION
|
|
675
|
+
Display current workspace. To switch workspaces, run `qfg login --profile <name>`.
|
|
676
|
+
|
|
677
|
+
EXAMPLES
|
|
678
|
+
$ qfg workspace
|
|
679
|
+
```
|
|
680
|
+
|
|
681
|
+
_See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/workspace.ts)_
|
|
682
|
+
<!-- commandsstop -->
|
|
683
|
+
|
|
684
|
+
## Local Development
|
|
685
|
+
|
|
686
|
+
```
|
|
687
|
+
mise install
|
|
688
|
+
git submodule init
|
|
689
|
+
git submodule update
|
|
690
|
+
yarn install
|
|
691
|
+
yarn build
|
|
692
|
+
bin/dev.js
|
|
693
|
+
fish -c "cd ../../quonfig/cli;bin/dev.js"
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
## Releasing
|
|
697
|
+
|
|
698
|
+
```
|
|
699
|
+
yarn version
|
|
700
|
+
npm publish --access public
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
## Contributing
|
|
704
|
+
|
|
705
|
+
Contributions are what make the open source community such an amazing place to learn, inspire, and
|
|
706
|
+
create. Any contributions you make are **greatly appreciated**. For detailed contributing
|
|
707
|
+
guidelines, please see [CONTRIBUTING.md](CONTRIBUTING.md)
|
package/bin/dev.cmd
ADDED
package/bin/dev.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --loader ts-node/esm --no-warnings=ExperimentalWarning
|
|
2
|
+
|
|
3
|
+
// eslint-disable-next-line node/shebang
|
|
4
|
+
async function main() {
|
|
5
|
+
const {execute} = await import('@oclif/core')
|
|
6
|
+
await execute({development: true, dir: import.meta.url})
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
await main()
|