#!/usr/bin/env node /*vim ft=JavaScript*/ 'use strict'; var cpuprofilify = require('../')() , format = require('util').format , minimist = require('minimist') , path = require('path') , fs = require('fs') , log = require('npmlog'); function onmsg(type) { return function logType() { log[type]('cpup', format.apply(null, arguments)); } } cpuprofilify.on('info', onmsg('info')); cpuprofilify.on('warn', onmsg('warn')); cpuprofilify.on('error', onmsg('error')); function usage() { var usageFile = path.join(__dirname, 'cpuprofilify-usage.txt'); fs.createReadStream(usageFile).pipe(process.stdout); } var flags = [ 'shortStack' , 'unresolveds' , 'sysinternals' , 'v8internals' , 'v8gc' ] , negatedFlags = flags.map(function negate(x) { return 'no' + x }) var argv = minimist(process.argv.slice(2) , { boolean: flags.concat(negatedFlags).concat([ 'help', 'type' ]) } ); if (argv.help) return usage(); var opts = {}; function considerFlag(name) { if (argv[name]) opts[name] = true; if (argv['no' + name]) opts[name] = false; } flags.forEach(considerFlag); var bufs = []; process.stdin .on('data', function ondata(d) { bufs.push(d); }) .on('error', onmsg('error')) .on('end', function onend() { var s = Buffer.concat(bufs).toString(); var trace = s.split('\n'); try { var res = cpuprofilify.convert(trace, opts) var json = JSON.stringify(res, null, 2); process.stdout.write(json); } catch (e) { console.error(e); } })