Files
OctoLauncher/src/main/workers/gitPull.ts
T

57 lines
997 B
TypeScript

import { workerData, parentPort } from 'worker_threads';
import git from 'isomorphic-git';
import http from 'isomorphic-git/http/node';
import fs from 'fs-extra';
const port = parentPort;
if (!port) throw new Error('gitPull worker has no parentPort');
const { dir, remote, branch, ref } = workerData as {
dir: string;
remote: string;
branch: string;
ref?: string;
};
const onProgress = (...args: unknown[]) =>
port.postMessage({ cb: 'onProgress', args });
const run = async () => {
if (ref) {
await git.fetch({
fs,
http,
dir,
tags: true,
singleBranch: false,
onProgress
});
await git.checkout({ fs, dir, force: true, ref, onProgress });
return;
}
await git.checkout({
fs,
dir,
force: true,
ref: `${remote}/${branch}`,
onProgress
});
await git.pull({
fs,
http,
dir,
ref: branch,
singleBranch: true,
author: { name: 'Octo Launcher' },
onProgress
});
};
run()
.then(() => port.postMessage(true))
.catch(err => {
throw err;
});