@seamapi/cli 0.18.0 → 0.18.2
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 +55 -1
- package/lib/interact-for-array.js +37 -22
- package/lib/interact-for-array.js.map +1 -1
- package/lib/interact-for-blueprint-object.js +164 -146
- package/lib/interact-for-blueprint-object.js.map +1 -1
- package/lib/interact-for-command-selection.js +25 -10
- package/lib/interact-for-command-selection.js.map +1 -1
- package/lib/interact-for-custom-metadata.js +50 -35
- package/lib/interact-for-custom-metadata.js.map +1 -1
- package/lib/interact-for-resource.js +4 -2
- package/lib/interact-for-resource.js.map +1 -1
- package/lib/interact-for-timestamp.js +2 -2
- package/lib/interact-for-timestamp.js.map +1 -1
- package/lib/util/prompt.d.ts +9 -0
- package/lib/util/prompt.js +10 -0
- package/lib/util/prompt.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +1 -1
- package/src/lib/interact-for-array.ts +41 -24
- package/src/lib/interact-for-blueprint-object.ts +173 -155
- package/src/lib/interact-for-command-selection.ts +29 -11
- package/src/lib/interact-for-custom-metadata.ts +58 -36
- package/src/lib/interact-for-resource.ts +4 -2
- package/src/lib/interact-for-timestamp.ts +2 -2
- package/src/lib/util/prompt.ts +12 -0
- package/src/lib/version.ts +1 -1
package/README.md
CHANGED
|
@@ -22,7 +22,9 @@ $ npm install --global @seamapi/cli
|
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
Alternatively, download a standalone binary for your platform from the
|
|
25
|
-
[latest GitHub release].
|
|
25
|
+
[latest GitHub release]. The macOS binaries are signed with the Seam Labs, Inc.
|
|
26
|
+
Apple Developer ID and notarized by Apple, so macOS runs them without
|
|
27
|
+
a Gatekeeper prompt.
|
|
26
28
|
|
|
27
29
|
On Arch Linux, install the [`seam-bin`][aur] package from the AUR with
|
|
28
30
|
|
|
@@ -396,6 +398,58 @@ The following repository secrets must be set on [GitHub Actions]:
|
|
|
396
398
|
[GitHub Actions]: https://github.com/features/actions
|
|
397
399
|
[GPG private key]: https://github.com/marketplace/actions/import-gpg#prerequisites
|
|
398
400
|
|
|
401
|
+
### Signing the macOS binaries
|
|
402
|
+
|
|
403
|
+
The standalone macOS binaries are code signed and notarized while they are
|
|
404
|
+
built, so that Gatekeeper lets them run on machines other than the one that
|
|
405
|
+
built them. Both need an [Apple Developer Program] membership.
|
|
406
|
+
|
|
407
|
+
Anything that releases signs, and fails rather than publish a binary that
|
|
408
|
+
macOS refuses to run. A check builds the macOS binaries with `sign: false`
|
|
409
|
+
instead: a pull request from a fork cannot read the credentials, and nothing a
|
|
410
|
+
check builds is ever released. There is no ad-hoc signature fallback, since
|
|
411
|
+
Gatekeeper rejects one anywhere but the machine that made it.
|
|
412
|
+
|
|
413
|
+
Set these repository secrets to code sign:
|
|
414
|
+
|
|
415
|
+
- `APPLE_CERTIFICATE`: A base64 encoded PKCS#12 (`.p12`) bundle holding a
|
|
416
|
+
[Developer ID Application] certificate, its private key, and its certificate
|
|
417
|
+
chain. Export it from Keychain Access, then encode it with
|
|
418
|
+
`base64 --input certificate.p12 | pbcopy`.
|
|
419
|
+
- `APPLE_CERTIFICATE_PASSWORD`: The password set while exporting the bundle.
|
|
420
|
+
- `APPLE_SIGNING_IDENTITY`: Normally left unset. The build signs with the one
|
|
421
|
+
Developer ID Application identity in the bundle, so this is only needed to
|
|
422
|
+
choose between several, e.g.,
|
|
423
|
+
`Developer ID Application: Seam Labs, Inc. (XXXXXXXXXX)`.
|
|
424
|
+
|
|
425
|
+
And these to notarize, from an [App Store Connect API key]:
|
|
426
|
+
|
|
427
|
+
- `APPLE_API_KEY`: The base64 encoded API private key (`.p8`).
|
|
428
|
+
- `APPLE_API_KEY_ID`: The API key id.
|
|
429
|
+
- `APPLE_API_ISSUER_ID`: The API key issuer id.
|
|
430
|
+
|
|
431
|
+
Notarization tickets cannot be stapled to a bare executable, so Gatekeeper
|
|
432
|
+
looks them up online the first time a downloaded binary runs.
|
|
433
|
+
|
|
434
|
+
Check the credentials without cutting a release by triggering
|
|
435
|
+
[a build workflow_dispatch on GitHub Actions], on the web or with
|
|
436
|
+
|
|
437
|
+
```
|
|
438
|
+
$ gh workflow run build.yml --ref <branch>
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
GitHub only offers a workflow_dispatch for a workflow already on the default
|
|
442
|
+
branch, so the build workflow must be merged first. It then runs against any
|
|
443
|
+
branch.
|
|
444
|
+
|
|
445
|
+
Then confirm the run's macOS binaries job signed and notarized: it verifies the
|
|
446
|
+
signature, assesses the binary the way Gatekeeper does, and runs it.
|
|
447
|
+
|
|
448
|
+
[App Store Connect API key]: https://developer.apple.com/documentation/appstoreconnectapi/creating-api-keys-for-app-store-connect-api
|
|
449
|
+
[Apple Developer Program]: https://developer.apple.com/programs/
|
|
450
|
+
[Developer ID Application]: https://developer.apple.com/help/account/reference/certificate-types/
|
|
451
|
+
[a build workflow_dispatch on GitHub Actions]: https://github.com/seamapi/cli/actions?query=workflow%3A_build
|
|
452
|
+
|
|
399
453
|
## Contributing
|
|
400
454
|
|
|
401
455
|
> If using squash merge, edit and ensure the commit message follows the [Angular Commit Message Conventions] specification.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getOutput } from './output/get-output.js';
|
|
2
|
-
import { promptNumber, promptSelect, promptText } from './util/prompt.js';
|
|
2
|
+
import { PromptCancelledError, promptNumber, promptSelect, promptText, withBackHint, } from './util/prompt.js';
|
|
3
3
|
export const interactForArray = async (array, message) => {
|
|
4
4
|
const updatedArray = [...array];
|
|
5
5
|
const output = getOutput();
|
|
@@ -17,30 +17,45 @@ export const interactForArray = async (array, message) => {
|
|
|
17
17
|
let action;
|
|
18
18
|
do {
|
|
19
19
|
displayList();
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (action === 'add') {
|
|
29
|
-
const newItem = await promptText({
|
|
30
|
-
message: 'Enter the new item:',
|
|
20
|
+
try {
|
|
21
|
+
action = await promptSelect({
|
|
22
|
+
message: withBackHint('Choose an action:'),
|
|
23
|
+
choices: [
|
|
24
|
+
{ label: 'Add an item', value: 'add' },
|
|
25
|
+
{ label: 'Remove an item', value: 'remove' },
|
|
26
|
+
{ label: 'Finish editing', value: 'done' },
|
|
27
|
+
],
|
|
31
28
|
});
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
if (!(error instanceof PromptCancelledError))
|
|
32
|
+
throw error;
|
|
33
|
+
// Dismissing the action menu finishes editing, keeping the changes.
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
if (action === 'add') {
|
|
38
|
+
const newItem = await promptText({
|
|
39
|
+
message: withBackHint('Enter the new item:'),
|
|
40
|
+
});
|
|
41
|
+
if (newItem) {
|
|
42
|
+
updatedArray.push(newItem);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else if (action === 'remove') {
|
|
46
|
+
const index = await promptNumber({
|
|
47
|
+
message: withBackHint('Enter the index of the item to remove:'),
|
|
48
|
+
validate: (value) => value > 0 && value <= updatedArray.length
|
|
49
|
+
? undefined
|
|
50
|
+
: 'Invalid index',
|
|
51
|
+
});
|
|
52
|
+
updatedArray.splice(index - 1, 1);
|
|
34
53
|
}
|
|
35
54
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
? undefined
|
|
41
|
-
: 'Invalid index',
|
|
42
|
-
});
|
|
43
|
-
updatedArray.splice(index - 1, 1);
|
|
55
|
+
catch (error) {
|
|
56
|
+
if (!(error instanceof PromptCancelledError))
|
|
57
|
+
throw error;
|
|
58
|
+
// Dismissing an inner prompt returns to the action menu.
|
|
44
59
|
}
|
|
45
60
|
} while (action !== 'done');
|
|
46
61
|
return updatedArray;
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,EACL,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,YAAY,GACb,MAAM,kBAAkB,CAAA;AAEzB,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,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,YAAY,CAAC;gBAC1B,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC;gBAC1C,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE;oBACtC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE;oBAC5C,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE;iBAC3C;aACF,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,oBAAoB,CAAC;gBAAE,MAAM,KAAK,CAAA;YACzD,oEAAoE;YACpE,MAAK;QACP,CAAC;QAED,IAAI,CAAC;YACH,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC;oBAC/B,OAAO,EAAE,YAAY,CAAC,qBAAqB,CAAC;iBAC7C,CAAC,CAAA;gBACF,IAAI,OAAO,EAAE,CAAC;oBACZ,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC5B,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC;oBAC/B,OAAO,EAAE,YAAY,CAAC,wCAAwC,CAAC;oBAC/D,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,YAAY,CAAC,MAAM;wBACvC,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,eAAe;iBACtB,CAAC,CAAA;gBACF,YAAY,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,oBAAoB,CAAC;gBAAE,MAAM,KAAK,CAAA;YACzD,yDAAyD;QAC3D,CAAC;IACH,CAAC,QAAQ,MAAM,KAAK,MAAM,EAAC;IAE3B,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"}
|
|
@@ -11,7 +11,7 @@ import { interactForUserIdentity } from './interact-for-user-identity.js';
|
|
|
11
11
|
import { getOutput } from './output/get-output.js';
|
|
12
12
|
import { NonInteractiveError, toArgName } from './util/cli-args.js';
|
|
13
13
|
import { ellipsis } from './util/ellipsis.js';
|
|
14
|
-
import { promptAutocomplete, promptAutocompleteMultiselect, promptConfirm, promptNumber, promptSelect, promptText, } from './util/prompt.js';
|
|
14
|
+
import { promptAutocomplete, promptAutocompleteMultiselect, PromptCancelledError, promptConfirm, promptNumber, promptSelect, promptText, withBackHint, } from './util/prompt.js';
|
|
15
15
|
const ergonomicPropOrder = [
|
|
16
16
|
'name',
|
|
17
17
|
'connected_account_id',
|
|
@@ -53,56 +53,65 @@ export const interactForBlueprintObject = async (args, ctx) => {
|
|
|
53
53
|
}
|
|
54
54
|
return ergonomicPropOrder.indexOf(prop);
|
|
55
55
|
};
|
|
56
|
-
const parameterSelectionMessage = args.isSubProperty
|
|
56
|
+
const parameterSelectionMessage = withBackHint(args.isSubProperty
|
|
57
57
|
? `Editing "${args.subPropertyPath}"`
|
|
58
|
-
: `[${cmdPath}] Parameters
|
|
58
|
+
: `[${cmdPath}] Parameters`);
|
|
59
59
|
getOutput().info();
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
60
|
+
let paramToEdit;
|
|
61
|
+
try {
|
|
62
|
+
paramToEdit = await promptAutocomplete({
|
|
63
|
+
message: parameterSelectionMessage,
|
|
64
|
+
choices: [
|
|
65
|
+
...(haveAllRequiredParams && !args.isSubProperty
|
|
66
|
+
? [
|
|
67
|
+
{
|
|
68
|
+
value: 'done',
|
|
69
|
+
label: `[Make API Call] ${cmdPath}`,
|
|
70
|
+
},
|
|
71
|
+
]
|
|
72
|
+
: []),
|
|
73
|
+
...(haveAllRequiredParams && args.isSubProperty
|
|
74
|
+
? [
|
|
75
|
+
{
|
|
76
|
+
label: `[Save]`,
|
|
77
|
+
value: 'done',
|
|
78
|
+
},
|
|
79
|
+
]
|
|
80
|
+
: []),
|
|
81
|
+
...Object.keys(properties)
|
|
82
|
+
.map((k) => {
|
|
83
|
+
return {
|
|
84
|
+
label: k + (required.includes(k) ? '*' : ''),
|
|
85
|
+
value: k,
|
|
86
|
+
hint: args.params[k] !== undefined
|
|
87
|
+
? typeof args.params[k] === 'object'
|
|
88
|
+
? ellipsis(JSON.stringify(args.params[k]), 60)
|
|
89
|
+
: `[${args.params[k]}]`
|
|
90
|
+
: undefined,
|
|
91
|
+
};
|
|
92
|
+
})
|
|
93
|
+
.sort((a, b) => propSortScore(b.value) - propSortScore(a.value)),
|
|
94
|
+
...(args.isSubProperty
|
|
95
|
+
? [
|
|
96
|
+
{
|
|
97
|
+
label: `[Leave Empty]`,
|
|
98
|
+
value: 'empty',
|
|
99
|
+
},
|
|
100
|
+
]
|
|
101
|
+
: []),
|
|
102
|
+
{
|
|
103
|
+
label: `[Back]`,
|
|
104
|
+
value: 'back',
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
// Dismissing the menu means the same as choosing to go back.
|
|
111
|
+
if (!(error instanceof PromptCancelledError))
|
|
112
|
+
throw error;
|
|
113
|
+
paramToEdit = 'back';
|
|
114
|
+
}
|
|
106
115
|
if (paramToEdit === 'empty') {
|
|
107
116
|
return undefined;
|
|
108
117
|
}
|
|
@@ -117,117 +126,126 @@ export const interactForBlueprintObject = async (args, ctx) => {
|
|
|
117
126
|
return '[Back]';
|
|
118
127
|
}
|
|
119
128
|
const prop = properties[paramToEdit];
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
paramToEdit === 'user_identity_ids') {
|
|
135
|
-
const userIdentityId = await interactForUserIdentity();
|
|
136
|
-
args.params[paramToEdit] =
|
|
137
|
-
paramToEdit === 'user_identity_ids' ? [userIdentityId] : userIdentityId;
|
|
138
|
-
return interactForBlueprintObject(args, ctx);
|
|
139
|
-
}
|
|
140
|
-
else if (paramToEdit.endsWith('acs_system_id')) {
|
|
141
|
-
args.params[paramToEdit] = await interactForAcsSystem();
|
|
142
|
-
return interactForBlueprintObject(args, ctx);
|
|
143
|
-
}
|
|
144
|
-
else if (paramToEdit.endsWith('acs_user_id')) {
|
|
145
|
-
args.params[paramToEdit] = await interactForAcsUser();
|
|
146
|
-
return interactForBlueprintObject(args, ctx);
|
|
147
|
-
}
|
|
148
|
-
else if (paramToEdit.endsWith('acs_entrance_id')) {
|
|
149
|
-
args.params['acs_entrance_id'] = await interactForAcsEntrance();
|
|
150
|
-
return interactForBlueprintObject(args, ctx);
|
|
151
|
-
}
|
|
152
|
-
else if (paramToEdit.endsWith('_at') ||
|
|
153
|
-
paramToEdit === 'since' ||
|
|
154
|
-
paramToEdit.endsWith('_before') ||
|
|
155
|
-
paramToEdit.endsWith('_after')) {
|
|
156
|
-
args.params[paramToEdit] = await interactForTimestamp();
|
|
157
|
-
return interactForBlueprintObject(args, ctx);
|
|
158
|
-
}
|
|
159
|
-
else if (paramToEdit === 'custom_metadata' ||
|
|
160
|
-
paramToEdit === 'custom_metadata_has') {
|
|
161
|
-
args.params[paramToEdit] = await interactForCustomMetadata(args.params[paramToEdit] || {});
|
|
162
|
-
return interactForBlueprintObject(args, ctx);
|
|
163
|
-
}
|
|
164
|
-
if (prop) {
|
|
165
|
-
if (['string', 'id', 'datetime'].includes(prop.format)) {
|
|
166
|
-
let value;
|
|
167
|
-
if (prop.format === 'datetime') {
|
|
168
|
-
value = await interactForTimestamp();
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
value = await promptText({
|
|
172
|
-
message: `${paramToEdit}:`,
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
args.params[paramToEdit] = value;
|
|
129
|
+
// Dismissing any prompt below returns to the parameter menu with the
|
|
130
|
+
// parameter left as it was, rather than ending the whole command.
|
|
131
|
+
try {
|
|
132
|
+
if (paramToEdit === 'device_id') {
|
|
133
|
+
args.params[paramToEdit] = await interactForDevice();
|
|
134
|
+
return interactForBlueprintObject(args, ctx);
|
|
135
|
+
}
|
|
136
|
+
else if (paramToEdit === 'access_code_id') {
|
|
137
|
+
args.params[paramToEdit] = await interactForAccessCode(args.params);
|
|
138
|
+
return interactForBlueprintObject(args, ctx);
|
|
139
|
+
}
|
|
140
|
+
else if (paramToEdit === 'connected_account_id') {
|
|
141
|
+
const connectedAccountId = await interactForConnectedAccount();
|
|
142
|
+
args.params[paramToEdit] = connectedAccountId;
|
|
176
143
|
return interactForBlueprintObject(args, ctx);
|
|
177
144
|
}
|
|
178
|
-
else if (
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
value: v.name,
|
|
184
|
-
})),
|
|
185
|
-
});
|
|
186
|
-
args.params[paramToEdit] = value;
|
|
145
|
+
else if (paramToEdit === 'user_identity_id' ||
|
|
146
|
+
paramToEdit === 'user_identity_ids') {
|
|
147
|
+
const userIdentityId = await interactForUserIdentity();
|
|
148
|
+
args.params[paramToEdit] =
|
|
149
|
+
paramToEdit === 'user_identity_ids' ? [userIdentityId] : userIdentityId;
|
|
187
150
|
return interactForBlueprintObject(args, ctx);
|
|
188
151
|
}
|
|
189
|
-
else if (
|
|
190
|
-
|
|
191
|
-
message: `${paramToEdit}:`,
|
|
192
|
-
initialValue: true,
|
|
193
|
-
active: 'true',
|
|
194
|
-
inactive: 'false',
|
|
195
|
-
});
|
|
196
|
-
args.params[paramToEdit] = value;
|
|
152
|
+
else if (paramToEdit.endsWith('acs_system_id')) {
|
|
153
|
+
args.params[paramToEdit] = await interactForAcsSystem();
|
|
197
154
|
return interactForBlueprintObject(args, ctx);
|
|
198
155
|
}
|
|
199
|
-
else if (
|
|
200
|
-
|
|
201
|
-
message: `${paramToEdit}:`,
|
|
202
|
-
choices: prop.itemEnumValues.map((v) => ({
|
|
203
|
-
label: v.name,
|
|
204
|
-
value: v.name,
|
|
205
|
-
})),
|
|
206
|
-
});
|
|
207
|
-
args.params[paramToEdit] = value;
|
|
156
|
+
else if (paramToEdit.endsWith('acs_user_id')) {
|
|
157
|
+
args.params[paramToEdit] = await interactForAcsUser();
|
|
208
158
|
return interactForBlueprintObject(args, ctx);
|
|
209
159
|
}
|
|
210
|
-
else if (
|
|
211
|
-
args.params[
|
|
160
|
+
else if (paramToEdit.endsWith('acs_entrance_id')) {
|
|
161
|
+
args.params['acs_entrance_id'] = await interactForAcsEntrance();
|
|
212
162
|
return interactForBlueprintObject(args, ctx);
|
|
213
163
|
}
|
|
214
|
-
else if (
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
isSubProperty: true,
|
|
220
|
-
subPropertyPath: paramToEdit,
|
|
221
|
-
}, ctx);
|
|
164
|
+
else if (paramToEdit.endsWith('_at') ||
|
|
165
|
+
paramToEdit === 'since' ||
|
|
166
|
+
paramToEdit.endsWith('_before') ||
|
|
167
|
+
paramToEdit.endsWith('_after')) {
|
|
168
|
+
args.params[paramToEdit] = await interactForTimestamp();
|
|
222
169
|
return interactForBlueprintObject(args, ctx);
|
|
223
170
|
}
|
|
224
|
-
else if (
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
});
|
|
228
|
-
args.params[paramToEdit] = value;
|
|
171
|
+
else if (paramToEdit === 'custom_metadata' ||
|
|
172
|
+
paramToEdit === 'custom_metadata_has') {
|
|
173
|
+
args.params[paramToEdit] = await interactForCustomMetadata(args.params[paramToEdit] || {});
|
|
229
174
|
return interactForBlueprintObject(args, ctx);
|
|
230
175
|
}
|
|
176
|
+
if (prop) {
|
|
177
|
+
if (['string', 'id', 'datetime'].includes(prop.format)) {
|
|
178
|
+
let value;
|
|
179
|
+
if (prop.format === 'datetime') {
|
|
180
|
+
value = await interactForTimestamp();
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
value = await promptText({
|
|
184
|
+
message: withBackHint(`${paramToEdit}:`),
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
args.params[paramToEdit] = value;
|
|
188
|
+
return interactForBlueprintObject(args, ctx);
|
|
189
|
+
}
|
|
190
|
+
else if (prop.format === 'enum') {
|
|
191
|
+
const value = await promptSelect({
|
|
192
|
+
message: withBackHint(`${paramToEdit}:`),
|
|
193
|
+
choices: prop.values.map((v) => ({
|
|
194
|
+
label: v.name,
|
|
195
|
+
value: v.name,
|
|
196
|
+
})),
|
|
197
|
+
});
|
|
198
|
+
args.params[paramToEdit] = value;
|
|
199
|
+
return interactForBlueprintObject(args, ctx);
|
|
200
|
+
}
|
|
201
|
+
else if (prop.format === 'boolean') {
|
|
202
|
+
const value = await promptConfirm({
|
|
203
|
+
message: withBackHint(`${paramToEdit}:`),
|
|
204
|
+
initialValue: true,
|
|
205
|
+
active: 'true',
|
|
206
|
+
inactive: 'false',
|
|
207
|
+
});
|
|
208
|
+
args.params[paramToEdit] = value;
|
|
209
|
+
return interactForBlueprintObject(args, ctx);
|
|
210
|
+
}
|
|
211
|
+
else if (prop.format === 'list' && prop.itemFormat === 'enum') {
|
|
212
|
+
const value = await promptAutocompleteMultiselect({
|
|
213
|
+
message: withBackHint(`${paramToEdit}:`),
|
|
214
|
+
choices: prop.itemEnumValues.map((v) => ({
|
|
215
|
+
label: v.name,
|
|
216
|
+
value: v.name,
|
|
217
|
+
})),
|
|
218
|
+
});
|
|
219
|
+
args.params[paramToEdit] = value;
|
|
220
|
+
return interactForBlueprintObject(args, ctx);
|
|
221
|
+
}
|
|
222
|
+
else if (prop.format === 'list') {
|
|
223
|
+
args.params[paramToEdit] = await interactForArray(args.params[paramToEdit] || [], `Edit the list for ${paramToEdit}`);
|
|
224
|
+
return interactForBlueprintObject(args, ctx);
|
|
225
|
+
}
|
|
226
|
+
else if (prop.format === 'object') {
|
|
227
|
+
args.params[paramToEdit] = await interactForBlueprintObject({
|
|
228
|
+
command: args.command,
|
|
229
|
+
params: {},
|
|
230
|
+
parameters: prop.parameters,
|
|
231
|
+
isSubProperty: true,
|
|
232
|
+
subPropertyPath: paramToEdit,
|
|
233
|
+
}, ctx);
|
|
234
|
+
return interactForBlueprintObject(args, ctx);
|
|
235
|
+
}
|
|
236
|
+
else if (prop.format === 'number') {
|
|
237
|
+
const value = await promptNumber({
|
|
238
|
+
message: withBackHint(`${paramToEdit}:`),
|
|
239
|
+
});
|
|
240
|
+
args.params[paramToEdit] = value;
|
|
241
|
+
return interactForBlueprintObject(args, ctx);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
if (!(error instanceof PromptCancelledError))
|
|
247
|
+
throw error;
|
|
248
|
+
return interactForBlueprintObject(args, ctx);
|
|
231
249
|
}
|
|
232
250
|
throw new Error(`Didn't know how to handle Blueprint parameter for property: "${paramToEdit}"`);
|
|
233
251
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interact-for-blueprint-object.js","sourceRoot":"","sources":["../src/lib/interact-for-blueprint-object.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAA;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAA;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,UAAU,
|
|
1
|
+
{"version":3,"file":"interact-for-blueprint-object.js","sourceRoot":"","sources":["../src/lib/interact-for-blueprint-object.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isDeepStrictEqual as isEqual } from 'node:util';
|
|
2
2
|
import { NonInteractiveError } from './util/cli-args.js';
|
|
3
|
-
import { promptAutocomplete } from './util/prompt.js';
|
|
3
|
+
import { promptAutocomplete, PromptCancelledError, withBackHint, } from './util/prompt.js';
|
|
4
4
|
const uniqBy = (items, keyOf) => {
|
|
5
5
|
const seen = new Set();
|
|
6
6
|
return items.filter((item) => {
|
|
@@ -64,15 +64,30 @@ export async function interactForCommandSelection(commandPath, helpers) {
|
|
|
64
64
|
possibleCommands.push([...commandPath, '[Back]']);
|
|
65
65
|
}
|
|
66
66
|
const commandPathStr = commandPath.join('/').replace(/-/g, '_');
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
67
|
+
// Only a sub-command menu has a level to go back to, so only it says so.
|
|
68
|
+
const selectMessage = `Select a command: /${commandPathStr}`;
|
|
69
|
+
let selectedCommand;
|
|
70
|
+
try {
|
|
71
|
+
selectedCommand = await promptAutocomplete({
|
|
72
|
+
message: commandPath.length > 0 ? withBackHint(selectMessage) : selectMessage,
|
|
73
|
+
choices: [
|
|
74
|
+
...possibleCommands.map((cmd) => ({
|
|
75
|
+
label: cmd?.[commandPath.length] ?? `[Call /${commandPathStr} Directly]`,
|
|
76
|
+
value: cmd?.[commandPath.length] ?? '<none>',
|
|
77
|
+
})),
|
|
78
|
+
].sort((a, b) => ergonomicSort(a.value, b.value)),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
if (!(error instanceof PromptCancelledError))
|
|
83
|
+
throw error;
|
|
84
|
+
// Dismissing the menu means the same as its [Back] entry, which is only
|
|
85
|
+
// offered when there is a level to go back to. At the top there is none,
|
|
86
|
+
// so dismissing it stops the CLI as it always has.
|
|
87
|
+
if (commandPath.length === 0)
|
|
88
|
+
throw error;
|
|
89
|
+
selectedCommand = '[Back]';
|
|
90
|
+
}
|
|
76
91
|
if (selectedCommand === '<none>') {
|
|
77
92
|
return commandPath;
|
|
78
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interact-for-command-selection.js","sourceRoot":"","sources":["../src/lib/interact-for-command-selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"interact-for-command-selection.js","sourceRoot":"","sources":["../src/lib/interact-for-command-selection.ts"],"names":[],"mappings":"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"}
|