@botiverse/hands-cli 0.5.12 → 0.5.13
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 +7 -3
- package/dist/commands/apps.d.ts +3 -2
- package/dist/commands/apps.js +62 -16
- package/dist/commands/apps.js.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Hands CLI — manage apps, builds, releases from the terminal.
|
|
4
4
|
|
|
5
5
|
Status: **alpha**. The npm package is public as `@botiverse/hands-cli`; v1 ships
|
|
6
|
-
`login`, `logout`, `whoami`, `apps list/get`, `builds list/get`, and
|
|
6
|
+
`login`, `logout`, `whoami`, `apps create/list/get/client-key`, `builds list/get`, and
|
|
7
7
|
`builds publish-version`, `builds publish-android`, `builds publish-ios`,
|
|
8
8
|
`builds testflight-groups`, `builds testflight-publish`,
|
|
9
9
|
`builds testflight-status`, `builds publish-ohos`, `builds publish-electron`,
|
|
@@ -17,7 +17,7 @@ npm install -g @botiverse/hands-cli
|
|
|
17
17
|
hands --help
|
|
18
18
|
|
|
19
19
|
# Or run without installing globally:
|
|
20
|
-
npm exec --package @botiverse/hands-cli@0.5.
|
|
20
|
+
npm exec --package @botiverse/hands-cli@0.5.13 -- hands --help
|
|
21
21
|
|
|
22
22
|
# Local repo development:
|
|
23
23
|
pnpm --filter @botiverse/hands-cli build
|
|
@@ -33,9 +33,13 @@ hands login
|
|
|
33
33
|
# 2. Verify who you are.
|
|
34
34
|
hands whoami
|
|
35
35
|
|
|
36
|
-
# 3.
|
|
36
|
+
# 3. Create or list apps in your current Hands organization.
|
|
37
|
+
hands apps create --slug hands-example-web --name "Hands Example Web" --platform web
|
|
37
38
|
hands apps list
|
|
38
39
|
|
|
40
|
+
# Read the public SDK client key explicitly (app admin only).
|
|
41
|
+
hands apps client-key hands-example-web
|
|
42
|
+
|
|
39
43
|
# 4. List builds for an app (by slug or id).
|
|
40
44
|
hands builds list myapp-android
|
|
41
45
|
|
package/dist/commands/apps.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `
|
|
2
|
+
* `hands apps` — create / list / inspect apps in the caller's org.
|
|
3
3
|
*
|
|
4
|
-
* Wires GET /api/apps
|
|
4
|
+
* Wires POST/GET /api/apps, GET /api/apps/:appId, and the explicit
|
|
5
|
+
* app-admin-only client-key read endpoint.
|
|
5
6
|
*/
|
|
6
7
|
import type { Command } from "commander";
|
|
7
8
|
export declare function registerAppCommands(program: Command): void;
|
package/dist/commands/apps.js
CHANGED
|
@@ -1,11 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `
|
|
2
|
+
* `hands apps` — create / list / inspect apps in the caller's org.
|
|
3
3
|
*
|
|
4
|
-
* Wires GET /api/apps
|
|
4
|
+
* Wires POST/GET /api/apps, GET /api/apps/:appId, and the explicit
|
|
5
|
+
* app-admin-only client-key read endpoint.
|
|
5
6
|
*/
|
|
6
7
|
import { apiRequest } from "../lib/api.js";
|
|
7
8
|
export function registerAppCommands(program) {
|
|
8
9
|
const apps = program.command("apps").description("Manage apps in your org.");
|
|
10
|
+
apps
|
|
11
|
+
.command("create")
|
|
12
|
+
.description("Create an app in the current Hands organization.")
|
|
13
|
+
.requiredOption("--slug <slug>", "Stable app slug.")
|
|
14
|
+
.requiredOption("--name <name>", "Display name.")
|
|
15
|
+
.requiredOption("--platform <platform>", "App platform, for example web, android, ios, ohos, node, or electron.")
|
|
16
|
+
.option("--description <text>", "Optional app description.")
|
|
17
|
+
.option("--json", "Output JSON.", false)
|
|
18
|
+
.action(async (opts) => {
|
|
19
|
+
const app = await apiRequest("/api/apps", {
|
|
20
|
+
method: "POST",
|
|
21
|
+
body: {
|
|
22
|
+
slug: opts.slug,
|
|
23
|
+
name: opts.name,
|
|
24
|
+
platform: opts.platform,
|
|
25
|
+
...(opts.description !== undefined
|
|
26
|
+
? { description: opts.description }
|
|
27
|
+
: {}),
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
if (opts.json) {
|
|
31
|
+
console.log(JSON.stringify(app, null, 2));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
console.log(`Created app ${app.slug} (${app.platform}).`);
|
|
35
|
+
console.log(` id: ${app.id}`);
|
|
36
|
+
console.log(` org: ${app.org_id}`);
|
|
37
|
+
});
|
|
9
38
|
apps
|
|
10
39
|
.command("list")
|
|
11
40
|
.alias("ls")
|
|
@@ -21,7 +50,7 @@ export function registerAppCommands(program) {
|
|
|
21
50
|
return;
|
|
22
51
|
}
|
|
23
52
|
if (res.apps.length === 0) {
|
|
24
|
-
console.log("No apps. Create one
|
|
53
|
+
console.log("No apps. Create one with `hands apps create --slug <slug> --name <name> --platform <platform>`.");
|
|
25
54
|
return;
|
|
26
55
|
}
|
|
27
56
|
console.log(["SLUG", "PLATFORM", "ARCHIVED", "DEFAULT_CHANNEL", "ID"].join("\t"));
|
|
@@ -40,19 +69,7 @@ export function registerAppCommands(program) {
|
|
|
40
69
|
.description("Show details for a single app.")
|
|
41
70
|
.option("--json", "Output JSON.", false)
|
|
42
71
|
.action(async (appIdOrSlug, opts) => {
|
|
43
|
-
|
|
44
|
-
// Cheap heuristic: 36-char with dashes = UUID.
|
|
45
|
-
const isUuid = appIdOrSlug.length === 36 && appIdOrUuidDash(appIdOrSlug);
|
|
46
|
-
let id = appIdOrSlug;
|
|
47
|
-
if (!isUuid) {
|
|
48
|
-
const res = await apiRequest("/api/apps");
|
|
49
|
-
const match = res.apps.find((a) => a.slug === appIdOrSlug);
|
|
50
|
-
if (!match) {
|
|
51
|
-
console.error(`No app with slug '${appIdOrSlug}'.`);
|
|
52
|
-
process.exit(1);
|
|
53
|
-
}
|
|
54
|
-
id = match.id;
|
|
55
|
-
}
|
|
72
|
+
const id = await resolveAppId(appIdOrSlug);
|
|
56
73
|
const app = await apiRequest(`/api/apps/${id}`);
|
|
57
74
|
if (opts.json) {
|
|
58
75
|
console.log(JSON.stringify(app, null, 2));
|
|
@@ -64,6 +81,35 @@ export function registerAppCommands(program) {
|
|
|
64
81
|
console.log(` archived: ${app.archived ? "yes" : "no"}`);
|
|
65
82
|
console.log(` default_channel: ${app.default_channel_slug ?? "(none)"}`);
|
|
66
83
|
});
|
|
84
|
+
apps
|
|
85
|
+
.command("client-key <appIdOrSlug>")
|
|
86
|
+
.description("Read an app's public SDK client key. Requires app admin.")
|
|
87
|
+
.option("--json", "Output JSON.", false)
|
|
88
|
+
.action(async (appIdOrSlug, opts) => {
|
|
89
|
+
const appId = await resolveAppId(appIdOrSlug);
|
|
90
|
+
const result = await apiRequest(`/api/apps/${appId}/client-key`);
|
|
91
|
+
if (opts.json) {
|
|
92
|
+
console.log(JSON.stringify(result, null, 2));
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (!result.client_key) {
|
|
96
|
+
console.log(`App ${appIdOrSlug} has no client key.`);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
// The key is intentionally printed only for this explicit read command.
|
|
100
|
+
// apiRequest's verbose diagnostics log only method/URL/status, never
|
|
101
|
+
// response bodies, so the value does not leak into debug logs.
|
|
102
|
+
console.log(result.client_key);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
async function resolveAppId(input) {
|
|
106
|
+
if (input.length === 36 && appIdOrUuidDash(input))
|
|
107
|
+
return input;
|
|
108
|
+
const res = await apiRequest("/api/apps");
|
|
109
|
+
const match = res.apps.find((app) => app.slug === input);
|
|
110
|
+
if (!match)
|
|
111
|
+
throw new Error(`No app with slug '${input}'.`);
|
|
112
|
+
return match.id;
|
|
67
113
|
}
|
|
68
114
|
function appIdOrUuidDash(s) {
|
|
69
115
|
return s.split("-").length === 5;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/commands/apps.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/commands/apps.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -33,14 +33,17 @@ const program = new Command();
|
|
|
33
33
|
program
|
|
34
34
|
.name("hands")
|
|
35
35
|
.description("Hands CLI — manage apps, builds, releases from the terminal.")
|
|
36
|
-
.version("0.5.
|
|
36
|
+
.version("0.5.13")
|
|
37
37
|
.option("--api <url>", "Hands business API URL (default: https://hands.build or $HANDS_API)")
|
|
38
38
|
.option("--json", "Output machine-readable JSON (suppresses human output)", false)
|
|
39
39
|
.option("--verbose", "Print HTTP request details for debugging", false)
|
|
40
40
|
.addHelpText("after", `
|
|
41
41
|
Common recipes:
|
|
42
42
|
hands whoami Who am I / is my auth valid?
|
|
43
|
+
hands apps create --slug <s> --name <n> --platform web
|
|
44
|
+
Create an app in my current org
|
|
43
45
|
hands apps list Apps I can access
|
|
46
|
+
hands apps client-key <app> Read public SDK client key (admin)
|
|
44
47
|
hands feedback list <app> --kind crash Newest crash tickets
|
|
45
48
|
hands feedback show <app> <ticketId> One ticket: device context + attachments
|
|
46
49
|
hands feedback download-attachment <app> <t> <a> Pull a crash log / screenshot
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,8DAA8D,CAAC;KAC3E,OAAO,CAAC,QAAQ,CAAC;KACjB,MAAM,CACL,aAAa,EACb,qEAAqE,CACtE;KACA,MAAM,CAAC,QAAQ,EAAE,wDAAwD,EAAE,KAAK,CAAC;KACjF,MAAM,CAAC,WAAW,EAAE,0CAA0C,EAAE,KAAK,CAAC;KACtE,WAAW,CACV,OAAO,EACP
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|