1.1.2Updated a month ago
import { existsSync } from "jsr:@std/fs/exists";
import { IsSameVersionNumber, LatestVersionNumber } from "../utils/version_helpers.ts";
import { CLI_VERSION, HOST_URL, VIAPAK_META_PATH } from "./config.ts";
import { sleep } from "./utils/sleep.ts";
import { join } from "node:path";

const UPDATE_META_FILE = join(VIAPAK_META_PATH, 'update.meta');
const SIX_HOURS = 1000 * 60 * 60 * 6;

export const UpdateNotifier = async () => {
  let last_update_timestamp = 0;

  if(existsSync(UPDATE_META_FILE)) {
    last_update_timestamp = Number(Deno.readTextFileSync(UPDATE_META_FILE));
    if(Date.now() - SIX_HOURS < last_update_timestamp) return;
  }

  const cloud_viapak_version = await (await fetch(`${HOST_URL}/viapak-version`)).text();
  if(!IsSameVersionNumber(CLI_VERSION, cloud_viapak_version) && LatestVersionNumber([CLI_VERSION, cloud_viapak_version]) == cloud_viapak_version) {
    console.log();
    console.log(`Viapak has an update! [${CLI_VERSION} -> ${cloud_viapak_version}]`);
    console.log(`Run 'viapak update' to get it.`);
    console.log();
    await sleep(1000);
  }

  last_update_timestamp = Date.now();
  Deno.writeTextFileSync(UPDATE_META_FILE, last_update_timestamp.toString());
}