910e62b5创建于 1月15日历史提交
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import assert from 'node:assert/strict';
import {readFile} from 'node:fs/promises';
import {parseArgs} from 'node:util';
import process from 'node:process';

function extractExpectedVersion(contents) {
  const NODE_VERSION_REGEX = /\s*NODE_VERSION\s*=\s*"(?<version>[^"]+)"/;
  const match = contents.match(NODE_VERSION_REGEX);
  assert.ok(match !== null, 'Could not extract NodeJS version.');
  return match.groups['version'];
}

async function main() {
  const options = {
    expected_version_file: {type: 'string'},
  };
  const parsed = parseArgs({options});
  const args = parsed.values;
  assert.ok(
      !!args.expected_version_file,
      'Missing required \'expected_version_file\' flag');

  let contents =
      await readFile(args.expected_version_file, {encoding: 'utf-8'});
  const expectedVersion = extractExpectedVersion(contents);

  const errorMessage =
      `Failed NodeJS version check: Expected version '${expectedVersion}', ` +
      `but found '${process.version}'. Did you run 'gclient sync'? If the ` +
      `problem persists try running 'gclient sync -f' instead, or deleting ` +
      `third_party/node/{linux,win,mac} folders and trying again.`;

  assert.equal(expectedVersion, process.version, errorMessage);
}
main();