lasthourcloud/src/routes/update.json.ts
Andras Bacsai b4a418dded - Rename error handler.
- Truncate errors.
- Better error tags, release version etc.
2022-02-14 09:28:37 +01:00

76 lines
2.0 KiB
TypeScript

import { dev } from '$app/env';
import { asyncExecShell, version } from '$lib/common';
import { asyncSleep } from '$lib/components/common';
import { ErrorHandler } from '$lib/database';
import type { RequestHandler } from '@sveltejs/kit';
import compare from 'compare-versions';
import got from 'got';
export const get: RequestHandler = async () => {
try {
const currentVersion = version;
const versions = await got
.get(`https://get.coollabs.io/versions.json?appId=${process.env['COOLIFY_APP_ID']}`)
.json();
const latestVersion = dev ? '10.0.0' : versions['coolify'].main.version;
const isUpdateAvailable = compare(latestVersion, currentVersion);
return {
body: {
isUpdateAvailable: isUpdateAvailable === 1,
latestVersion
}
};
} catch (error) {
return ErrorHandler(error);
}
};
export const post: RequestHandler = async (event) => {
const { type, latestVersion } = await event.request.json();
if (type === 'pull') {
try {
if (!dev) {
await asyncExecShell(`docker pull coollabsio/coolify:${latestVersion}`);
return {
status: 200,
body: {}
};
} else {
await asyncExecShell(`docker pull coollabsio/coolify:${latestVersion}`);
await asyncSleep(2000);
return {
status: 200,
body: {}
};
}
} catch (error) {
return ErrorHandler(error);
}
} else if (type === 'update') {
try {
if (!dev) {
await asyncExecShell(`env | grep COOLIFY > .env`);
await asyncExecShell(
`docker run --rm -tid --env-file .env -v /var/run/docker.sock:/var/run/docker.sock -v coolify-db coollabsio/coolify:${latestVersion} /bin/sh -c "env | grep COOLIFY > .env && echo 'TAG=${latestVersion}' >> .env && docker stop -t 0 coolify coolify-redis && docker rm coolify coolify-redis && docker compose up -d --force-recreate"`
);
return {
status: 200,
body: {}
};
} else {
console.log(latestVersion);
await asyncSleep(2000);
return {
status: 200,
body: {}
};
}
} catch (error) {
return ErrorHandler(error);
}
}
return {
status: 500
};
};