import { BaseRuntime } from "../../facts";

const VALID_VERSION_PATTERN =
  /^(?!.*\.\.)[0-9]+(?:[._+a-zA-Z0-9-]*[a-zA-Z0-9])?$/;

const regex = /^\s*JAVA_VERSION\s*=\s*(?:(["'])(.*?)\1|([^#\r\n]+))/gm;

function isValidJavaVersion(version: string): boolean {
  if (!version || version.length === 0) {
    return false;
  }
  return VALID_VERSION_PATTERN.test(version);
}

export function parseJavaRuntimeRelease(content: string): BaseRuntime | null {
  if (!content || content.trim().length === 0) {
    return null;
  }
  try {
    const matches = [...content.matchAll(regex)];

    if (matches.length !== 1) {
      return null;
    }
    const version = (matches[0][2] || matches[0][3] || "").trim();

    if (!isValidJavaVersion(version)) {
      return null;
    }
    return { type: "java", version };
  } catch (error) {
    return null;
  }
}
