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;
}
