mirror of https://github.com/openclaw/openclaw.git
refactor: share cli install helpers
This commit is contained in:
parent
97aa786dd5
commit
f806b07208
|
|
@ -126,6 +126,15 @@ function expectFirstInstallPlanCallOmitsToken() {
|
|||
expect(firstArg && "token" in firstArg).toBe(false);
|
||||
}
|
||||
|
||||
function mockResolvedGatewayTokenSecretRef() {
|
||||
resolveSecretInputRefMock.mockReturnValue({
|
||||
ref: { source: "env", provider: "default", id: "OPENCLAW_GATEWAY_TOKEN" },
|
||||
});
|
||||
resolveSecretRefValuesMock.mockResolvedValue(
|
||||
new Map([["env:default:OPENCLAW_GATEWAY_TOKEN", "resolved-from-secretref"]]),
|
||||
);
|
||||
}
|
||||
|
||||
const { runDaemonInstall } = await import("./install.js");
|
||||
const envSnapshot = captureFullEnv();
|
||||
|
||||
|
|
@ -195,12 +204,7 @@ describe("runDaemonInstall", () => {
|
|||
});
|
||||
|
||||
it("validates token SecretRef but does not serialize resolved token into service env", async () => {
|
||||
resolveSecretInputRefMock.mockReturnValue({
|
||||
ref: { source: "env", provider: "default", id: "OPENCLAW_GATEWAY_TOKEN" },
|
||||
});
|
||||
resolveSecretRefValuesMock.mockResolvedValue(
|
||||
new Map([["env:default:OPENCLAW_GATEWAY_TOKEN", "resolved-from-secretref"]]),
|
||||
);
|
||||
mockResolvedGatewayTokenSecretRef();
|
||||
|
||||
await runDaemonInstall({ json: true });
|
||||
|
||||
|
|
@ -219,12 +223,7 @@ describe("runDaemonInstall", () => {
|
|||
loadConfigMock.mockReturnValue({
|
||||
gateway: { auth: { mode: "token", token: "${OPENCLAW_GATEWAY_TOKEN}" } },
|
||||
});
|
||||
resolveSecretInputRefMock.mockReturnValue({
|
||||
ref: { source: "env", provider: "default", id: "OPENCLAW_GATEWAY_TOKEN" },
|
||||
});
|
||||
resolveSecretRefValuesMock.mockResolvedValue(
|
||||
new Map([["env:default:OPENCLAW_GATEWAY_TOKEN", "resolved-from-secretref"]]),
|
||||
);
|
||||
mockResolvedGatewayTokenSecretRef();
|
||||
|
||||
await runDaemonInstall({ json: true });
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,12 @@ const parseFacing = (value: string): CameraFacing => {
|
|||
throw new Error(`invalid facing: ${value} (expected front|back)`);
|
||||
};
|
||||
|
||||
function getGatewayInvokePayload(raw: unknown): unknown {
|
||||
return typeof raw === "object" && raw !== null
|
||||
? (raw as { payload?: unknown }).payload
|
||||
: undefined;
|
||||
}
|
||||
|
||||
export function registerNodesCameraCommands(nodes: Command) {
|
||||
const camera = nodes.command("camera").description("Capture camera media from a paired node");
|
||||
|
||||
|
|
@ -157,9 +163,7 @@ export function registerNodesCameraCommands(nodes: Command) {
|
|||
});
|
||||
|
||||
const raw = await callGatewayCli("node.invoke", opts, invokeParams);
|
||||
const res =
|
||||
typeof raw === "object" && raw !== null ? (raw as { payload?: unknown }) : {};
|
||||
const payload = parseCameraSnapPayload(res.payload);
|
||||
const payload = parseCameraSnapPayload(getGatewayInvokePayload(raw));
|
||||
const filePath = cameraTempPath({
|
||||
kind: "snap",
|
||||
facing,
|
||||
|
|
@ -229,8 +233,7 @@ export function registerNodesCameraCommands(nodes: Command) {
|
|||
});
|
||||
|
||||
const raw = await callGatewayCli("node.invoke", opts, invokeParams);
|
||||
const res = typeof raw === "object" && raw !== null ? (raw as { payload?: unknown }) : {};
|
||||
const payload = parseCameraClipPayload(res.payload);
|
||||
const payload = parseCameraClipPayload(getGatewayInvokePayload(raw));
|
||||
const filePath = await writeCameraClipPayloadToFile({
|
||||
payload,
|
||||
facing,
|
||||
|
|
|
|||
Loading…
Reference in New Issue