1.1.2•Updated a month ago
import { Command } from "jsr:@cliffy/command@1.0.0-rc.7";
import { execSync } from "node:child_process";
import { CLI_VERSION, HOST_URL } from "../config.ts";
import { fetchExternal } from "../utils/fetch_external.ts";
const upgraded_flag = "--viapak-just-finished-upgrading";
export default new Command()
.name('upgrade')
.description('Updates viapak to the latest version')
.option(
'--force',
'Download the latest version even if the client already has it'
)
.option(
upgraded_flag,
'Flag to indicate Viapak has just finished ugrading',
{
hidden: true,
action: () => {
console.log();
console.log(`Viapak has been updated to v${CLI_VERSION}`);
console.log();
Deno.exit(0);
},
})
.action(async ({ force, viapakJustFinishedUpgrading }) => {
if(viapakJustFinishedUpgrading) return;
console.log(`Current Viapak version: ${CLI_VERSION}`);
console.log(`Fetching the latest Viapak version...`);
const latest_version = await (await fetchExternal(HOST_URL + '/api/v1/viapak-version')).text();
console.log(`Latest Viapak version: ${latest_version}`);
if(latest_version == CLI_VERSION && !force) {
console.log(`\nViapak is up to date\n`);
Deno.exit(0);
}
console.log(execSync(`deno run -A -r=${HOST_URL} -q ${HOST_URL} upgrade ${upgraded_flag}`).toString());
});