@canner-ca/cli 0.4.0 → 0.4.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.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/src/cli.mjs +19 -5
package/README.md CHANGED
@@ -68,7 +68,7 @@ canner deploy --follow
68
68
  | `canner token list` | List your `cnr_` API tokens. |
69
69
  | `canner token create <name>` | Mint a new token. The secret is printed once — copy it immediately. |
70
70
  | `canner token revoke <id\|name>` | Revoke a token. |
71
- | `canner env [list] [--slug X]` | List a project's environment variables. |
71
+ | `canner env [list] [--reveal] [--slug X]` | List a project's environment variables. Values marked sensitive are redacted (`••••••`, or `null` in `--json`) unless `--reveal` is passed. |
72
72
  | `canner env set KEY=VALUE [--env production\|preview] [--sensitive] [--slug X]` | Add an environment variable. |
73
73
  | `canner env rm <KEY\|id> [--env ...] [--slug X]` | Delete an environment variable. |
74
74
  | `canner domains [list] [--slug X]` | List a project's custom domains. |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canner-ca/cli",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "Canner deploy CLI — git push from any terminal, no GitHub required",
5
5
  "type": "module",
6
6
  "bin": {
package/src/cli.mjs CHANGED
@@ -678,7 +678,8 @@ async function resolveTokenId(creds, ref) {
678
678
  }
679
679
 
680
680
  // ---------------------------------------------------------------------------
681
- // canner env [--slug X] — list env vars
681
+ // canner env [--reveal] [--slug X] — list env vars
682
+ // (sensitive values redacted by default, in text AND --json; --reveal opts out)
682
683
  // canner env set KEY=VALUE [--env production|preview] [--sensitive] [--slug X]
683
684
  // canner env rm <KEY|id> [--env ...] [--slug X] — delete an env var
684
685
  // ---------------------------------------------------------------------------
@@ -692,11 +693,21 @@ async function cmdEnv(args) {
692
693
  if (sub === 'list') {
693
694
  const body = await apiJSON(creds, 'GET', base);
694
695
  const rows = body?.env_vars ?? [];
695
- if (JSON_MODE) return emitJSON(rows);
696
+ // Sensitive values are redacted by default in BOTH output modes — the API
697
+ // returns them decrypted (the owner can read their own secrets back), but
698
+ // a plain `env list` (human or --json) is a read-only config check, not a
699
+ // secret-reveal action. --reveal is the explicit opt-in for scripts that
700
+ // actually need the value (e.g. syncing it elsewhere).
701
+ const reveal = args.reveal === true;
702
+ if (JSON_MODE) {
703
+ return emitJSON(
704
+ reveal ? rows : rows.map((v) => (v.is_sensitive ? { ...v, value: null } : v))
705
+ );
706
+ }
696
707
  if (rows.length === 0) { muted('no environment variables.'); return; }
697
708
  info(`${pad(bold('KEY'), 28)}${pad(bold('ENV'), 14)}${pad(bold('SENSITIVE'), 12)}${bold('VALUE')}`);
698
709
  for (const v of rows) {
699
- const val = v.is_sensitive ? dim('••••••') : (v.value ?? '').split('\n')[0].slice(0, 48);
710
+ const val = v.is_sensitive && !reveal ? dim('••••••') : (v.value ?? '').split('\n')[0].slice(0, 48);
700
711
  info(`${pad(v.key, 28)}${pad(dim(v.environment ?? 'all'), 14)}${pad(v.is_sensitive ? yellow('yes') : dim('no'), 12)}${dim(val)}`);
701
712
  }
702
713
  return;
@@ -1157,10 +1168,12 @@ ${bold('Deploys:')}
1157
1168
  ${bold('Resources:')}
1158
1169
  ${bold('token')} list | create <name> | revoke <id|name>
1159
1170
  Manage the cnr_ API tokens that authenticate this CLI.
1160
- ${bold('env')} [list] [--slug X]
1171
+ ${bold('env')} [list] [--reveal] [--slug X]
1161
1172
  ${bold('env')} set KEY=VALUE [--env production|preview] [--sensitive] [--slug X]
1162
1173
  ${bold('env')} rm <KEY|id> [--env ...] [--slug X]
1163
- Manage a project's environment variables.
1174
+ Manage a project's environment variables. Sensitive
1175
+ values are redacted as •••••• (or null in --json) on
1176
+ list; pass --reveal to see them in cleartext.
1164
1177
  ${bold('domains')} [list] [--slug X]
1165
1178
  ${bold('domains')} add <hostname> [--slug X]
1166
1179
  ${bold('domains')} verify <hostname|id> [--slug X]
@@ -1184,6 +1197,7 @@ ${bold('Examples:')}
1184
1197
  canner open --dashboard ${dim('# open dashboard project page')}
1185
1198
  canner token create ci ${dim('# mint a token named "ci"')}
1186
1199
  canner env set API_KEY=secret --sensitive ${dim('# add a hidden env var')}
1200
+ canner env list --reveal ${dim('# show sensitive values in cleartext')}
1187
1201
  canner domains add www.example.com ${dim('# attach a custom domain')}
1188
1202
  canner projects --json | jq '.[].slug' ${dim('# machine-readable output')}
1189
1203