app.get(app.pathPrefix + 'export', app.checkId, function (req, res, next) { var spaceFile = app.paths.nudgepad + app.domain + '.space' var optionsFile = app.paths.nudgepad + '.options.space' var options = new Space() options.set('ignore app.log.txt', '') options.set('ignore projectPid.txt', '') options.set('ignore requests.log.txt', '') options.set('ignore monPid.txt', '') fs.writeFileSync(optionsFile, options.toString()) exec('space ' + app.paths.project + ' ' + spaceFile + ' ' + optionsFile, function () { res.set('Content-Type', 'text/plain') res.sendfile(spaceFile, function () { fs.unlink(spaceFile) fs.unlink(optionsFile) }) }) })
socket.on('watch', function (filename, fn) { console.log('%s watching %s', socket.id, filename) if (!watchers.get(filename)) { watchers.set(filename, new Space()) watchFile(filename) } watchers.get(filename).push(socket.id) fn('you are now watching ' + filename) })
async.mapSeries(paths, fileStats, function(err, stats){ if (err) return callback(err) // stats is now an array of stats for each file for (var i in files) { space.set(files[i], stats[i]) } callback(false, space) })
fs.stat(path, function (err, stat) { // Quit on error if (err) return callback(err) if (stat.isDirectory()) return folderStats(path + '/', callback) var space = new Space() space.set('mtime', stat.mtime.getTime()) space.set('size', (stat.size/1000000).toFixed(1) + 'MB') space.set('bytes', stat.size) space.set('age', ((new Date().getTime() - stat.ctime.getTime())/86400000).toFixed(1) + 'D') space.set('freshness', ((new Date().getTime() - stat.mtime.getTime())/1000).toFixed(0) + 'S') space.set('timeSinceLastChange', ((new Date().getTime() - stat.mtime.getTime())/86400000).toFixed(1) + 'D') space.set('oneliner', space.get('bytes') + ' ' + space.get('mtime')) callback(false, space) })
app.get(app.pathPrefix + 'status', app.checkId, function(req, res, next) { var mem = process.memoryUsage() var load = os.loadavg() space = new Space() space.set('domain', app.domain) space.set('ip', app.ip) space.set('uptime', (process.uptime()) + 's') space.set('os_release', os.release()) space.set('platform', os.platform()) space.set('hostname', os.hostname()) space.set('speedcoach', speedcoach.times()) space.set('title', process.title) space.set('pid', process.pid) space.set('node_version', process.version) space.set('arch', process.arch) space.set('freemem', (os.freemem()/1000000).toFixed(1) + 'MB') space.set('totalmem', (os.totalmem()/1000000).toFixed(1) + 'MB') space.set('machine_uptime', (os.uptime()/86400).toFixed(2) + ' days') space.set('process_memory.rss', (mem.rss/1000000).toFixed(1) + 'MB') space.set('process_memory.heapTotal', (mem.heapTotal/1000000).toFixed(1) + 'MB') space.set('process_memory.heapUsed', (mem.heapUsed/1000000).toFixed(1) + 'MB') space.set('load-1-min', load[0].toFixed(2)) space.set('load-5-min', load[1].toFixed(2)) space.set('load-15-min', load[2].toFixed(2)) res.set('Content-Type', 'text/plain') return res.send(space.toString()) })
_.each(tools, function (toolName) { var toolDir = toolsPath + toolName + '/' // Ignore if no package.space file if (!fs.existsSync(toolDir + 'package.space', 'utf8')) return true var settings = new Space(fs.readFileSync(toolDir + 'package.space', 'utf8')) toolInfo.set(toolName, settings) var files = settings.get('js').split(/ /g) _.each(files, function (filename) { if (filename.match('.js')) { code.js += fs.readFileSync(toolDir + filename, 'utf8') includes.js += ' <script type="text/javascript" src="/nudgepad/tools/' + toolName + '/' + filename + '?t=' + new Date().getTime() + '"></script>\n' } // directory else { var subfiles = _.without(fs.readdirSync(toolDir + filename), '.DS_Store') _.each(subfiles, function (subfile) { code.js += fs.readFileSync(toolDir + filename + '/' + subfile, 'utf8') includes.js += ' <script type="text/javascript" src="/nudgepad/tools/' + toolName + '/' + filename + '/' + subfile + '"></script>\n' }) } }) // CSS is optional files = [] if (settings.get('css')) files = settings.get('css').split(/ /g) _.each(files, function (filename) { if (filename.match('.css')) { code.css += fs.readFileSync(toolDir + filename, 'utf8') includes.css += ' <link rel="stylesheet" href="/nudgepad/tools/' + toolName + '/' + filename + '?t=' + new Date().getTime() + '" type="text/css"/>\n' } // directory else { var subfiles = _.without(fs.readdirSync(toolDir + filename), '.DS_Store') _.each(subfiles, function (subfile) { code.css += fs.readFileSync(toolDir + filename + '/' + subfile, 'utf8') includes.css += ' <link rel="stylesheet" href="/nudgepad/tools/' + toolName + '/' + filename + '/' + subfile + '" type="text/css"/>\n' }) } }) // HTML is optional files = [] if (settings.get('html')) files = settings.get('html').split(/ /g) _.each(files, function (filename) { if (filename.match('.html')) { code.html += fs.readFileSync(toolDir + filename, 'utf8') } // directory else { var subfiles = _.without(fs.readdirSync(toolDir + filename), '.DS_Store') _.each(subfiles, function (subfile) { code.html += fs.readFileSync(toolDir + filename + '/' + subfile, 'utf8') }) } }) })
var fs = require('fs'), Space = require('space'), beautify = require('js-beautify').js_beautify var pack = new Space(fs.readFileSync('package.space', 'utf8')) var v = pack.get('version').split(/\./g) if (process.argv[2]) var version = process.argv[2] else var version = [v[0],v[1],parseFloat(v[2]) + 1].join('.') pack.set('version', version) fs.writeFileSync('package.space', pack.toString(), 'utf8') fs.writeFileSync('package.json', beautify(pack.toJSON(), { indent_size: 2 }), 'utf8')