UNPKG

convex

Version:

Client for the Convex Cloud

53 lines (49 loc) 1.43 kB
export type InProjectSelector = | { kind: "dev" } | { kind: "prod" } | { kind: "reference"; reference: string }; export type ParsedDeploymentSelector = | { kind: "deploymentName"; deploymentName: string } | { kind: "inCurrentProject"; selector: InProjectSelector } | { kind: "inProject"; projectSlug: string; selector: InProjectSelector } | { kind: "inTeamProject"; teamSlug: string; projectSlug: string; selector: InProjectSelector; }; function parseInProjectSelector(s: string): InProjectSelector { if (s === "dev") return { kind: "dev" }; if (s === "prod") return { kind: "prod" }; return { kind: "reference", reference: s }; } /** * Parses the value of the `--deployment` CLI flag */ export function parseDeploymentSelector( selector: string, ): ParsedDeploymentSelector { if (/^[a-z]+-[a-z]+-[0-9]+$/.test(selector)) { return { kind: "deploymentName", deploymentName: selector }; } const parts = selector.split(":"); if (parts.length === 3) { return { kind: "inTeamProject", teamSlug: parts[0], projectSlug: parts[1], selector: parseInProjectSelector(parts[2]), }; } if (parts.length === 2) { return { kind: "inProject", projectSlug: parts[0], selector: parseInProjectSelector(parts[1]), }; } return { kind: "inCurrentProject", selector: parseInProjectSelector(selector), }; }