1
0
Fork 0
mirror of https://github.com/DanielnetoDotCom/YouPHPTube synced 2025-10-03 09:49:28 +02:00
Oinktube/node_modules/glightbox/development/package.js
Daniel Neto 59a20745e7 Update
2024-02-08 10:08:03 -03:00

117 lines
3.2 KiB
JavaScript

const fs = require('fs');
const os = require('os');
const jetpack = require('fs-jetpack');
const path = require('path');
const archiver = require('archiver');
const args = process.argv.slice(2);
const notify = require('./notifications');
const folder = path.join(__dirname, '/..');
/**
* Realease new version
* calling
* node development/package.js versionhere
* then npm publish
*/
async function createFolder() {
jetpack.remove(path.join(folder, 'glightbox-master.zip'));
const tmpfolder = path.join(os.tmpdir(), 'glightbox-master');
const newVersion = args[0];
await updateFileVersion({
file: path.join(folder, 'index.html'),
search: /download\/(.*)\/glightbox/g,
replace: newVersion
});
await updateFileVersion({
file: path.join(folder, 'package.json'),
search: /"version":\s?"(.*)",/g,
replace: newVersion
});
await updateFileVersion({
file: path.join(folder, 'README.md'),
search: /v([0-9-.]+)/g,
replace: newVersion
});
await updateFileVersion({
file: path.join(folder, 'src/js/glightbox.js'),
search: /version\s?=\s?'(.*)';/g,
replace: newVersion
});
jetpack.copy(folder, tmpfolder, {
matching: [
'!node_modules',
'!node_modules/**/*',
'!.git',
'!.git/**/*',
'!.github',
'!.github/**/*',
'!.vscode',
'!.idea',
'!.idea/**/*',
'!.nova',
'!.nova/**/*',
'!icons.zip',
'!.vscode/**/*',
'!*.psd',
'!.DS_Store'
]
});
notify('Created folder', `Created folder correctly`);
const zip = await createZip(tmpfolder).catch((error) => {
jetpack.remove(tmpfolder);
});
const folderName = path.basename(folder);
jetpack.remove(tmpfolder);
jetpack.move(zip, path.join(folder, folderName + '-master.zip'));
notify('Done', `Packaging process ended correctly`);
}
createFolder();
async function createZip(folder) {
return new Promise((resolve, reject) => {
const name = folder + '.zip';
const output = fs.createWriteStream(name);
const archive = archiver('zip', { zlib: { level: 9 } });
output.on('close', () => {
notify('Zipped', `zip archive was created correctly`);
resolve(name);
});
archive.on('error', (err) => {
notify('Package Error', `The was an error creating the zip.`);
reject(err);
});
archive.pipe(output);
archive.directory(folder, false);
archive.finalize();
});
}
async function updateFileVersion(data) {
return new Promise((resolve, reject) => {
jetpack.readAsync(data.file).then((str) => {
let regexp = new RegExp(data.search);
while ((matches = regexp.exec(str)) !== null) {
let foundLine = matches[0];
let newLine = foundLine.replace(matches[1], data.replace);
str = str.replace(foundLine, newLine);
}
jetpack.writeAsync(data.file, str).then(() => {
resolve(data.file);
});
});
});
}