@seamapi/cli 0.9.0 → 0.11.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 +83 -6
- package/bin/cli.js +106 -31
- package/bin/cli.js.map +1 -1
- package/lib/get-response-key.d.ts +9 -0
- package/lib/get-response-key.js +21 -0
- package/lib/get-response-key.js.map +1 -0
- package/lib/interact-for-action-attempt-poll.js +4 -3
- package/lib/interact-for-action-attempt-poll.js.map +1 -1
- package/lib/interact-for-array.js +9 -7
- package/lib/interact-for-array.js.map +1 -1
- package/lib/interact-for-blueprint-object.js +21 -10
- package/lib/interact-for-blueprint-object.js.map +1 -1
- package/lib/interact-for-command-selection.js +17 -2
- package/lib/interact-for-command-selection.js.map +1 -1
- package/lib/interact-for-custom-metadata.js +10 -8
- package/lib/interact-for-custom-metadata.js.map +1 -1
- package/lib/interact-for-login.js +8 -6
- package/lib/interact-for-login.js.map +1 -1
- package/lib/interact-for-resource.js +2 -2
- package/lib/interact-for-resource.js.map +1 -1
- package/lib/interact-for-server-selection.js +7 -5
- package/lib/interact-for-server-selection.js.map +1 -1
- package/lib/interact-for-timestamp.js +2 -2
- package/lib/interact-for-timestamp.js.map +1 -1
- package/lib/interact-for-use-remote-api-defs.js +4 -3
- package/lib/interact-for-use-remote-api-defs.js.map +1 -1
- package/lib/interact-for-workspace-id.js +2 -2
- package/lib/interact-for-workspace-id.js.map +1 -1
- package/lib/output/create-memory-output.d.ts +13 -0
- package/lib/output/create-memory-output.js +22 -0
- package/lib/output/create-memory-output.js.map +1 -0
- package/lib/output/create-output.d.ts +50 -0
- package/lib/output/create-output.js +34 -0
- package/lib/output/create-output.js.map +1 -0
- package/lib/output/get-output.d.ts +12 -0
- package/lib/output/get-output.js +21 -0
- package/lib/output/get-output.js.map +1 -0
- package/lib/output/resolve-output-format.d.ts +16 -0
- package/lib/output/resolve-output-format.js +23 -0
- package/lib/output/resolve-output-format.js.map +1 -0
- package/lib/output/select-response-payload.d.ts +16 -0
- package/lib/output/select-response-payload.js +33 -0
- package/lib/output/select-response-payload.js.map +1 -0
- package/lib/types.d.ts +2 -1
- package/lib/util/cli-args.d.ts +45 -0
- package/lib/util/cli-args.js +58 -0
- package/lib/util/cli-args.js.map +1 -0
- package/lib/util/prompt.d.ts +17 -0
- package/lib/util/prompt.js +25 -0
- package/lib/util/prompt.js.map +1 -0
- package/lib/util/read-stdin-json.d.ts +22 -0
- package/lib/util/read-stdin-json.js +42 -0
- package/lib/util/read-stdin-json.js.map +1 -0
- package/lib/util/request-seam-api.d.ts +5 -2
- package/lib/util/request-seam-api.js +13 -15
- package/lib/util/request-seam-api.js.map +1 -1
- package/lib/util/with-loading.js +6 -1
- package/lib/util/with-loading.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +1 -1
- package/src/bin/cli.ts +139 -33
- package/src/lib/get-response-key.ts +25 -0
- package/src/lib/interact-for-action-attempt-poll.ts +4 -3
- package/src/lib/interact-for-array.ts +9 -7
- package/src/lib/interact-for-blueprint-object.ts +27 -10
- package/src/lib/interact-for-command-selection.ts +23 -3
- package/src/lib/interact-for-custom-metadata.ts +10 -8
- package/src/lib/interact-for-login.ts +8 -6
- package/src/lib/interact-for-resource.ts +2 -3
- package/src/lib/interact-for-server-selection.ts +7 -6
- package/src/lib/interact-for-timestamp.ts +2 -2
- package/src/lib/interact-for-use-remote-api-defs.ts +4 -4
- package/src/lib/interact-for-workspace-id.ts +2 -2
- package/src/lib/output/create-memory-output.ts +39 -0
- package/src/lib/output/create-output.ts +104 -0
- package/src/lib/output/get-output.ts +24 -0
- package/src/lib/output/resolve-output-format.ts +33 -0
- package/src/lib/output/select-response-payload.ts +56 -0
- package/src/lib/types.ts +2 -1
- package/src/lib/util/cli-args.ts +92 -0
- package/src/lib/util/prompt.ts +38 -0
- package/src/lib/util/read-stdin-json.ts +59 -0
- package/src/lib/util/request-seam-api.ts +24 -20
- package/src/lib/util/with-loading.ts +9 -1
- package/src/lib/version.ts +1 -1
package/README.md
CHANGED
|
@@ -9,9 +9,9 @@ A command line interface (CLI) for interacting with the Seam API.
|
|
|
9
9
|
|
|
10
10
|
## Description
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
Commands run as soon as every required parameter is given. Anything missing is
|
|
13
|
+
prompted for, with suggestions pulled from your workspace. Pass
|
|
14
|
+
`--non-interactive` (or `-y`) to never be prompted: the command fails instead.
|
|
15
15
|
|
|
16
16
|
## Installation
|
|
17
17
|
|
|
@@ -37,9 +37,19 @@ $ paru -S seam-bin
|
|
|
37
37
|
|
|
38
38
|
## Usage
|
|
39
39
|
|
|
40
|
-
Every `seam` command
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
Every `seam` command makes its request as soon as every required property is
|
|
41
|
+
given. When something is missing, the CLI prompts you for it with helpful
|
|
42
|
+
suggestions.
|
|
43
|
+
|
|
44
|
+
Pass `--interactive` (or `-i`) to always be prompted to review and edit
|
|
45
|
+
properties before the request is made. The prompt is prefilled with whatever
|
|
46
|
+
you passed as arguments, so this is the way to add optional properties, or to
|
|
47
|
+
check a request before making it.
|
|
48
|
+
|
|
49
|
+
For scripts and CI, pass `--non-interactive` (or `-y`) to never be prompted.
|
|
50
|
+
The command must then be complete: if the command itself is ambiguous, or any
|
|
51
|
+
required property is missing, the CLI exits with an error naming what is
|
|
52
|
+
missing instead of asking for it.
|
|
43
53
|
|
|
44
54
|
To take a project from zero to a working Seam integration, run the
|
|
45
55
|
[Seam Wizard] from the project's root:
|
|
@@ -66,6 +76,15 @@ seam connect-webviews create
|
|
|
66
76
|
# List devices in your workspace
|
|
67
77
|
seam devices list
|
|
68
78
|
|
|
79
|
+
# Review and edit filters before listing devices
|
|
80
|
+
seam devices list --interactive
|
|
81
|
+
|
|
82
|
+
# List devices, failing instead of prompting
|
|
83
|
+
seam devices list --non-interactive
|
|
84
|
+
|
|
85
|
+
# Fails with: Missing required parameter for /locks/unlock_door: --device-id
|
|
86
|
+
seam locks unlock-door --non-interactive
|
|
87
|
+
|
|
69
88
|
MY_DOOR=$(seam devices get --name "Front Door" --id-only)
|
|
70
89
|
|
|
71
90
|
# Unlock a lock
|
|
@@ -78,6 +97,64 @@ seam access-codes create --code "1234" --name "My Code"
|
|
|
78
97
|
seam access-codes list --device-id $MY_DOOR
|
|
79
98
|
```
|
|
80
99
|
|
|
100
|
+
### Output
|
|
101
|
+
|
|
102
|
+
Only the response is written to stdout, so any command may be piped or
|
|
103
|
+
redirected. Prompts, progress, and other information are written to stderr.
|
|
104
|
+
|
|
105
|
+
The response is trimmed to the response key and pagination: no other top level
|
|
106
|
+
fields are reported.
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# The response, and nothing else, ends up in the file
|
|
110
|
+
seam devices list > devices.json
|
|
111
|
+
|
|
112
|
+
# Prompts and progress still show up in the terminal
|
|
113
|
+
seam devices list | jq '.devices[].device_id'
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### JSON
|
|
117
|
+
|
|
118
|
+
Request params may be piped or redirected in as a JSON object. Params given as
|
|
119
|
+
arguments win over params read from stdin.
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# Read params from a file
|
|
123
|
+
seam locks unlock-door < params.json
|
|
124
|
+
|
|
125
|
+
# Or from another program
|
|
126
|
+
echo '{"device_id": "'"$MY_DOOR"'"}' | seam locks unlock-door
|
|
127
|
+
|
|
128
|
+
# --device-id wins over any device_id in params.json
|
|
129
|
+
seam devices list --limit 5 < params.json
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Pass `--json` to write the response as JSON. It is enabled automatically
|
|
133
|
+
whenever stdout is not a terminal, so piping and redirecting produce JSON
|
|
134
|
+
without passing anything. Pass `--no-json` to opt out and get the pretty
|
|
135
|
+
format instead.
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Both write JSON
|
|
139
|
+
seam devices list --json
|
|
140
|
+
seam devices list | jq
|
|
141
|
+
|
|
142
|
+
# Pretty printed, even though it is piped
|
|
143
|
+
seam devices list --no-json | less
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Without a terminal to prompt on, the CLI behaves as though
|
|
147
|
+
`--non-interactive` was given: rather than waiting for an answer nobody can
|
|
148
|
+
give, it exits with an error naming what is missing.
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
$ echo '{}' | seam locks unlock-door
|
|
152
|
+
Missing required parameter for /locks/unlock_door: --device-id
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
An error exits non-zero. A request that fails reports its `error` on stdout,
|
|
156
|
+
so it can be inspected from a pipe; anything else is written to stderr only.
|
|
157
|
+
|
|
81
158
|
## Development and Testing
|
|
82
159
|
|
|
83
160
|
### Quickstart
|
package/bin/cli.js
CHANGED
|
@@ -3,10 +3,9 @@ import { randomBytes } from 'node:crypto';
|
|
|
3
3
|
import { isDeepStrictEqual as isEqual } from 'node:util';
|
|
4
4
|
import chalk from 'chalk';
|
|
5
5
|
import commandLineUsage from 'command-line-usage';
|
|
6
|
-
import parseArgs, {} from 'minimist';
|
|
7
|
-
import prompts from 'prompts';
|
|
8
6
|
import { getConfigStore } from '../lib/config/index.js';
|
|
9
7
|
import { getApiBlueprint } from '../lib/get-api-blueprint.js';
|
|
8
|
+
import { getResponseKey } from '../lib/get-response-key.js';
|
|
10
9
|
import { getServer } from '../lib/get-server.js';
|
|
11
10
|
import { interactForActionAttemptPoll } from '../lib/interact-for-action-attempt-poll.js';
|
|
12
11
|
import { interactForCommandParams } from '../lib/interact-for-command-params.js';
|
|
@@ -15,13 +14,19 @@ import { interactForLogin } from '../lib/interact-for-login.js';
|
|
|
15
14
|
import { interactForServerSelection } from '../lib/interact-for-server-selection.js';
|
|
16
15
|
import { interactForUseRemoteApiDefs } from '../lib/interact-for-use-remote-api-defs.js';
|
|
17
16
|
import { interactForWorkspaceId } from '../lib/interact-for-workspace-id.js';
|
|
17
|
+
import { createOutput } from '../lib/output/create-output.js';
|
|
18
|
+
import { getOutput, setOutput } from '../lib/output/get-output.js';
|
|
19
|
+
import { resolveOutputFormat } from '../lib/output/resolve-output-format.js';
|
|
20
|
+
import { cliFlags, getInteractivity, NonInteractiveError, parseCliArgs, } from '../lib/util/cli-args.js';
|
|
21
|
+
import { canPrompt, prompt } from '../lib/util/prompt.js';
|
|
22
|
+
import { readStdinJson } from '../lib/util/read-stdin-json.js';
|
|
18
23
|
import { RequestSeamApi } from '../lib/util/request-seam-api.js';
|
|
19
24
|
import { validateToken } from '../lib/validate-token.js';
|
|
20
25
|
import seamapiCliVersion from '../lib/version.js';
|
|
21
26
|
const sections = [
|
|
22
27
|
{
|
|
23
28
|
header: 'Seam CLI',
|
|
24
|
-
content: 'Every seam command is
|
|
29
|
+
content: 'Every seam command runs as soon as every required property is given, and otherwise prompts you for what is missing with helpful suggestions. Pass -i to always review properties first, or -y to never be prompted. ',
|
|
25
30
|
},
|
|
26
31
|
{
|
|
27
32
|
header: 'Options',
|
|
@@ -32,6 +37,23 @@ const sections = [
|
|
|
32
37
|
alias: 'h',
|
|
33
38
|
type: Boolean,
|
|
34
39
|
},
|
|
40
|
+
{
|
|
41
|
+
name: 'interactive',
|
|
42
|
+
description: 'Always prompt to review and edit properties, prefilled with the given arguments.',
|
|
43
|
+
alias: 'i',
|
|
44
|
+
type: Boolean,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'non-interactive',
|
|
48
|
+
description: 'Never prompt: exit with an error if the command or any required property is missing.',
|
|
49
|
+
alias: 'y',
|
|
50
|
+
type: Boolean,
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'json',
|
|
54
|
+
description: 'Write the response to stdout as JSON. Enabled automatically when stdout is not a terminal, disable with {bold --no-json}.',
|
|
55
|
+
type: Boolean,
|
|
56
|
+
},
|
|
35
57
|
{
|
|
36
58
|
name: 'update',
|
|
37
59
|
description: 'Force an update of the cached Seam API definitions.',
|
|
@@ -39,6 +61,14 @@ const sections = [
|
|
|
39
61
|
},
|
|
40
62
|
],
|
|
41
63
|
},
|
|
64
|
+
{
|
|
65
|
+
header: 'Output',
|
|
66
|
+
content: [
|
|
67
|
+
'Only the response is written to stdout, so it is safe to pipe. Prompts, progress, and other information are written to stderr.',
|
|
68
|
+
'The response is trimmed to the response key and pagination.',
|
|
69
|
+
'Request params may be piped or redirected in as a JSON object. Params given as arguments win over params read from stdin.',
|
|
70
|
+
],
|
|
71
|
+
},
|
|
42
72
|
{
|
|
43
73
|
header: 'Command List Examples',
|
|
44
74
|
content: [
|
|
@@ -54,6 +84,14 @@ const sections = [
|
|
|
54
84
|
summary: 'Create a connect webview to connect devices.',
|
|
55
85
|
},
|
|
56
86
|
{ name: 'seam devices list', summary: 'List devices in your workspace.' },
|
|
87
|
+
{
|
|
88
|
+
name: 'seam devices list {bold --interactive}',
|
|
89
|
+
summary: 'Review and edit filters before listing devices.',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: 'seam devices list {bold --non-interactive}',
|
|
93
|
+
summary: 'List devices, failing instead of prompting.',
|
|
94
|
+
},
|
|
57
95
|
{
|
|
58
96
|
name: 'seam locks unlock-door {bold --device-id} $MY_DOOR',
|
|
59
97
|
summary: 'Unlock a lock.',
|
|
@@ -66,19 +104,27 @@ const sections = [
|
|
|
66
104
|
name: 'seam access-codes list {bold --device-id} $MY_DOOR',
|
|
67
105
|
summary: 'List you access codes.',
|
|
68
106
|
},
|
|
107
|
+
{
|
|
108
|
+
name: 'seam devices list > devices.json',
|
|
109
|
+
summary: 'Write the response to a file as JSON.',
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
name: 'cat params.json | seam locks unlock-door',
|
|
113
|
+
summary: 'Pipe request params in as JSON.',
|
|
114
|
+
},
|
|
69
115
|
],
|
|
70
116
|
},
|
|
71
117
|
];
|
|
72
118
|
async function cli(args) {
|
|
73
119
|
const config = getConfigStore();
|
|
120
|
+
const output = getOutput();
|
|
74
121
|
if (args['help'] || args['h']) {
|
|
75
|
-
|
|
76
|
-
console.log(usage);
|
|
122
|
+
output.text(commandLineUsage(sections));
|
|
77
123
|
return;
|
|
78
124
|
}
|
|
79
125
|
if (args['version']) {
|
|
80
|
-
|
|
81
|
-
|
|
126
|
+
output.text(seamapiCliVersion);
|
|
127
|
+
return;
|
|
82
128
|
}
|
|
83
129
|
if (args._[0] === 'config' &&
|
|
84
130
|
args._[1] === 'set' &&
|
|
@@ -86,16 +132,17 @@ async function cli(args) {
|
|
|
86
132
|
const randomstring = randomBytes(5).toString('hex');
|
|
87
133
|
const fakeApiUrl = `https://${randomstring}.fakeseamconnect.seam.vc`;
|
|
88
134
|
config.set('server', fakeApiUrl);
|
|
89
|
-
|
|
135
|
+
output.info(`Server URL set to ${fakeApiUrl}`);
|
|
90
136
|
config.set(`${getServer()}.pat`, `seam_apikey1_token`);
|
|
91
|
-
|
|
137
|
+
output.info(`PAT set to use fakeseamconnect with "seam_apikey1_token"`);
|
|
92
138
|
return;
|
|
93
139
|
}
|
|
94
140
|
if (!config.get(`${getServer()}.pat`) &&
|
|
95
141
|
args._[0] !== 'login' &&
|
|
96
142
|
!isEqual(args._, ['select', 'server'])) {
|
|
97
|
-
|
|
98
|
-
process.
|
|
143
|
+
output.error(`Not logged in. Please run "seam login"`);
|
|
144
|
+
process.exitCode = 1;
|
|
145
|
+
return;
|
|
99
146
|
}
|
|
100
147
|
args._ = args._.map((arg) => arg.toLowerCase().replace(/_/g, '-'));
|
|
101
148
|
for (const k in args) {
|
|
@@ -107,22 +154,24 @@ async function cli(args) {
|
|
|
107
154
|
const blueprint = await getApiBlueprint(use_remote_api_defs ?? false, {
|
|
108
155
|
update,
|
|
109
156
|
});
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
*/
|
|
114
|
-
const is_interactive = args['y'] !== true;
|
|
157
|
+
// Params piped or redirected in, e.g., `seam devices list < params.json`.
|
|
158
|
+
// Params given as arguments take precedence over these.
|
|
159
|
+
const commandParams = { ...(await readStdinJson()) };
|
|
115
160
|
const ctx = {
|
|
116
161
|
blueprint,
|
|
117
|
-
|
|
162
|
+
interactivity: getInteractivity(args, { canPrompt: canPrompt() }),
|
|
118
163
|
};
|
|
164
|
+
const isNonInteractive = ctx.interactivity === 'non-interactive';
|
|
119
165
|
for (const k in args) {
|
|
120
166
|
if (k === '_')
|
|
121
167
|
continue;
|
|
122
168
|
const v = args[k];
|
|
123
169
|
delete args[k];
|
|
124
|
-
|
|
125
|
-
|
|
170
|
+
const key = k.replace(/-/g, '_');
|
|
171
|
+
args[key] = v;
|
|
172
|
+
if (cliFlags.includes(key))
|
|
173
|
+
continue;
|
|
174
|
+
commandParams[key] = v;
|
|
126
175
|
}
|
|
127
176
|
const selectedCommand = await interactForCommandSelection(args._, ctx);
|
|
128
177
|
if (isEqual(selectedCommand, ['login'])) {
|
|
@@ -142,23 +191,32 @@ async function cli(args) {
|
|
|
142
191
|
if (args['token'] || args['workspace_id'] || args['server']) {
|
|
143
192
|
return;
|
|
144
193
|
}
|
|
194
|
+
if (isNonInteractive) {
|
|
195
|
+
throw new NonInteractiveError('Missing required parameter for login: --token');
|
|
196
|
+
}
|
|
145
197
|
await interactForLogin();
|
|
146
198
|
return;
|
|
147
199
|
}
|
|
148
200
|
else if (isEqual(selectedCommand, ['logout'])) {
|
|
149
201
|
config.delete('pat');
|
|
150
|
-
|
|
202
|
+
output.info('Logged out!');
|
|
151
203
|
return;
|
|
152
204
|
}
|
|
153
205
|
else if (isEqual(selectedCommand, ['config', 'reveal-location'])) {
|
|
154
|
-
|
|
206
|
+
output.text(config.path);
|
|
155
207
|
return;
|
|
156
208
|
}
|
|
157
209
|
else if (isEqual(selectedCommand, ['config', 'use-remote-api-defs'])) {
|
|
210
|
+
if (isNonInteractive) {
|
|
211
|
+
throw new NonInteractiveError('Cannot select whether to use remote API definitions in non-interactive mode');
|
|
212
|
+
}
|
|
158
213
|
await interactForUseRemoteApiDefs();
|
|
159
214
|
return;
|
|
160
215
|
}
|
|
161
216
|
else if (isEqual(selectedCommand, ['select', 'workspace'])) {
|
|
217
|
+
if (isNonInteractive) {
|
|
218
|
+
throw new NonInteractiveError('Cannot select a workspace in non-interactive mode: pass --workspace-id to "seam login"');
|
|
219
|
+
}
|
|
162
220
|
await interactForWorkspaceId();
|
|
163
221
|
return;
|
|
164
222
|
}
|
|
@@ -175,6 +233,9 @@ async function cli(args) {
|
|
|
175
233
|
config.delete('current_workspace_id');
|
|
176
234
|
return;
|
|
177
235
|
}
|
|
236
|
+
if (isNonInteractive) {
|
|
237
|
+
throw new NonInteractiveError('Missing required parameter for select server: --server');
|
|
238
|
+
}
|
|
178
239
|
await interactForServerSelection();
|
|
179
240
|
return;
|
|
180
241
|
}
|
|
@@ -215,18 +276,20 @@ async function cli(args) {
|
|
|
215
276
|
const response = await RequestSeamApi({
|
|
216
277
|
path: apiPath,
|
|
217
278
|
params,
|
|
279
|
+
responseKey: getResponseKey(selectedCommand, ctx),
|
|
218
280
|
});
|
|
219
281
|
if (response.data?.connect_webview) {
|
|
220
|
-
await handleConnectWebviewResponse(response.data.connect_webview);
|
|
282
|
+
await handleConnectWebviewResponse(response.data.connect_webview, ctx.interactivity);
|
|
221
283
|
}
|
|
222
|
-
if (response.data?.action_attempt) {
|
|
223
|
-
interactForActionAttemptPoll(response.data.action_attempt);
|
|
284
|
+
if (response.data?.action_attempt && !isNonInteractive) {
|
|
285
|
+
await interactForActionAttemptPoll(response.data.action_attempt);
|
|
224
286
|
}
|
|
225
287
|
}
|
|
226
|
-
const handleConnectWebviewResponse = async (connect_webview) => {
|
|
288
|
+
const handleConnectWebviewResponse = async (connect_webview, interactivity) => {
|
|
227
289
|
const url = connect_webview.url;
|
|
228
|
-
if (
|
|
229
|
-
|
|
290
|
+
if (interactivity !== 'non-interactive' &&
|
|
291
|
+
process.env['INSIDE_WEB_BROWSER'] !== '1') {
|
|
292
|
+
const { action } = await prompt({
|
|
230
293
|
type: 'confirm',
|
|
231
294
|
name: 'action',
|
|
232
295
|
message: 'Would you like to open the webview in your browser?',
|
|
@@ -246,12 +309,24 @@ const run = async (argv) => {
|
|
|
246
309
|
});
|
|
247
310
|
return;
|
|
248
311
|
}
|
|
249
|
-
|
|
312
|
+
const args = parseCliArgs(argv);
|
|
313
|
+
const isTty = process.stdout.isTTY === true;
|
|
314
|
+
setOutput(createOutput({
|
|
315
|
+
format: resolveOutputFormat(argv, { isTty }),
|
|
316
|
+
colors: isTty,
|
|
317
|
+
}));
|
|
318
|
+
await cli(args);
|
|
250
319
|
};
|
|
251
320
|
run(process.argv.slice(2)).catch((e) => {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
321
|
+
const output = getOutput();
|
|
322
|
+
process.exitCode = 1;
|
|
323
|
+
if (e instanceof NonInteractiveError) {
|
|
324
|
+
output.error(chalk.red(e.message));
|
|
325
|
+
return;
|
|
255
326
|
}
|
|
327
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
328
|
+
output.error(chalk.red(`CLI Error: ${error.message}`));
|
|
329
|
+
if (error.stack != null)
|
|
330
|
+
output.error(chalk.gray(error.stack));
|
|
256
331
|
});
|
|
257
332
|
//# sourceMappingURL=cli.js.map
|
package/bin/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/bin/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/bin/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ContextHelpers } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The top level response key documented for a command,
|
|
4
|
+
* e.g., `devices` for `seam devices list`.
|
|
5
|
+
*
|
|
6
|
+
* Returns null when the command is not in the blueprint,
|
|
7
|
+
* or when it does not respond with a resource.
|
|
8
|
+
*/
|
|
9
|
+
export declare const getResponseKey: (command: string[], ctx: ContextHelpers) => string | null;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { getCommandBlueprintDef } from './get-command-blueprint-def.js';
|
|
2
|
+
/**
|
|
3
|
+
* The top level response key documented for a command,
|
|
4
|
+
* e.g., `devices` for `seam devices list`.
|
|
5
|
+
*
|
|
6
|
+
* Returns null when the command is not in the blueprint,
|
|
7
|
+
* or when it does not respond with a resource.
|
|
8
|
+
*/
|
|
9
|
+
export const getResponseKey = (command, ctx) => {
|
|
10
|
+
let endpoint;
|
|
11
|
+
try {
|
|
12
|
+
endpoint = getCommandBlueprintDef(command, ctx);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
if (endpoint.response.responseType === 'void')
|
|
18
|
+
return null;
|
|
19
|
+
return endpoint.response.responseKey;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=get-response-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-response-key.js","sourceRoot":"","sources":["../src/lib/get-response-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AAGvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAAiB,EACjB,GAAmB,EACJ,EAAE;IACjB,IAAI,QAAQ,CAAA;IACZ,IAAI,CAAC;QACH,QAAQ,GAAG,sBAAsB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IAE1D,OAAO,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAA;AACtC,CAAC,CAAA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import prompts from 'prompts';
|
|
2
1
|
import { getSeam } from './get-seam.js';
|
|
2
|
+
import { getOutput } from './output/get-output.js';
|
|
3
|
+
import { prompt } from './util/prompt.js';
|
|
3
4
|
import { withLoading } from './util/with-loading.js';
|
|
4
5
|
export const interactForActionAttemptPoll = async (action_attempt) => {
|
|
5
6
|
if (action_attempt.status === 'pending') {
|
|
6
|
-
const { poll_for_action_attempt } = await
|
|
7
|
+
const { poll_for_action_attempt } = await prompt({
|
|
7
8
|
name: 'poll_for_action_attempt',
|
|
8
9
|
message: "Would you like to poll the action attempt until it's ready?",
|
|
9
10
|
type: 'toggle',
|
|
@@ -15,7 +16,7 @@ export const interactForActionAttemptPoll = async (action_attempt) => {
|
|
|
15
16
|
const seam = await getSeam();
|
|
16
17
|
const { action_attempt_id } = action_attempt;
|
|
17
18
|
const updated_action_attempt = await withLoading('Polling action attempt...', () => seam.actionAttempts.get({ action_attempt_id }, { waitForActionAttempt: { pollingInterval: 240, timeout: 10_000 } }));
|
|
18
|
-
|
|
19
|
+
getOutput().data({ action_attempt: updated_action_attempt });
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interact-for-action-attempt-poll.js","sourceRoot":"","sources":["../src/lib/interact-for-action-attempt-poll.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interact-for-action-attempt-poll.js","sourceRoot":"","sources":["../src/lib/interact-for-action-attempt-poll.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAC/C,cAA2D,EAC3D,EAAE;IACF,IAAI,cAAc,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC;YAC/C,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,6DAA6D;YACtE,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;QAEF,IAAI,uBAAuB,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAA;YAC5B,MAAM,EAAE,iBAAiB,EAAE,GAAG,cAAc,CAAA;YAE5C,MAAM,sBAAsB,GAAG,MAAM,WAAW,CAC9C,2BAA2B,EAC3B,GAAG,EAAE,CACH,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,EAAE,iBAAiB,EAAE,EACrB,EAAE,oBAAoB,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CACpE,CACJ,CAAA;YACD,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,sBAAsB,EAAE,CAAC,CAAA;QAC9D,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { getOutput } from './output/get-output.js';
|
|
2
|
+
import { prompt } from './util/prompt.js';
|
|
2
3
|
export const interactForArray = async (array, message) => {
|
|
3
4
|
const updatedArray = [...array];
|
|
5
|
+
const output = getOutput();
|
|
4
6
|
const displayList = () => {
|
|
5
|
-
|
|
7
|
+
output.info(`${message} Current list:`);
|
|
6
8
|
if (updatedArray.length > 0) {
|
|
7
9
|
updatedArray.forEach((item, index) => {
|
|
8
|
-
|
|
10
|
+
output.info(`${index + 1}: ${item}`);
|
|
9
11
|
});
|
|
10
12
|
}
|
|
11
13
|
else {
|
|
12
|
-
|
|
14
|
+
output.info('The list is currently empty.');
|
|
13
15
|
}
|
|
14
16
|
};
|
|
15
17
|
let action;
|
|
16
18
|
do {
|
|
17
19
|
displayList();
|
|
18
|
-
const response = await
|
|
20
|
+
const response = await prompt({
|
|
19
21
|
type: 'select',
|
|
20
22
|
name: 'action',
|
|
21
23
|
message: 'Choose an action:',
|
|
@@ -27,7 +29,7 @@ export const interactForArray = async (array, message) => {
|
|
|
27
29
|
});
|
|
28
30
|
action = response.action;
|
|
29
31
|
if (action === 'add') {
|
|
30
|
-
const { newItem } = await
|
|
32
|
+
const { newItem } = await prompt({
|
|
31
33
|
type: 'text',
|
|
32
34
|
name: 'newItem',
|
|
33
35
|
message: 'Enter the new item:',
|
|
@@ -37,7 +39,7 @@ export const interactForArray = async (array, message) => {
|
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
41
|
else if (action === 'remove') {
|
|
40
|
-
const { index } = await
|
|
42
|
+
const { index } = await prompt({
|
|
41
43
|
type: 'number',
|
|
42
44
|
name: 'index',
|
|
43
45
|
message: 'Enter the index of the item to remove:',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interact-for-array.js","sourceRoot":"","sources":["../src/lib/interact-for-array.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"interact-for-array.js","sourceRoot":"","sources":["../src/lib/interact-for-array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,KAAe,EACf,OAAe,EACI,EAAE;IACrB,MAAM,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;IAC/B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,gBAAgB,CAAC,CAAA;QACvC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACnC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;YACtC,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC,CAAA;IAED,IAAI,MAAc,CAAA;IAClB,GAAG,CAAC;QACF,WAAW,EAAE,CAAA;QAEb,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;YAC5B,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,mBAAmB;YAC5B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE;gBACtC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAC5C,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE;aAC3C;SACF,CAAC,CAAA;QAEF,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;QAExB,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC;gBAC/B,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,qBAAqB;aAC/B,CAAC,CAAA;YACF,IAAI,OAAO,EAAE,CAAC;gBACZ,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC;gBAC7B,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,wCAAwC;gBACjD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe;aACrE,CAAC,CAAA;YACF,IAAI,KAAK,EAAE,CAAC;gBACV,YAAY,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;IACH,CAAC,QAAQ,MAAM,KAAK,MAAM,EAAC;IAE3B,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import prompts from 'prompts';
|
|
2
1
|
import { interactForAccessCode } from './interact-for-access-code.js';
|
|
3
2
|
import { interactForAcsEntrance } from './interact-for-acs-entrance.js';
|
|
4
3
|
import { interactForAcsSystem } from './interact-for-acs-system.js';
|
|
@@ -9,7 +8,10 @@ import { interactForCustomMetadata } from './interact-for-custom-metadata.js';
|
|
|
9
8
|
import { interactForDevice } from './interact-for-device.js';
|
|
10
9
|
import { interactForTimestamp } from './interact-for-timestamp.js';
|
|
11
10
|
import { interactForUserIdentity } from './interact-for-user-identity.js';
|
|
11
|
+
import { getOutput } from './output/get-output.js';
|
|
12
|
+
import { NonInteractiveError, toArgName } from './util/cli-args.js';
|
|
12
13
|
import { ellipsis } from './util/ellipsis.js';
|
|
14
|
+
import { prompt } from './util/prompt.js';
|
|
13
15
|
const ergonomicPropOrder = [
|
|
14
16
|
'name',
|
|
15
17
|
'connected_account_id',
|
|
@@ -28,10 +30,20 @@ export const interactForBlueprintObject = async (args, ctx) => {
|
|
|
28
30
|
.filter((parameter) => parameter.isRequired)
|
|
29
31
|
.map((parameter) => parameter.name);
|
|
30
32
|
const haveAllRequiredParams = required.every((k) => args.params[k]);
|
|
31
|
-
const
|
|
33
|
+
const cmdPath = `/${args.command.join('/').replace(/-/g, '_')}`;
|
|
34
|
+
const should_auto_submit = ctx.interactivity !== 'interactive' &&
|
|
35
|
+
haveAllRequiredParams &&
|
|
36
|
+
!args.isSubProperty;
|
|
32
37
|
if (should_auto_submit) {
|
|
33
38
|
return args.params;
|
|
34
39
|
}
|
|
40
|
+
if (ctx.interactivity === 'non-interactive') {
|
|
41
|
+
const missing = required.filter((k) => !args.params[k]);
|
|
42
|
+
const target = args.isSubProperty ? `"${args.subPropertyPath}"` : cmdPath;
|
|
43
|
+
throw new NonInteractiveError(missing.length > 0
|
|
44
|
+
? `Missing required ${missing.length === 1 ? 'parameter' : 'parameters'} for ${target}: ${missing.map(toArgName).join(' ')}`
|
|
45
|
+
: `Cannot prompt for ${target} in non-interactive mode`);
|
|
46
|
+
}
|
|
35
47
|
const propSortScore = (prop) => {
|
|
36
48
|
if (required.includes(prop))
|
|
37
49
|
return 100 - ergonomicPropOrder.indexOf(prop);
|
|
@@ -40,12 +52,11 @@ export const interactForBlueprintObject = async (args, ctx) => {
|
|
|
40
52
|
}
|
|
41
53
|
return ergonomicPropOrder.indexOf(prop);
|
|
42
54
|
};
|
|
43
|
-
const cmdPath = `/${args.command.join('/').replace(/-/g, '_')}`;
|
|
44
55
|
const parameterSelectionMessage = args.isSubProperty
|
|
45
56
|
? `Editing "${args.subPropertyPath}"`
|
|
46
57
|
: `[${cmdPath}] Parameters`;
|
|
47
|
-
|
|
48
|
-
const { paramToEdit } = await
|
|
58
|
+
getOutput().info();
|
|
59
|
+
const { paramToEdit } = await prompt({
|
|
49
60
|
name: 'paramToEdit',
|
|
50
61
|
message: parameterSelectionMessage,
|
|
51
62
|
type: 'autocomplete',
|
|
@@ -159,7 +170,7 @@ export const interactForBlueprintObject = async (args, ctx) => {
|
|
|
159
170
|
value = await interactForTimestamp();
|
|
160
171
|
}
|
|
161
172
|
else {
|
|
162
|
-
value = (await
|
|
173
|
+
value = (await prompt({
|
|
163
174
|
name: 'value',
|
|
164
175
|
message: `${paramToEdit}:`,
|
|
165
176
|
type: 'text',
|
|
@@ -169,7 +180,7 @@ export const interactForBlueprintObject = async (args, ctx) => {
|
|
|
169
180
|
return interactForBlueprintObject(args, ctx);
|
|
170
181
|
}
|
|
171
182
|
else if (prop.format === 'enum') {
|
|
172
|
-
const value = (await
|
|
183
|
+
const value = (await prompt({
|
|
173
184
|
name: 'value',
|
|
174
185
|
message: `${paramToEdit}:`,
|
|
175
186
|
type: 'select',
|
|
@@ -182,7 +193,7 @@ export const interactForBlueprintObject = async (args, ctx) => {
|
|
|
182
193
|
return interactForBlueprintObject(args, ctx);
|
|
183
194
|
}
|
|
184
195
|
else if (prop.format === 'boolean') {
|
|
185
|
-
const { value } = await
|
|
196
|
+
const { value } = await prompt({
|
|
186
197
|
name: 'value',
|
|
187
198
|
message: `${paramToEdit}:`,
|
|
188
199
|
type: 'toggle',
|
|
@@ -194,7 +205,7 @@ export const interactForBlueprintObject = async (args, ctx) => {
|
|
|
194
205
|
return interactForBlueprintObject(args, ctx);
|
|
195
206
|
}
|
|
196
207
|
else if (prop.format === 'list' && prop.itemFormat === 'enum') {
|
|
197
|
-
const value = (await
|
|
208
|
+
const value = (await prompt({
|
|
198
209
|
name: 'value',
|
|
199
210
|
message: `${paramToEdit}:`,
|
|
200
211
|
type: 'autocompleteMultiselect',
|
|
@@ -221,7 +232,7 @@ export const interactForBlueprintObject = async (args, ctx) => {
|
|
|
221
232
|
return interactForBlueprintObject(args, ctx);
|
|
222
233
|
}
|
|
223
234
|
else if (prop.format === 'number') {
|
|
224
|
-
const { value } = await
|
|
235
|
+
const { value } = await prompt({
|
|
225
236
|
name: 'value',
|
|
226
237
|
message: `${paramToEdit}:`,
|
|
227
238
|
type: 'number',
|