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('IllegalState');

const { dir, url, ref } = workerData;

fs.removeSync(dir);
git
	.clone({
		dir,
		fs,
		http,
		url,
		ref,
		singleBranch: !ref || ref === 'master' || ref === 'main',
		onProgress: (...args) => port.postMessage({ cb: 'onProgress', args })
	})
	.then(() => port.postMessage(true));
