in src/core/func-core-tools.ts [265:299]
export async function getCoreToolsBinary(): Promise<string | undefined> {
const nodeVersion = getNodeMajorVersion();
const systemVersion = await getInstalledSystemCoreToolsVersion();
if (systemVersion && isCoreToolsVersionCompatible(systemVersion, nodeVersion)) {
return DEFAULT_FUNC_BINARY;
}
const targetVersion = detectTargetCoreToolsVersion(nodeVersion);
const downloadedVersion = getDownloadedCoreToolsVersion(targetVersion);
if (downloadedVersion) {
// Should we check for newer versions here?
return getCoreToolBinaryPath(targetVersion);
}
if (systemVersion && systemVersion !== targetVersion) {
logger.warn(`Functions Core Tools version mismatch. Detected v${systemVersion} but requires v${targetVersion}`);
logger.warn(`Downloading v${targetVersion}...`);
}
if (!systemVersion) {
logger.warn(`Functions Core Tools not detected. Downloading v${targetVersion}...`);
}
try {
await downloadCoreTools(targetVersion);
logger.log(`\nDownloaded Function Core Tools successfully`);
return getCoreToolBinaryPath(targetVersion);
} catch (error: unknown) {
logger.error(`Failed to download Functions Core Tools v${targetVersion}.`);
logger.error(error as Error);
console.log(error);
return undefined;
}
}