Добавлена сборка релизов, ipfs удален
This commit is contained in:
@@ -1,51 +0,0 @@
|
|||||||
const fs = require('fs-extra');
|
|
||||||
const path = require('path');
|
|
||||||
const util = require('util');
|
|
||||||
const stream = require('stream');
|
|
||||||
const pipeline = util.promisify(stream.pipeline);
|
|
||||||
|
|
||||||
const axios = require('axios');
|
|
||||||
const FileDecompressor = require('../server/core/FileDecompressor');
|
|
||||||
|
|
||||||
const distDir = path.resolve(__dirname, '../dist');
|
|
||||||
const publicDir = `${distDir}/tmp/public`;
|
|
||||||
const outDir = `${distDir}/linux`;
|
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
//ipfs
|
|
||||||
const ipfsDecompressedFilename = `${tempDownloadDir}/go-ipfs/ipfs`;
|
|
||||||
if (!await fs.pathExists(ipfsDecompressedFilename)) {
|
|
||||||
// Скачиваем ipfs
|
|
||||||
const ipfsRemoteUrl = 'https://dist.ipfs.io/go-ipfs/v0.4.18/go-ipfs_v0.4.18_linux-amd64.tar.gz';
|
|
||||||
|
|
||||||
const res = await axios.get(ipfsRemoteUrl, {responseType: 'stream'})
|
|
||||||
await pipeline(res.data, fs.createWriteStream(`${tempDownloadDir}/ipfs.tar.gz`));
|
|
||||||
console.log(`done downloading ${ipfsRemoteUrl}`);
|
|
||||||
|
|
||||||
//распаковываем
|
|
||||||
console.log(await decomp.unpackTarZZ(`${tempDownloadDir}/ipfs.tar.gz`, tempDownloadDir));
|
|
||||||
console.log('files decompressed');
|
|
||||||
}
|
|
||||||
|
|
||||||
// копируем в дистрибутив
|
|
||||||
await fs.copy(ipfsDecompressedFilename, `${outDir}/ipfs`);
|
|
||||||
console.log(`copied ${tempDownloadDir}/go-ipfs/ipfs to ${outDir}/ipfs`);
|
|
||||||
//для development
|
|
||||||
const devIpfsFile = path.resolve(__dirname, '../server/ipfs');
|
|
||||||
if (!await fs.pathExists(devIpfsFile)) {
|
|
||||||
await fs.copy(ipfsDecompressedFilename, devIpfsFile);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
main();
|
|
||||||
51
build/prepkg.js
Normal file
51
build/prepkg.js
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
const fs = require('fs-extra');
|
||||||
|
const path = require('path');
|
||||||
|
const { execSync } = require('child_process');
|
||||||
|
|
||||||
|
const showdown = require('showdown');
|
||||||
|
|
||||||
|
const platform = process.argv[2];
|
||||||
|
|
||||||
|
const distDir = path.resolve(__dirname, '../dist');
|
||||||
|
const tmpDir = `${distDir}/tmp`;
|
||||||
|
const publicDir = `${tmpDir}/public`;
|
||||||
|
const outDir = `${distDir}/${platform}`;
|
||||||
|
|
||||||
|
async function build() {
|
||||||
|
if (!platform)
|
||||||
|
throw new Error(`Please set platform`);
|
||||||
|
|
||||||
|
await fs.emptyDir(outDir);
|
||||||
|
|
||||||
|
//добавляем readme в релиз
|
||||||
|
let readme = await fs.readFile(path.resolve(__dirname, '../README.md'), 'utf-8');
|
||||||
|
const converter = new showdown.Converter();
|
||||||
|
readme = converter.makeHtml(readme);
|
||||||
|
await fs.writeFile(`${outDir}/readme.html`, readme);
|
||||||
|
|
||||||
|
// перемещаем public на место
|
||||||
|
if (await fs.pathExists(publicDir)) {
|
||||||
|
|
||||||
|
const zipFile = `${tmpDir}/public.zip`;
|
||||||
|
const jsonFile = `${distDir}/public.json`;//distDir !!!
|
||||||
|
|
||||||
|
await fs.remove(zipFile);
|
||||||
|
execSync(`zip -r ${zipFile} .`, {cwd: publicDir, stdio: 'inherit'});
|
||||||
|
|
||||||
|
const data = (await fs.readFile(zipFile)).toString('base64');
|
||||||
|
await fs.writeFile(jsonFile, JSON.stringify({data}));
|
||||||
|
} else {
|
||||||
|
throw new Error(`publicDir: ${publicDir} does not exist`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
try {
|
||||||
|
await build();
|
||||||
|
} catch(e) {
|
||||||
|
console.error(e);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
||||||
33
build/release.js
Normal file
33
build/release.js
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
const fs = require('fs-extra');
|
||||||
|
const path = require('path');
|
||||||
|
const { execSync } = require('child_process');
|
||||||
|
|
||||||
|
const pckg = require('../package.json');
|
||||||
|
|
||||||
|
const distDir = path.resolve(__dirname, '../dist');
|
||||||
|
const outDir = `${distDir}/release`;
|
||||||
|
|
||||||
|
async function makeRelease(target) {
|
||||||
|
const srcDir = `${distDir}/${target}`;
|
||||||
|
|
||||||
|
if (await fs.pathExists(srcDir)) {
|
||||||
|
const zipFile = `${outDir}/${pckg.name}-${pckg.version}-${target}.zip`;
|
||||||
|
|
||||||
|
execSync(`zip -r ${zipFile} .`, {cwd: srcDir, stdio: 'inherit'});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
try {
|
||||||
|
await fs.emptyDir(outDir);
|
||||||
|
await makeRelease('win');
|
||||||
|
await makeRelease('linux');
|
||||||
|
await makeRelease('linux-arm64');
|
||||||
|
await makeRelease('macos');
|
||||||
|
} catch(e) {
|
||||||
|
console.error(e);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
||||||
45
build/win.js
45
build/win.js
@@ -1,45 +0,0 @@
|
|||||||
const fs = require('fs-extra');
|
|
||||||
const path = require('path');
|
|
||||||
const util = require('util');
|
|
||||||
const stream = require('stream');
|
|
||||||
const pipeline = util.promisify(stream.pipeline);
|
|
||||||
|
|
||||||
const axios = require('axios');
|
|
||||||
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);
|
|
||||||
|
|
||||||
//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';
|
|
||||||
|
|
||||||
const res = await axios.get(ipfsRemoteUrl, {responseType: 'stream'})
|
|
||||||
await pipeline(res.data, 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();
|
|
||||||
49
package-lock.json
generated
49
package-lock.json
generated
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "Liberama",
|
"name": "liberama",
|
||||||
"version": "0.12.2",
|
"version": "0.12.2",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "Liberama",
|
"name": "liberama",
|
||||||
"version": "0.12.2",
|
"version": "0.12.2",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "CC0-1.0",
|
"license": "CC0-1.0",
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
"zip-stream": "^4.1.0"
|
"zip-stream": "^4.1.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"Liberama": "server/index.js"
|
"liberama": "server/index.js"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.20.5",
|
"@babel/core": "^7.20.5",
|
||||||
@@ -62,6 +62,7 @@
|
|||||||
"html-webpack-plugin": "^5.5.0",
|
"html-webpack-plugin": "^5.5.0",
|
||||||
"mini-css-extract-plugin": "^2.7.2",
|
"mini-css-extract-plugin": "^2.7.2",
|
||||||
"pkg": "^5.8.0",
|
"pkg": "^5.8.0",
|
||||||
|
"showdown": "^2.1.0",
|
||||||
"terser-webpack-plugin": "^5.3.6",
|
"terser-webpack-plugin": "^5.3.6",
|
||||||
"vue-eslint-parser": "^9.1.0",
|
"vue-eslint-parser": "^9.1.0",
|
||||||
"vue-loader": "^17.0.1",
|
"vue-loader": "^17.0.1",
|
||||||
@@ -8774,6 +8775,31 @@
|
|||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/showdown": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/showdown/-/showdown-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"commander": "^9.0.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"showdown": "bin/showdown.js"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "individual",
|
||||||
|
"url": "https://www.paypal.me/tiviesantos"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/showdown/node_modules/commander": {
|
||||||
|
"version": "9.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz",
|
||||||
|
"integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": "^12.20.0 || >=14"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/side-channel": {
|
"node_modules/side-channel": {
|
||||||
"version": "1.0.4",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
|
||||||
@@ -17068,6 +17094,23 @@
|
|||||||
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"showdown": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/showdown/-/showdown-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"commander": "^9.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"commander": {
|
||||||
|
"version": "9.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz",
|
||||||
|
"integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"side-channel": {
|
"side-channel": {
|
||||||
"version": "1.0.4",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
|
||||||
|
|||||||
@@ -10,10 +10,14 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "nodemon --inspect --ignore server/.liberama --ignore client --exec 'node server'",
|
"dev": "nodemon --inspect --ignore server/.liberama --ignore client --exec 'node server'",
|
||||||
"build:client": "webpack --config build/webpack.prod.config.js",
|
"build:client": "webpack --config build/webpack.prod.config.js",
|
||||||
"build:linux": "npm run build:client && node build/linux && pkg -t node16-linux-x64 -C GZip -o dist/linux/liberama .",
|
"build:linux": "npm run build:client && node build/prepkg.js linux && pkg -t node16-linux-x64 -C GZip -o dist/linux/liberama .",
|
||||||
"build:win": "npm run build:client && node build/win && pkg -t node16-win-x64 -C GZip -o dist/win/liberama .",
|
"build:linux-arm64": "npm run build:client && node build/prepkg.js linux-arm64 && pkg -t node16-linuxstatic-arm64 -C GZip -o dist/linux-arm64/liberama .",
|
||||||
|
"build:win": "npm run build:client && node build/prepkg.js win && pkg -t node16-win-x64 -C GZip -o dist/win/liberama .",
|
||||||
|
"build:macos": "npm run build:client && node build/prepkg.js macos && pkg -t node16-macos-x64 -C GZip -o dist/macos/liberama .",
|
||||||
"lint": "eslint --ext=.js,.vue client server",
|
"lint": "eslint --ext=.js,.vue client server",
|
||||||
"build:client-dev": "webpack --config build/webpack.dev.config.js",
|
"build:client-dev": "webpack --config build/webpack.dev.config.js",
|
||||||
|
"build:all": "npm run build:linux && npm run build:win && npm run build:macos && npm run build:linux-arm64",
|
||||||
|
"release": "npm run build:all && node build/release.js",
|
||||||
"postinstall": "npm run build:client-dev && node build/linux"
|
"postinstall": "npm run build:client-dev && node build/linux"
|
||||||
},
|
},
|
||||||
"bin": "server/index.js",
|
"bin": "server/index.js",
|
||||||
@@ -36,6 +40,7 @@
|
|||||||
"html-webpack-plugin": "^5.5.0",
|
"html-webpack-plugin": "^5.5.0",
|
||||||
"mini-css-extract-plugin": "^2.7.2",
|
"mini-css-extract-plugin": "^2.7.2",
|
||||||
"pkg": "^5.8.0",
|
"pkg": "^5.8.0",
|
||||||
|
"showdown": "^2.1.0",
|
||||||
"terser-webpack-plugin": "^5.3.6",
|
"terser-webpack-plugin": "^5.3.6",
|
||||||
"vue-eslint-parser": "^9.1.0",
|
"vue-eslint-parser": "^9.1.0",
|
||||||
"vue-loader": "^17.0.1",
|
"vue-loader": "^17.0.1",
|
||||||
|
|||||||
Reference in New Issue
Block a user