go-cqhttp
Version:
40 lines (39 loc) • 1.65 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.install = exports.download = void 0;
const fs_1 = require("fs");
const path_1 = require("path");
const tar_1 = require("tar");
const _1 = require(".");
const get_registry_1 = __importDefault(require("get-registry"));
const axios_1 = __importDefault(require("axios"));
const cwd = (0, path_1.resolve)(__dirname, '../bin');
async function download() {
const registry = (await (0, get_registry_1.default)()).replace(/\/$/, '');
await fs_1.promises.mkdir(cwd, { recursive: true });
const name = `${process.platform}-${process.arch}`;
const { version } = require('../package.json');
const url = `${registry}/@gocq/x-${name}/-/x-${name}-${version}.tgz`;
const { data: readable } = await axios_1.default.get(url, { responseType: 'stream' });
const writable = (0, tar_1.extract)({ cwd, newer: true, strip: 1 }, ['package/' + _1.basename]);
await new Promise((resolve, reject) => {
writable.on('close', resolve);
writable.on('error', reject);
readable.on('error', reject);
readable.pipe(writable);
});
}
exports.download = download;
async function install() {
if ((0, fs_1.existsSync)(_1.binary))
return;
if (!(0, fs_1.existsSync)(_1.backup)) {
await download();
}
await fs_1.promises.mkdir((0, path_1.dirname)(_1.binary), { recursive: true });
await fs_1.promises.copyFile(_1.backup, _1.binary);
}
exports.install = install;