sculptui-vscode
Version:
Visually edit your React component code from the browser
29 lines (28 loc) • 1.08 kB
text/typescript
export function getPorts(
ports: string | undefined,
defaultPorts?: { port: number; stopPort?: number },
): { port: number; stopPort?: number } | undefined {
if (ports) {
const portParts = ports.split('-', 2);
if (portParts.length > 1) {
const parsedStart = Number(portParts[0]);
const parsedStop = Number(portParts[1]);
if (parsedStart && Number.isInteger(parsedStart) && parsedStop && Number.isInteger(parsedStop)) {
return { port: parsedStart, stopPort: parsedStop };
} else {
throw new Error(
`'${ports}' is not a valid specification for a port range. To define a port range use a form like '5000-5100'.`,
);
}
}
const parsedPort = Number(ports);
if (parsedPort && Number.isInteger(parsedPort)) {
return { port: parsedPort };
} else {
throw new Error(
`'${ports}' is not a valid specification for a port or port range. Must define a single port like '9999' or a port range like '5000-5100'.`,
);
}
}
return defaultPorts;
}