mirror of
https://github.com/davidmarkclements/0x.git
synced 2026-01-18 14:38:23 +00:00
69 lines
2.0 KiB
JavaScript
69 lines
2.0 KiB
JavaScript
var fs = require('fs')
|
|
var path = require('path')
|
|
var minimist = require('minimist')
|
|
var multistream = require('multistream')
|
|
var concat = require('concat-stream')
|
|
var browserify = require('browserify')
|
|
var split = require('split2')
|
|
var convert = require('./stack-convert')
|
|
var gen = require('./gen')
|
|
var debug = require('debug')('0x:cmd')
|
|
|
|
module.exports = function (argv) {
|
|
var args = minimist(argv)
|
|
var cmd = args.c || args.cmd
|
|
|
|
if (cmd === 'help') {
|
|
return fs.createReadStream(path.join(__dirname, './command-usage.txt'))
|
|
.pipe(process.stdout)
|
|
}
|
|
|
|
if (cmd === 'gen') {
|
|
return makeFlameGraph(args)
|
|
}
|
|
}
|
|
|
|
function makeFlameGraph (args) {
|
|
return fs.createReadStream(args._[0])
|
|
.pipe(split())
|
|
.pipe(convert(function (err, json) {
|
|
if (err) { throw err }
|
|
debug('converted stacks to intermediate format')
|
|
var opts = JSON.stringify({
|
|
theme: args.theme,
|
|
title: args.title,
|
|
exclude: args.x || args.exclude
|
|
})
|
|
if (args.langs) opts.langs = args.l || args.langs
|
|
if (args.tiers) opts.tiers = args.t || args.tiers
|
|
|
|
multistream([
|
|
browserify({standalone: 'd3'}).add(require.resolve('d3')).bundle(),
|
|
browserify({standalone: 'hsl'}).add(require.resolve('hsl-to-rgb-for-reals')).bundle(),
|
|
browserify({standalone: 'flamer'}).add(path.join(__dirname, './flamer')).bundle(),
|
|
browserify({standalone: 'gen'}).add(path.join(__dirname, './gen')).bundle()
|
|
]).pipe(concat(function (bundle) {
|
|
write(bundle + '\ngen(' + JSON.stringify(json) + ', ' + opts + ')')
|
|
}))
|
|
|
|
function write (src) {
|
|
var opts = {
|
|
name: '-',
|
|
theme: args.theme,
|
|
title: args.title,
|
|
script: src.toString(),
|
|
exclude: args.exclude
|
|
}
|
|
|
|
if (args.langs) opts.langs = args.langs
|
|
if (args.tiers) opts.tiers = args.tiers
|
|
|
|
gen(json, opts, function () {}, function () {
|
|
debug('flamegraph generated')
|
|
debug('exiting')
|
|
process.exit()
|
|
})
|
|
}
|
|
}))
|
|
}
|