12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- const fs = require('fs-extra');
- const path = require('path');
- const util = require('util');
- const stream = require('stream');
- const pipeline = util.promisify(stream.pipeline);
- const got = require('got');
- const FileDecompressor = require('../server/core/FileDecompressor');
- const distDir = path.resolve(__dirname, '../dist');
- const publicDir = `${distDir}/tmp/public`;
- const outDir = `${distDir}/win`;
- const tempDownloadDir = `${distDir}/tmp/download`;
- async function main() {
- const decomp = new FileDecompressor();
- await fs.emptyDir(outDir);
- // перемещаем public на место
- if (await fs.pathExists(publicDir))
- await fs.move(publicDir, `${outDir}/public`);
- await fs.ensureDir(tempDownloadDir);
- //sqlite3
- const sqliteRemoteUrl = 'https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.0.4/node-v64-win32-x64.tar.gz';
- const sqliteDecompressedFilename = `${tempDownloadDir}/node-v64-win32-x64/node_sqlite3.node`;
- if (!await fs.pathExists(sqliteDecompressedFilename)) {
- // Скачиваем node_sqlite3.node для винды, т.к. pkg не включает его в сборку
- await pipeline(got.stream(sqliteRemoteUrl), fs.createWriteStream(`${tempDownloadDir}/sqlite.tar.gz`));
- console.log(`done downloading ${sqliteRemoteUrl}`);
- //распаковываем
- console.log(await decomp.unpackTarZZ(`${tempDownloadDir}/sqlite.tar.gz`, tempDownloadDir));
- console.log('files decompressed');
- }
- // копируем в дистрибутив
- await fs.copy(sqliteDecompressedFilename, `${outDir}/node_sqlite3.node`);
- console.log(`copied ${sqliteDecompressedFilename} to ${outDir}/node_sqlite3.node`);
- //ipfs
- const ipfsDecompressedFilename = `${tempDownloadDir}/go-ipfs/ipfs.exe`;
- if (!await fs.pathExists(ipfsDecompressedFilename)) {
- // Скачиваем ipfs
- const ipfsRemoteUrl = 'https://dist.ipfs.io/go-ipfs/v0.4.18/go-ipfs_v0.4.18_windows-amd64.zip';
- await pipeline(got.stream(ipfsRemoteUrl), fs.createWriteStream(`${tempDownloadDir}/ipfs.zip`));
- console.log(`done downloading ${ipfsRemoteUrl}`);
- //распаковываем
- console.log(await decomp.unpack(`${tempDownloadDir}/ipfs.zip`, tempDownloadDir));
- console.log('files decompressed');
- }
- // копируем в дистрибутив
- await fs.copy(ipfsDecompressedFilename, `${outDir}/ipfs.exe`);
- console.log(`copied ${ipfsDecompressedFilename} to ${outDir}/ipfs.exe`);
- }
- main();
|