linux.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. const fs = require('fs-extra');
  2. const path = require('path');
  3. const util = require('util');
  4. const stream = require('stream');
  5. const pipeline = util.promisify(stream.pipeline);
  6. const got = require('got');
  7. const decompress = require('decompress');
  8. const decompressTargz = require('decompress-targz');
  9. const distDir = path.resolve(__dirname, '../dist');
  10. const publicDir = `${distDir}/tmp/public`;
  11. const outDir = `${distDir}/linux`;
  12. const tempDownloadDir = `${distDir}/tmp/download`;
  13. async function main() {
  14. await fs.emptyDir(outDir);
  15. // перемещаем public на место
  16. if (await fs.pathExists(publicDir))
  17. await fs.move(publicDir, `${outDir}/public`);
  18. await fs.ensureDir(tempDownloadDir);
  19. const ipfsDecompressedFilename = `${tempDownloadDir}/go-ipfs/ipfs`;
  20. if (!await fs.pathExists(ipfsDecompressedFilename)) {
  21. // Скачиваем ipfs
  22. const ipfsRemoteUrl = 'https://dist.ipfs.io/go-ipfs/v0.4.18/go-ipfs_v0.4.18_linux-amd64.tar.gz';
  23. await pipeline(got.stream(ipfsRemoteUrl), fs.createWriteStream(`${tempDownloadDir}/ipfs.tar.gz`));
  24. console.log(`done downloading ${ipfsRemoteUrl}`);
  25. //распаковываем
  26. await decompress(`${tempDownloadDir}/ipfs.tar.gz`, `${tempDownloadDir}`, {
  27. plugins: [
  28. decompressTargz()
  29. ]
  30. });
  31. console.log('files decompressed');
  32. }
  33. // копируем в дистрибутив
  34. await fs.copy(ipfsDecompressedFilename, `${outDir}/ipfs`);
  35. console.log(`copied ${tempDownloadDir}/go-ipfs/ipfs to ${outDir}/ipfs`);
  36. //для development
  37. const devIpfsFile = path.resolve(__dirname, '../server/ipfs');
  38. if (!await fs.pathExists(devIpfsFile)) {
  39. await fs.copy(ipfsDecompressedFilename, devIpfsFile);
  40. }
  41. }
  42. main();