import fs from 'fs';
import path from 'path';

// Import constants
import APP_DIRECTORY from '../constants/APP_DIRECTORY';

/**
 * Get the major version of Node.js from a Dockerfile.
 * @author Gabe Abrams
 * @returns major version of Node.js (e.g. 22) or null if not found
 */
const getMajorNodeVersionInDockerfile = async (): Promise<number | null> => {
  const dockerfilePath = path.join(APP_DIRECTORY, 'Dockerfile');
  const dockerfileContents = fs.readFileSync(dockerfilePath, 'utf8');
  const nodeVersionRegex = /FROM\s+node:(\d+)/;
  const nodeMajorVersionMatch = dockerfileContents.match(nodeVersionRegex);
  const nodeMajorVersion = (
    nodeMajorVersionMatch
      ? Number.parseInt(nodeMajorVersionMatch[1], 10)
      : null
  );
  return nodeMajorVersion;
};

export default getMajorNodeVersionInDockerfile;
