Commit 08e14f2f authored by Leo Iannacone's avatar Leo Iannacone

jslinted code

parent a6c6a245
var config = require('./config.js')
, fs = require('fs')
, Tail = require('./tail.js')
'use strict';
function __watch_status_check_same_obj (obj1, obj2) {
if (obj1.status == obj2.status) {
if (obj1.distribution == obj2.distribution) {
if (obj1.hasOwnProperty('package') &&
obj2.hasOwnProperty('package'))
{
if (obj1.package == obj2.package)
return true;
return false
}
return true
var config = require('./config.js'),
fs = require('fs'),
utils = require('./utils.js'),
Tail = require('./tail.js');
function __watch_status_check_same_obj(obj1, obj2) {
if (obj1.status == obj2.status) {
if (obj1.distribution == obj2.distribution) {
if (obj1.hasOwnProperty('package') &&
obj2.hasOwnProperty('package')) {
if (obj1.package == obj2.package)
return true;
return false;
}
return true;
}
}
}
return false
return false;
}
// watcher on build_status
function __watch_status (socket, status) {
function __watch_status(socket, status) {
var watcher = new Tail(config.debomatic.jsonfile)
watcher.on('line', function(new_content) {
var data = null
try {
data = JSON.parse(new_content)
} catch (err) {
utils.errors_handler('Broadcaster:__watch_status:JSON.parse(new_content) - ', err, socket)
return
}
// looking for same status already in statuses lists
if (data.hasOwnProperty('success')) {
for(i = 0; i < status.length; i++) {
if (__watch_status_check_same_obj(data, status[i])) {
status.splice(i, 1)
break;
var watcher = new Tail(config.debomatic.jsonfile);
watcher.on('line', function (new_content) {
var data = null;
try {
data = JSON.parse(new_content);
} catch (err) {
utils.errors_handler('Broadcaster:__watch_status:JSON.parse(new_content) - ', err, socket);
return;
}
else
continue;
}
}
else {
status.push(data)
}
socket.emit(config.events.broadcast.status_update, data)
})
watcher.on('error', function(msg) {
socket.emit(config.events.error, msg)
})
// looking for same status already in statuses lists
if (data.hasOwnProperty('success')) {
for (var i = 0; i < status.length; i++) {
if (__watch_status_check_same_obj(data, status[i])) {
status.splice(i, 1);
break;
} else
continue;
}
} else {
status.push(data);
}
socket.emit(config.events.broadcast.status_update, data);
});
watcher.on('error', function (msg) {
socket.emit(config.events.error, msg);
});
}
// watcher on new distributions
function __watch_distributions (socket) {
fs.watch(config.debomatic.path, { persistent: true }, function (event, fileName) {
// wait half a second to get pool subdir created
setTimeout(function() {
utils.send_distributions(socket)
}, 500)
})
function __watch_distributions(socket) {
fs.watch(config.debomatic.path, {
persistent: true
}, function (event, fileName) {
// wait half a second to get pool subdir created
setTimeout(function () {
utils.send_distributions(socket);
}, 500);
});
}
function Broadcaster (sockets, status) {
var sockets = sockets
function Broadcaster(sockets, status) {
__watch_status(sockets, status)
__watch_status(sockets, status);
__watch_distributions(sockets)
__watch_distributions(sockets);
return {
return {
}
};
}
module.exports = Broadcaster
module.exports = Broadcaster;
This diff is collapsed.
'use strict';
/*
* Please DO NOT edit this file.
*
* Edit auto-generated "user.config.js" file instead.
* Edit auto-generated 'user.config.js' file instead.
*
*/
// #start config-auto-export
var config = {}
var config = {};
/*
* Configure host and port.
* Please for ports < 1000 use authbind. DO NOT RUN nodejs as root.
* $ authbind nodejs index.js
*/
config.host = 'localhost'
config.port = 3000
config.host = 'localhost';
config.port = 3000;
config.socket = {}
config.socket.log = false
config.socket = {};
config.socket.log = false;
config.debomatic = {}
config.debomatic.path = '/srv/debomatic-amd64'
config.debomatic.jsonfile = '/var/log/debomatic-json.log'
config.debomatic = {};
config.debomatic.path = '/srv/debomatic-amd64';
config.debomatic.jsonfile = '/var/log/debomatic-json.log';
config.routes = {}
config.routes.debomatic = '/debomatic'
config.routes.distribution = '/distribution'
config.routes.preferences = '/preferences'
config.routes = {};
config.routes.debomatic = '/debomatic';
config.routes.distribution = '/distribution';
config.routes.preferences = '/preferences';
config.web = {}
config.web.title = "Deb-o-Matic web.ui"
config.web.description = "This is a web interface for debomatic"
config.web = {};
config.web.title = 'Deb-o-Matic web.ui';
config.web.description = 'This is a web interface for debomatic';
// debomatic configuration exportable for web
config.web.debomatic = {}
config.web.debomatic.admin = {}
config.web.debomatic.admin.name = "Your Name"
config.web.debomatic.admin.email = "you AT debian DOT org" // please use this SPAMFREE form - it will be converted client side by javascript
config.web.debomatic.architecture = 'amd64'
config.web.debomatic.dput = {}
config.web.debomatic.dput.incoming = config.debomatic.path
config.web.debomatic.dput.host = config.host
config.web.debomatic.dput.login = "debomatic"
config.web.debomatic.dput.method = "scp"
config.web.debomatic.dput.unsigned_uploads = false
config.web.debomatic = {};
config.web.debomatic.admin = {};
config.web.debomatic.admin.name = 'Your Name';
config.web.debomatic.admin.email = 'you AT debian DOT org'; // please use this SPAMFREE form - it will be converted client side by javascript
config.web.debomatic.architecture = 'amd64';
config.web.debomatic.dput = {};
config.web.debomatic.dput.incoming = config.debomatic.path;
config.web.debomatic.dput.host = config.host;
config.web.debomatic.dput.login = 'debomatic';
config.web.debomatic.dput.method = 'scp';
config.web.debomatic.dput.unsigned_uploads = false;
// default ui settings
config.web.preferences = {}
config.web.preferences.autoscroll = true
config.web.preferences.header = true
config.web.preferences.sidebar = true
config.web.preferences.glossy_theme = true
config.web.preferences.file_background = true
config.web.preferences.file_fontsize = 13 // valid values are [13..16]
config.web.preferences.debug = 0 // debug level - 0 means disabled
config.web.preferences = {};
config.web.preferences.autoscroll = true;
config.web.preferences.header = true;
config.web.preferences.sidebar = true;
config.web.preferences.glossy_theme = true;
config.web.preferences.file_background = true;
config.web.preferences.file_fontsize = 13; // valid values are [13..16]
config.web.preferences.debug = 0; // debug level - 0 means disabled
// #end config-auto-export
// DO NOT TOUCH these ones
config.version = '0.2.2'
config.version = '0.2.2';
// A simple function to quickly have
// get and set strings for client events
function _event_get_set(event_name) {
return {
set: event_name,
get: 'get_' + event_name
}
return {
set: event_name,
get: 'get_' + event_name
};
}
config.events = {}
config.events.error = 'error'
config.events.broadcast = {}
config.events.broadcast.distributions = 'distributions'
config.events.broadcast.status_update = 'status_update'
config.events = {};
config.events.error = 'error';
config.events.broadcast = {};
config.events.broadcast.distributions = 'distributions';
config.events.broadcast.status_update = 'status_update';
config.events.client = {}
config.events.client.distribution_packages = _event_get_set('distribution_packages')
config.events.client.distribution_packages.status = 'package_status'
config.events.client.package_files_list = _event_get_set('package_files_list')
config.events.client.file = _event_get_set('file')
config.events.client.file_newcontent = 'file_newcontent'
config.events.client.status = 'status'
config.events.client = {};
config.events.client.distribution_packages = _event_get_set('distribution_packages');
config.events.client.distribution_packages.status = 'package_status';
config.events.client.package_files_list = _event_get_set('package_files_list');
config.events.client.file = _event_get_set('file');
config.events.client.file_newcontent = 'file_newcontent';
config.events.client.status = 'status';
// debomatic status according with JSONLogger.py module
config.status = {}
config.status.build = 'build'
config.status.create = 'create'
config.status.update = 'update'
config.status.success = true
config.status.fail = false
config.status = {};
config.status.build = 'build';
config.status.create = 'create';
config.status.update = 'update';
config.status.success = true;
config.status.fail = false;
// read user configuration and merge it
/*
* update object1 with object2 values
*/
function _merge(object1, object2) {
var result = {}
for (p in object1) {
if (object2.hasOwnProperty(p)) {
if (typeof object1[p] === 'object' && typeof object2[p] === 'object') {
result[p] = _merge(object1[p], object2[p])
}
else {
result[p] = object2[p]
}
var result = {};
for (var p in object1) {
if (object2.hasOwnProperty(p)) {
if (typeof object1[p] === 'object' && typeof object2[p] === 'object') {
result[p] = _merge(object1[p], object2[p]);
} else {
result[p] = object2[p];
}
} else {
result[p] = object1[p];
}
}
else {
result[p] = object1[p]
}
}
return result
return result;
}
try {
var Parser = require('./parser.js')
var parser = new Parser()
var user_config = parser.getUserConfig()
if (user_config) {
console.log("Reading user configutation ...")
config = _merge(config, require(user_config))
}
else {
console.log("No user config specified. Using global settings.")
}
var Parser = require('./parser.js');
var parser = new Parser();
var user_config = parser.getUserConfig();
if (user_config) {
console.log('Reading user configutation ...');
config = _merge(config, require(user_config));
} else {
console.log('No user config specified. Using global settings.');
}
} catch (err) {
if (err.code == 'MODULE_NOT_FOUND') {
console.log("File %s not found.", user_config)
process.exit(1)
}
else {
console.error("Error reading user configutation", err);
process.exit(1)
}
if (err.code == 'MODULE_NOT_FOUND') {
console.log('File %s not found.', user_config);
process.exit(1);
} else {
console.error('Error reading user configutation', err);
process.exit(1);
}
} finally {
// export some variable
config.web.paths = config.routes
config.web.events = config.events
config.web.status = config.status
config.web.host = config.host
module.exports = config
// export some variable
config.web.paths = config.routes;
config.web.events = config.events;
config.web.status = config.status;
config.web.host = config.host;
module.exports = config;
}
function Parser()
{
'use strict';
var args = process.argv.slice(2);
function Parser() {
var help = function() {
console.log("\
var args = process.argv.slice(2);
var help = function () {
console.log('\
Usage: %s [-c config]\n\
-h print this help \n\
-c set user configuration file",
process.argv[1].split('/').pop());
process.exit(0);
}
-c set user configuration file',
process.argv[1].split('/').pop());
this.getUserConfig = function() {
var configFile = null;
args.forEach(function (val, index) {
if (val == '-c') {
configFile = args[index+1]
return
}
})
if (configFile)
return process.cwd() + '/' + configFile;
else
return null
}
process.exit(0);
};
args.forEach(function (val, index) {
if (val == '-h') {
help()
}
})
this.getUserConfig = function () {
var configFile = null;
args.forEach(function (val, index) {
if (val == '-c') {
configFile = args[index + 1];
return;
}
});
if (configFile)
return process.cwd() + '/' + configFile;
else
return null;
};
args.forEach(function (val, index) {
if (val == '-h') {
help();
}
});
}
module.exports = Parser
\ No newline at end of file
module.exports = Parser
var fs =require('fs')
, Tail = require('tail').Tail
'use strict';
Tail.prototype.watchEvent = function(e) {
var _this = this;
var fs = require('fs'),
Tail = require('tail').Tail;
if (e === 'change') {
return fs.stat(this.filename, function(err, stats) {
if (err) {
_this.emit('error', err);
}
if (stats.size < _this.pos) {
_this.pos = stats.size;
}
if (stats.size > _this.pos) {
_this.queue.push({
start: _this.pos,
end: stats.size
Tail.prototype.watchEvent = function (e) {
var _this = this;
if (e === 'change') {
return fs.stat(this.filename, function (err, stats) {
if (err) {
_this.emit('error', err);
}
if (stats.size < _this.pos) {
_this.pos = stats.size;
}
if (stats.size > _this.pos) {
_this.queue.push({
start: _this.pos,
end: stats.size
});
_this.pos = stats.size;
if (_this.queue.length === 1) {
return _this.internalDispatcher.emit('next');
}
}
});
_this.pos = stats.size;
if (_this.queue.length === 1) {
return _this.internalDispatcher.emit("next");
}
}
});
} else if (e === 'rename') {
this.unwatch();
_this.emit('error', "File " + this.filename + " deleted.");
}
} else if (e === 'rename') {
this.unwatch();
_this.emit('error', 'File ' + this.filename + ' deleted.');
}
};
Tail.prototype.close = function() {
this.unwatch()
}
Tail.prototype.close = function () {
this.unwatch();
};
module.exports = Tail
\ No newline at end of file
module.exports = Tail;
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment