mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-01-14 06:43:25 +08:00
Merge pull request #75 from fardog/enhancement-71
Show help and version even if phantom isn't present. Fixes #71
This commit is contained in:
commit
9f904da7b3
130
lib/cli.js
130
lib/cli.js
@ -10,7 +10,11 @@ var PHANTOM_VERSION = "^1.9.0"
|
||||
var info = chalk.blue.bold
|
||||
, note = chalk.green.bold
|
||||
|
||||
var cli = function(options) {
|
||||
module.exports = function() {
|
||||
return new cli()
|
||||
}()
|
||||
|
||||
function cli(options) {
|
||||
this.options = {
|
||||
alias: {
|
||||
help: 'h'
|
||||
@ -52,9 +56,11 @@ cli.prototype.parse = function(argv, next) {
|
||||
if (options.version) {
|
||||
var pkg = require('../package.json')
|
||||
this.message = "" + pkg.version
|
||||
next(null, this.message)
|
||||
}
|
||||
else if (options.help) {
|
||||
this.message = this.helpMessage.join('\n')
|
||||
next(null, this.message)
|
||||
}
|
||||
else {
|
||||
options.files = options._
|
||||
@ -71,65 +77,81 @@ cli.prototype.parse = function(argv, next) {
|
||||
}
|
||||
}
|
||||
}.bind(this))
|
||||
}
|
||||
|
||||
if (options.svg && !options.png) {
|
||||
options.png = false
|
||||
}
|
||||
else {
|
||||
options.png = true
|
||||
}
|
||||
// set svg/png flags appropriately
|
||||
if (options.svg && !options.png) {
|
||||
options.png = false
|
||||
}
|
||||
else {
|
||||
options.png = true
|
||||
}
|
||||
|
||||
// If phantom hasn't been specified, see if we can find it
|
||||
if (!options.phantomPath) {
|
||||
try {
|
||||
var phantom = require('phantomjs')
|
||||
options.phantomPath = phantom.path
|
||||
} catch (e) {
|
||||
this.checkPhantom = createCheckPhantom(options.phantomPath)
|
||||
|
||||
this.checkPhantom(function(err, path) {
|
||||
if(err) {
|
||||
this.errors.push(err)
|
||||
}
|
||||
options.phantomPath = path
|
||||
next(
|
||||
this.errors.length > 0 ? this.errors : null
|
||||
, this.message
|
||||
, options
|
||||
)
|
||||
}.bind(this))
|
||||
}
|
||||
}
|
||||
|
||||
function createCheckPhantom(_phantomPath) {
|
||||
var phantomPath = _phantomPath
|
||||
, phantomVersion
|
||||
|
||||
return function checkPhantom(_next) {
|
||||
var next = _next || function() {}
|
||||
, err
|
||||
|
||||
if (typeof phantomPath === 'undefined') {
|
||||
try {
|
||||
options.phantomPath = which.sync('phantomjs')
|
||||
var phantom = require('phantomjs')
|
||||
phantomPath = phantom.path
|
||||
} catch (e) {
|
||||
if (!options.phantomPath) {
|
||||
var err = [
|
||||
"Cannot find phantomjs in your PATH. If phantomjs is installed"
|
||||
, "you may need to specify its path manually with the '-e' option."
|
||||
, "If it is not installed, you should view the README for further"
|
||||
, "details."
|
||||
]
|
||||
|
||||
this.errors.push(new Error(err.join('\n')))
|
||||
next(
|
||||
this.errors.length > 0 ? this.errors : null
|
||||
, this.message
|
||||
, options)
|
||||
|
||||
return
|
||||
try {
|
||||
phantomPath = which.sync('phantomjs')
|
||||
} catch (e) {
|
||||
if (!phantomPath) {
|
||||
phantomPath = null
|
||||
err = new Error(
|
||||
[
|
||||
"Cannot find phantomjs in your PATH. If phantomjs is installed"
|
||||
, "you may need to specify its path manually with the '-e' option."
|
||||
, "Run this executable with '--help' or view the README for more"
|
||||
, "details."
|
||||
].join('\n')
|
||||
)
|
||||
|
||||
next(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If we have phantompath, see if its version satisfies our requirements
|
||||
exec(phantomPath + ' --version', function(err, stdout, stderr) {
|
||||
if (err) {
|
||||
next(new Error("Could not find phantomjs at the specified path."))
|
||||
}
|
||||
else if (!semver.satisfies(stdout, PHANTOM_VERSION)) {
|
||||
next(new Error(
|
||||
'mermaid requires phantomjs '
|
||||
+ PHANTOM_VERSION
|
||||
+ ' to be installed, found version '
|
||||
+ stdout
|
||||
))
|
||||
}
|
||||
else {
|
||||
next(null, phantomPath)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// If we have phantompath, see if its version satisfies our requirements
|
||||
exec(options.phantomPath + ' --version', function(err, stdout, stderr) {
|
||||
if (err) {
|
||||
this.errors.push(
|
||||
new Error("Could not find phantomjs at the specified path.")
|
||||
)
|
||||
}
|
||||
else if (!semver.satisfies(stdout, PHANTOM_VERSION)) {
|
||||
this.message = note(
|
||||
'mermaid requires phantomjs '
|
||||
+ PHANTOM_VERSION
|
||||
+ ' to be installed, found version '
|
||||
+ stdout
|
||||
)
|
||||
}
|
||||
next(this.errors.length > 0 ? this.errors : null, this.message, options)
|
||||
}.bind(this))
|
||||
|
||||
}
|
||||
|
||||
|
||||
module.exports = function() {
|
||||
return new cli()
|
||||
}()
|
||||
|
Loading…
x
Reference in New Issue
Block a user