feat(lanes): add ccam lanes proof-link CLI (C)
This commit is contained in:
+20
@@ -2074,6 +2074,20 @@ async function cmdFeatureActivate(args) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** `ccam feature show <slug> [<id>] [--cwd path]` — one feature's saved pipeline. */
|
/** `ccam feature show <slug> [<id>] [--cwd path]` — one feature's saved pipeline. */
|
||||||
|
/** `ccam lanes proof-link [<id>] [--cwd path]` — converge the clone-root
|
||||||
|
* `proof/` onto `.playwright-mcp/proof` (idempotent). Never run automatically
|
||||||
|
* by anything else in this codebase; a session or hook calls it explicitly. */
|
||||||
|
async function cmdLanesProofLink(args) {
|
||||||
|
const resolved = await resolveLaneArg(args);
|
||||||
|
if (!resolved) return;
|
||||||
|
const { linked } = await post(`/api/lanes/${resolved.laneId}/proof-link`);
|
||||||
|
console.log(
|
||||||
|
linked
|
||||||
|
? `${c.green("✔")} linked proof/ -> .playwright-mcp/proof`
|
||||||
|
: "proof/ already linked, nothing to do"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
async function cmdFeatureShow(args) {
|
async function cmdFeatureShow(args) {
|
||||||
const slug = args.find((arg) => !arg.startsWith("--"));
|
const slug = args.find((arg) => !arg.startsWith("--"));
|
||||||
if (!slug) {
|
if (!slug) {
|
||||||
@@ -2250,6 +2264,11 @@ const COMMAND_GROUPS = [
|
|||||||
["lanes runtime", "[<id>]", "Slot, ports, service health and the last boot error"],
|
["lanes runtime", "[<id>]", "Slot, ports, service health and the last boot error"],
|
||||||
["lanes logs", "[<id>] <svc> [--tail N]", "Tail one of the lane's hook or service logs"],
|
["lanes logs", "[<id>] <svc> [--tail N]", "Tail one of the lane's hook or service logs"],
|
||||||
["lanes hook", "[<id>] <name> [args…]", "Run a profile hook (ci-gate, e2e, migrate, …)"],
|
["lanes hook", "[<id>] <name> [args…]", "Run a profile hook (ci-gate, e2e, migrate, …)"],
|
||||||
|
[
|
||||||
|
"lanes proof-link",
|
||||||
|
"[<id>]",
|
||||||
|
"Converge clone-root proof/ onto .playwright-mcp/proof (idempotent, never automatic)",
|
||||||
|
],
|
||||||
[
|
[
|
||||||
"lock status|acquire|release",
|
"lock status|acquire|release",
|
||||||
"[<name>] [--holder X] [--timeout N]",
|
"[<name>] [--holder X] [--timeout N]",
|
||||||
@@ -3067,6 +3086,7 @@ async function runCommand(argv) {
|
|||||||
if (["up", "down", "runtime", "logs", "hook"].includes(rest[0])) {
|
if (["up", "down", "runtime", "logs", "hook"].includes(rest[0])) {
|
||||||
return cmdLanesRuntime(rest[0], rest.slice(1));
|
return cmdLanesRuntime(rest[0], rest.slice(1));
|
||||||
}
|
}
|
||||||
|
if (rest[0] === "proof-link") return cmdLanesProofLink(rest.slice(1));
|
||||||
return cmdLanes();
|
return cmdLanes();
|
||||||
case "lock": {
|
case "lock": {
|
||||||
const sub = rest[0];
|
const sub = rest[0];
|
||||||
|
|||||||
Reference in New Issue
Block a user