blob: 0a037ab449c3b8780e68506993e6281d44cef7dc [file] [log] [blame]
// 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();