mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-01-19 22:23:33 +01:00
9497ee734f
This change is only cosmetic. Its aim is do make it easier to understand the async changes that are going to be merged later on. It was extracted from the original work from Ray Bellis. To verify that nothing has changed, you can run the following command on each file touched by this commit: npm install uglify-es diff --unified <(uglify-js --beautify bracketize <BEFORE.js>) <(uglify-js --beautify bracketize <AFTER.js>) This is a complete script that does the same automatically (works from a mercurial clone): ```bash #!/usr/bin/env bash set -eu REVISION=<THIS_REVISION> PARENT_REV=$(hg identify --rev "${REVISION}" --template '{p1rev}') FILE_LIST=$(hg status --no-status --change ${REVISION}) UGLIFYJS="node_modules/uglify-es/bin/uglifyjs" for FILE_NAME in ${FILE_LIST[@]}; do echo "Checking ${FILE_NAME}" diff --unified \ <("${UGLIFYJS}" --beautify bracketize <(hg cat --rev "${PARENT_REV}" "${FILE_NAME}")) \ <("${UGLIFYJS}" --beautify bracketize <(hg cat --rev "${REVISION}" "${FILE_NAME}")) done ```
97 lines
2.4 KiB
JavaScript
97 lines
2.4 KiB
JavaScript
/*
|
|
* This is a debug tool. It helps to extract all datas of a pad and move it from
|
|
* a productive environment and to a develop environment to reproduce bugs
|
|
* there. It outputs a dirtydb file
|
|
*/
|
|
|
|
if (process.argv.length != 3) {
|
|
console.error("Use: node extractPadData.js $PADID");
|
|
process.exit(1);
|
|
}
|
|
|
|
// get the padID
|
|
var padId = process.argv[2];
|
|
|
|
var db, dirty, padManager, pad, settings;
|
|
var neededDBValues = ["pad:"+padId];
|
|
|
|
var npm = require('../node_modules/ep_etherpad-lite/node_modules/npm');
|
|
var async = require('../node_modules/ep_etherpad-lite/node_modules/async');
|
|
|
|
async.series([
|
|
// load npm
|
|
function(callback) {
|
|
npm.load({}, function(er) {
|
|
if (er) {
|
|
console.error("Could not load NPM: " + er)
|
|
process.exit(1);
|
|
} else {
|
|
callback();
|
|
}
|
|
})
|
|
},
|
|
|
|
// load modules
|
|
function(callback) {
|
|
settings = require('../node_modules/ep_etherpad-lite/node/utils/Settings');
|
|
db = require('../node_modules/ep_etherpad-lite/node/db/DB');
|
|
dirty = require('../node_modules/ep_etherpad-lite/node_modules/ueberDB/node_modules/dirty')(padId + ".db");
|
|
callback();
|
|
},
|
|
|
|
// initialize the database
|
|
function (callback) {
|
|
db.init(callback);
|
|
},
|
|
|
|
// get the pad
|
|
function (callback) {
|
|
padManager = require('../node_modules/ep_etherpad-lite/node/db/PadManager');
|
|
|
|
padManager.getPad(padId, function(err, _pad) {
|
|
pad = _pad;
|
|
callback(err);
|
|
});
|
|
},
|
|
|
|
function (callback) {
|
|
// add all authors
|
|
var authors = pad.getAllAuthors();
|
|
for (var i = 0; i < authors.length; i++) {
|
|
neededDBValues.push('globalAuthor:' + authors[i]);
|
|
}
|
|
|
|
// add all revisions
|
|
var revHead = pad.head;
|
|
for (var i = 0; i <= revHead; i++) {
|
|
neededDBValues.push('pad:' + padId + ':revs:' + i);
|
|
}
|
|
|
|
// get all chat values
|
|
var chatHead = pad.chatHead;
|
|
for (var i = 0; i <= chatHead; i++) {
|
|
neededDBValues.push('pad:' + padId + ':chat:' + i);
|
|
}
|
|
|
|
// get and set all values
|
|
async.forEach(neededDBValues, function(dbkey, callback) {
|
|
db.db.db.wrappedDB.get(dbkey, function(err, dbvalue) {
|
|
if (err) { callback(err); return}
|
|
|
|
if (dbvalue && typeof dbvalue != 'object') {
|
|
dbvalue = JSON.parse(dbvalue); // if it's not json then parse it as json
|
|
}
|
|
|
|
dirty.set(dbkey, dbvalue, callback);
|
|
});
|
|
}, callback);
|
|
}
|
|
],
|
|
function (err) {
|
|
if (err) {
|
|
throw err;
|
|
} else {
|
|
console.log("finished");
|
|
process.exit();
|
|
}
|
|
});
|