wip script updates

This commit is contained in:
Jiiks 2019-02-18 09:21:28 +02:00
parent ccff016820
commit 76e19c8469
6 changed files with 3375 additions and 2871 deletions

View File

@ -11,57 +11,81 @@ import editjson from 'gulp-json-editor';
import corepkg from './core/package';
import clientpkg from './client/package';
gulp.task('release-package', function () {
return pump([
gulp.src('package.json'),
editjson(function (mainpkg) {
delete mainpkg.main;
delete mainpkg.devDependencies;
delete mainpkg.scripts;
return mainpkg;
}),
gulp.dest('release')
]);
});
// core-release >
gulp.task('client', function () {
return pump([
gulp.src('client/dist/*.client-release.js'),
rename(`client.${clientpkg.version}.js`),
gulp.dest('release')
]);
});
gulp.task('core', function () {
gulp.task('core-main', function () {
return pump([
gulp.src('core/dist/main.js'),
inject.after("'use strict';\n", 'const PRODUCTION = true;\n'),
inject.after(`'use strict';\n`, 'const PRODUCTION = true;\n'),
rename(`core.${corepkg.version}.js`),
gulp.dest('release')
gulp.dest('release/core')
]);
});
gulp.task('sparkplug', function () {
gulp.task('core-pkg', function() {
return pump([
gulp.src('core/dist/sparkplug.js'),
gulp.dest('release')
gulp.src('package.json'),
editjson(function(pkg) {
pkg.main = `core.${corepkg.version}.js`;
delete pkg.devDependencies;
delete pkg.scripts;
return pkg;
}),
gulp.dest('release/core')
]);
});
gulp.task('core-modules', function () {
return pump([
gulp.src('core/dist/modules/**/*'),
copy('release', { prefix: 2 })
copy('release/core', { prefix: 2 })
]);
});
gulp.task('index', function () {
gulp.task('core-sparkplug', function () {
return pump([
file('index.js', `module.exports = require('./core.${corepkg.version}.js');`, {src: true}),
gulp.dest('release')
gulp.src('core/dist/sparkplug.js'),
gulp.dest('release/core')
]);
});
gulp.task('core-release', gulp.parallel('core-main', 'core-pkg', 'core-sparkplug', 'core-modules'));
// < core-release
// client
gulp.task('client-main', function () {
return pump([
gulp.src('client/dist/*.client-release.js'),
rename(`client.${clientpkg.version}.js`),
gulp.dest('release/client')
]);
});
gulp.task('client-pkg', function() {
return pump([
gulp.src('client/package.json'),
editjson(function (pkg) {
pkg.main = `client.${clientpkg.version}.js`;
delete pkg.scripts;
return pkg;
}),
gulp.dest('release/client')
]);
});
gulp.task('client-sparkplug', function () {
return pump([
gulp.src('core/dist/sparkplug.js'),
gulp.dest('release/client')
]);
});
gulp.task('client-release', gulp.parallel('client-main', 'client-pkg', 'client-sparkplug'));
// CSS Editor
gulp.task('css-editor', function () {
return pump([
gulp.src('csseditor/dist/csseditor-release.js'),
@ -70,8 +94,10 @@ gulp.task('css-editor', function () {
]);
});
// Deps
gulp.task('node-modules', function () {
return copydeps('.', 'release');
return copydeps('.', 'release/core');
});
gulp.task('node-sass-bindings', gulp.series(function () {
@ -79,7 +105,7 @@ gulp.task('node-sass-bindings', gulp.series(function () {
}, function () {
return pump([
gulp.src('other/node_sass_bindings/**/*'),
copy('release/node_modules/node-sass/vendor', { prefix: 2 })
copy('release/core/node_modules/node-sass/vendor', { prefix: 2 })
]);
}));
@ -88,14 +114,16 @@ gulp.task('keytar-bindings', gulp.series(function () {
}, function () {
return pump([
gulp.src('other/keytar/**/*'),
copy('release/node_modules/keytar/build/Release', {prefix: 2})
copy('release/core/node_modules/keytar/build/Release', { prefix: 2 })
]);
}));
gulp.task('dependencies', gulp.series('node-modules', gulp.parallel('node-sass-bindings', 'keytar-bindings')));
// Other
gulp.task('build-release', gulp.parallel('release-package', 'client', 'core', 'sparkplug', 'core-modules', 'index', 'css-editor', 'dependencies'));
gulp.task('release', gulp.series(function () {
gulp.task('del-release', function() {
return del(['release/**/*']);
}, 'build-release'));
});
gulp.task('dependencies', gulp.series('node-modules', gulp.parallel('node-sass-bindings', 'keytar-bindings')));
gulp.task('build-release', gulp.parallel('core-release', 'client-release', 'dependencies'));
gulp.task('tt', gulp.series('del-release', gulp.parallel('build-release')));

5892
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -68,7 +68,9 @@
"vue-loader": "^13.7.2",
"vue-material-design-icons": "^1.6.0",
"vue-template-compiler": "^2.5.17",
"webpack": "^3.12.0"
"webpack": "^3.12.0",
"archiver": "^3.0.0",
"hash-files": "^1.1.1"
},
"scripts": {
"install": "node scripts/install.js",
@ -88,6 +90,7 @@
"package_release": "node scripts/package-release.js",
"release": "npm run lint && npm run build_release && gulp release && npm run package_release",
"update_release": "npm run build_release && gulp build-release",
"tt": "gulp tt",
"inject": "node scripts/inject.js"
}
}

View File

@ -1,65 +1,117 @@
const fs = require('fs');
const path = require('path');
const archiver = require('archiver');
const hashfiles = require('hash-files');
const releaseStub = require('./releasestub.json');
const releasepkg = require('../release/package.json');
const mainpkg = require('../package.json');
const corepkg = require('../core/package.json');
const clientpkg = require('../client/package.json');
const editorpkg = require('../csseditor/package.json');
const corepkg = require('../release/core/package.json');
const clientpkg = require('../release/client/package.json');
// const editorpkg = require('../release/editor/package.json');
// core.zip
const core = new Promise((resolve, reject) => {
const core_zip = archiver('zip');
core_zip.file('./release/package.json', {name: 'package.json'});
core_zip.file('./release/index.js', {name: 'index.js'});
core_zip.file(`./release/core.${corepkg.version}.js`, {name: `core.${corepkg.version}.js`});
core_zip.file('./release/sparkplug.js', {name: 'sparkplug.js'});
core_zip.directory('./release/modules', 'modules');
core_zip.directory('./release/node_modules', 'node_modules');
const createArchiver = (level = 1) => {
return archiver('tar', {
gzip: true,
gzipOptions: {
level
}
});
};
const core_zip_stream = fs.createWriteStream('./release/core.zip');
core_zip.pipe(core_zip_stream);
async function hashFile(fn) {
return new Promise((resolve, reject) => {
hashfiles({ files: [fn], algorithm: 'sha256' }, (error, hash) => {
if (error) return reject();
resolve(hash);
});
});
}
core_zip.on('end', resolve);
core_zip.on('error', reject);
core_zip.finalize();
});
async function fileSize(fn) {
return new Promise((resolve, reject) => {
fs.stat(fn, (err, stats) => {
if (err) return reject();
resolve(stats['size']);
});
});
}
// client.zip
const client = new Promise((resolve, reject) => {
const client_zip = archiver('zip');
client_zip.file(`./release/client.${clientpkg.version}.js`, {name: `client.${clientpkg.version}.js`});
// Core
async function archiveCore(out = './release/core.tar.gz') {
return new Promise((resolve, reject) => {
console.log('packaging core');
const mainFn = `core.${corepkg.version}.js`;
const coreArchive = createArchiver();
coreArchive.file('./release/core/package.json', { name: 'package.json' });
coreArchive.file('./release/core/index.js', { name: 'index.js' });
coreArchive.file(`./release/core/${mainFn}`, { name: `${mainFn}` });
coreArchive.file('./release/core/sparkplug.js', { name: 'sparkplug.js' });
coreArchive.directory('./release/core/modules', 'modules');
coreArchive.directory('./release/core/node_modules', 'node_modules');
const client_zip_stream = fs.createWriteStream('./release/client.zip');
client_zip.pipe(client_zip_stream);
const coreZipStream = fs.createWriteStream(out);
coreArchive.pipe(coreZipStream);
client_zip.on('end', resolve);
client_zip.on('error', reject);
client_zip.finalize();
});
coreArchive.on('end', () => resolve(out));
coreArchive.on('error', reject);
coreArchive.finalize();
});
}
// csseditor.zip
const csseditor = new Promise((resolve, reject) => {
const csseditor_zip = archiver('zip');
csseditor_zip.directory('./release/csseditor', 'csseditor');
// Client
async function archiveClient(out = './release/client.tar.gz') {
return new Promise((resolve, reject) => {
console.log('packaging client');
const mainFn = `client.${clientpkg.version}.js`;
const clientArchive = createArchiver();
clientArchive.file('./release/client/package.json', { name: 'package.json' });
clientArchive.file('./release/core/sparkplug.js', { name: 'sparkplug.js' });
clientArchive.file(`./release/client/${mainFn}`, { name: `${mainFn}` });
const csseditor_zip_stream = fs.createWriteStream('./release/csseditor.zip');
csseditor_zip.pipe(csseditor_zip_stream);
const clientZipStream = fs.createWriteStream(out);
clientArchive.pipe(clientZipStream);
csseditor_zip.on('end', resolve);
csseditor_zip.on('error', reject);
csseditor_zip.finalize();
});
clientArchive.on('end', () => resolve(out));
clientArchive.on('error', reject);
clientArchive.finalize();
});
}
// full.zip
Promise.all([core, client, csseditor]).then(() => {
const full_zip = archiver('zip');
full_zip.file('./release/core.zip', {name: 'core.zip'});
full_zip.file('./release/client.zip', {name: 'client.zip'});
full_zip.file('./release/csseditor.zip', {name: 'csseditor.zip'});
async function pack() {
const coreArchive = await archiveCore();
const coreHash = await hashFile(coreArchive);
const coreSize = await fileSize(coreArchive);
console.log(`${coreArchive} ${coreSize} | ${coreHash}`);
const full_zip_stream = fs.createWriteStream('./release/full.zip');
full_zip.pipe(full_zip_stream);
full_zip.finalize();
});
const coreStub = releaseStub.files.find(f => f.id === 'core');
coreStub.name = 'core.tar.gz';
coreStub.version = corepkg.version;
coreStub.hash = coreHash;
coreStub.size = coreSize;
coreStub.remote = coreStub.remote.replace(':fn', 'core.tar.gz');
const clientArchive = await archiveClient();
const clientHash = await hashFile(clientArchive);
const clientSize = await fileSize(clientArchive);
console.log(`${clientArchive} ${clientSize} | ${clientHash}`);
const clientStub = releaseStub.files.find(f => f.id === 'client');
clientStub.name = 'client.tar.gz';
clientStub.version = clientpkg.version;
clientStub.hash = clientHash;
clientStub.size = clientSize;
clientStub.remote = clientStub.remote.replace(':fn', 'client.tar.gz');
releaseStub.mver = mainpkg.version;
releaseStub.files = [
coreStub,
clientStub
];
fs.writeFile('./release/releaseinfo.json', JSON.stringify(releaseStub, null, 4), (err) => {
console.log(`all done! Don't forget to update :rel`);
});
}
pack();

View File

@ -0,0 +1,65 @@
const fs = require('fs');
const path = require('path');
const archiver = require('archiver');
const releasepkg = require('../release/package.json');
const mainpkg = require('../package.json');
const corepkg = require('../core/package.json');
const clientpkg = require('../client/package.json');
const editorpkg = require('../csseditor/package.json');
// core.zip
const core = new Promise((resolve, reject) => {
const core_zip = archiver('zip');
core_zip.file('./release/package.json', {name: 'package.json'});
core_zip.file('./release/index.js', {name: 'index.js'});
core_zip.file(`./release/core.${corepkg.version}.js`, {name: `core.${corepkg.version}.js`});
core_zip.file('./release/sparkplug.js', {name: 'sparkplug.js'});
core_zip.directory('./release/modules', 'modules');
core_zip.directory('./release/node_modules', 'node_modules');
const core_zip_stream = fs.createWriteStream('./release/core.zip');
core_zip.pipe(core_zip_stream);
core_zip.on('end', resolve);
core_zip.on('error', reject);
core_zip.finalize();
});
// client.zip
const client = new Promise((resolve, reject) => {
const client_zip = archiver('zip');
client_zip.file(`./release/client.${clientpkg.version}.js`, {name: `client.${clientpkg.version}.js`});
const client_zip_stream = fs.createWriteStream('./release/client.zip');
client_zip.pipe(client_zip_stream);
client_zip.on('end', resolve);
client_zip.on('error', reject);
client_zip.finalize();
});
// csseditor.zip
const csseditor = new Promise((resolve, reject) => {
const csseditor_zip = archiver('zip');
csseditor_zip.directory('./release/csseditor', 'csseditor');
const csseditor_zip_stream = fs.createWriteStream('./release/csseditor.zip');
csseditor_zip.pipe(csseditor_zip_stream);
csseditor_zip.on('end', resolve);
csseditor_zip.on('error', reject);
csseditor_zip.finalize();
});
// full.zip
Promise.all([core, client, csseditor]).then(() => {
const full_zip = archiver('zip');
full_zip.file('./release/core.zip', {name: 'core.zip'});
full_zip.file('./release/client.zip', {name: 'client.zip'});
full_zip.file('./release/csseditor.zip', {name: 'csseditor.zip'});
const full_zip_stream = fs.createWriteStream('./release/full.zip');
full_zip.pipe(full_zip_stream);
full_zip.finalize();
});

30
scripts/releasestub.json Normal file
View File

@ -0,0 +1,30 @@
{
"mver": "",
"stub": "/master/installer/stub.js",
"files": [
{
"id": "client",
"name": "",
"version": "",
"size": "",
"remote": "/releases/download/:rel/:fn",
"hash": ""
},
{
"id": "core",
"name": "",
"version": "",
"size": "",
"remote": "/releases/download/:rel/:fn",
"hash": ""
},
{
"id": "editor",
"name": "",
"version": "",
"size": "210481",
"remote": "/releases/download/:rel/:fn",
"hash": ""
}
]
}