in src/core/deploy-client.ts [17:64]
export async function getDeployClientPath(): Promise<{ binary: string; buildId: string }> {
const platform = getPlatform();
if (!platform) {
throw new Error(`Unsupported platform: ${os.platform()}`);
}
const localClientMetadata = getLocalClientMetadata() as StaticSiteClientLocalMetadata;
const binaryVersion = swaCLIEnv().SWA_CLI_DEPLOY_BINARY_VERSION || DEPLOY_BINARY_STABLE_TAG;
const remoteClientMetadata = await fetchClientVersionDefinition(binaryVersion);
if (remoteClientMetadata === undefined) {
throw new Error(`Could not load ${DEPLOY_BINARY_NAME} metadata from remote. Please check your internet connection.`);
}
// if the latest version is the same as the local version, we can skip the download
if (localClientMetadata) {
if (!localClientMetadata.metadata || !localClientMetadata.binary || !localClientMetadata.checksum) {
logger.warn(`Local client metadata is invalid!`);
} else {
const localChecksum = localClientMetadata.checksum;
const releaseChecksum = remoteClientMetadata.files[platform].sha.toLowerCase();
const remoteBuildId = remoteClientMetadata.buildId;
const localBuildId = localClientMetadata.metadata.buildId;
if (remoteBuildId === localBuildId) {
if (localChecksum === releaseChecksum) {
logger.silly(`Local client binary is up to date. Skipping download.`);
return {
binary: localClientMetadata.binary,
buildId: localBuildId,
};
} else {
logger.warn(`Local metatada contains invalid checksum hash!`);
logger.warn(` Expected ${releaseChecksum}`);
logger.warn(` Received ${localChecksum}`);
}
} else {
if (localBuildId) {
logger.warn(`${DEPLOY_BINARY_NAME} is outdated! Expected ${remoteBuildId}, got ${localBuildId}`);
}
}
}
}
return {
binary: await downloadAndValidateBinary(remoteClientMetadata, DEPLOY_BINARY_NAME, DEPLOY_FOLDER, remoteClientMetadata.buildId, platform),
buildId: remoteClientMetadata.buildId,
};
}