Skip to content

Commit

Permalink
Merge pull request #390 from ben-page/cli-fix
Browse files Browse the repository at this point in the history
fix cli issues
  • Loading branch information
knsv authored Sep 29, 2016
2 parents aa6e15e + 0c62c08 commit 605d74d
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 66 deletions.
40 changes: 21 additions & 19 deletions lib/cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ function cli(options) {
, css: 't'
, width: 'w'
}
, 'boolean': ['help', 'png', 'svg']
, 'boolean': ['help', 'png', 'svg', 'verbose']
, 'string': ['outputDir']
}

Expand Down Expand Up @@ -94,25 +94,38 @@ cli.prototype.parse = function(argv, next) {
else {
options.png = true
}

if (options.sequenceConfig) {
options.sequenceConfig = checkConfig(options.sequenceConfig)
try {
fs.accessSync(options.sequenceConfig, fs.R_OK)

} catch (err) {
this.errors.push(err)
}
} else {
options.sequenceConfig = null
}

if (options.ganttConfig) {
options.ganttConfig = checkConfig(options.ganttConfig)
try {
fs.accessSync(options.ganttConfig, fs.R_OK)

} catch (err) {
this.errors.push(err)
}
} else {
options.ganttConfig = null
}

if (options.css) {
try {
options.css = fs.readFileSync(options.css, 'utf8')

fs.accessSync(options.css, fs.R_OK)

} catch (err) {
this.errors.push(err)
}
} else {
options.css = fs.readFileSync(path.join(__dirname, '..', 'dist', 'mermaid.css'))
options.css = path.join(__dirname, '..', 'dist', 'mermaid.css')
}

// set svg/png flags appropriately
Expand All @@ -136,17 +149,6 @@ cli.prototype.parse = function(argv, next) {
}
}

function checkConfig(configPath) {
try {
var text = fs.readFileSync(configPath, 'utf8');
JSON.parse(text)
return text
} catch (e) {
console.log(e);
return null;
}
}

function createCheckPhantom(_phantomPath) {
var phantomPath = _phantomPath
, phantomVersion
Expand Down
2 changes: 1 addition & 1 deletion lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ function processMermaid(files, _options, _next) {
, outputDir
, options.png
, options.svg
, options.css || ''
, options.css
, options.sequenceConfig
, options.ganttConfig
, options.verbose
Expand Down
64 changes: 20 additions & 44 deletions lib/phantomscript.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ var system = require('system')
, fs = require('fs')
, webpage = require('webpage')


var page = webpage.create()
, files = system.args.slice(9, system.args.length)
, width = system.args[8]
Expand All @@ -40,21 +39,15 @@ var options = {
outputDir: system.args[1]
, png: system.args[2] === 'true' ? true : false
, svg: system.args[3] === 'true' ? true : false
, css: system.args[4] !== '' ? system.args[4] : '* { margin: 0; padding: 0; }'
, sequenceConfig: system.args[5]
, ganttConfig: system.args[6]
, css: fs.read(system.args[4])
, sequenceConfig: system.args[5] !== 'null' ? JSON.parse(fs.read(system.args[5])) : '{}'
, ganttConfig: system.args[6] !== 'null' ? fs.read(system.args[6]) : '{}'
, verbose: system.args[7] === 'true' ? true : false
, width: width
}
, log = logger(options.verbose)

// If no css is suuplied make sure a fixed witdth is given to the gant renderer
if(system.args[3] !== ''){
if(typeof options.ganttConfig === 'undefined'){
options.ganttConfig = {};
}
options.ganttConfig.useWidth = 1200;
}
options.sequenceConfig.useMaxWidth = false;

page.content = [
'<html>'
Expand Down Expand Up @@ -218,7 +211,7 @@ function resolveForeignObjects(element) {
function executeInPage(data) {
var xmlSerializer = new XMLSerializer()
, contents = data.contents
, sequenceConfig = data.sequenceConfig
, sequenceConfig = JSON.stringify(data.sequenceConfig)
, ganttConfig = data.ganttConfig
, toRemove
, el
Expand All @@ -229,7 +222,7 @@ function executeInPage(data) {
, width
, height
, confWidth = data.confWidth

toRemove = document.getElementsByClassName('mermaid')
if (toRemove && toRemove.length) {
for (var i = 0, len = toRemove.length; i < len; i++) {
Expand All @@ -242,41 +235,24 @@ function executeInPage(data) {
elContent = document.createTextNode(contents)
el.appendChild(elContent)
//el.innerText = '<b>hello</b>\uD800' //contents;

document.body.appendChild(el)

mermaid.initialize({
sequenceDiagram:{useMaxWidth:false},
flowchart:{useMaxWidth:false},
logLevel:1
});

var config = {
sequenceDiagram: sequenceConfig,
flowchart: {useMaxWidth: false},
logLevel: 1
};

mermaid.initialize(config);

//console.log('after initialize',sequenceConfig);

if(typeof sequenceConfig !== undefined && sequenceConfig !== 'undefined'){
//sc = document.createElement("script")
//scContent = document.createTextNode('mermaid.sequenceConfig = JSON.parse(' + JSON.stringify(sequenceConfig) + ');')
//sc.appendChild(scContent)
sc = document.createElement("script")
scContent = document.createTextNode('mermaid.ganttConfig = ' + ganttConfig + ';')
sc.appendChild(scContent)

//document.body.appendChild(sc)
mermaid.initialize({
sequenceDiagram:JSON.parse(sequenceConfig)
});
}

//console.log('after initialize 2');
if(typeof ganttConfig !== undefined && ganttConfig !== 'undefined'){
sc = document.createElement("script")
scContent = document.createTextNode('mermaid.ganttConfig = JSON.parse(' + JSON.stringify(ganttConfig) + ');')
sc.appendChild(scContent)

document.body.appendChild(sc)
}else{
sc = document.createElement("script")
scContent = document.createTextNode('mermaid.ganttConfig = {useWidth:1200};')
sc.appendChild(scContent)

document.body.appendChild(sc)
}
document.body.appendChild(sc)

mermaid.init();

Expand Down
10 changes: 8 additions & 2 deletions test/cli_test-output.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,18 @@ var singleFile = {
, outputDir: path.join(process.cwd(),'test/tmp2/')
, phantomPath: path.join(process.cwd(),phantomCmd)
, width : 1200
, css: path.join(__dirname, '..', 'dist', 'mermaid.css')
, sequenceConfig: null
, ganttConfig: null
}
, multiFile = {
files: [path.join('test','fixtures','test.mermaid'), path.join('test','fixtures','test2.mermaid')]
, outputDir: 'test/tmp2/'
, phantomPath: path.join(process.cwd(),phantomCmd)
, width : 1200
, css: path.join(__dirname, '..', 'dist', 'mermaid.css')
, sequenceConfig: null
, ganttConfig: null
}


Expand All @@ -40,7 +46,7 @@ test('output of single png', function(t) {

opt = clone(singleFile)
opt.png = true

mermaid.process(opt.files, opt, function(code) {
t.equal(code, 0, 'has clean exit code')

Expand Down Expand Up @@ -113,7 +119,7 @@ test('output including CSS', function(t) {
one = fs.statSync(filename)
//console.log('one: '+opt.files[0]);

opt2.css = fs.readFileSync(path.join('test','fixtures','test.css'), 'utf8')
opt2.css = path.join('test','fixtures','test.css')
//console.log(opt2.css);

console.log('Generating #2');
Expand Down

0 comments on commit 605d74d

Please sign in to comment.