93 lines
2.2 KiB
JavaScript
93 lines
2.2 KiB
JavaScript
|
#!/usr/bin/env node
|
||
|
|
||
|
const fs = require('fs');
|
||
|
const path = require('path');
|
||
|
const minimist = require('minimist');
|
||
|
const childProcess = require('child_process');
|
||
|
const phantomjs = require('phantomjs');
|
||
|
const binPath = phantomjs.path;
|
||
|
|
||
|
// Parse command args
|
||
|
let args = minimist(process.argv.slice(2), {
|
||
|
default: {
|
||
|
crop: false,
|
||
|
dataUri: false,
|
||
|
debug: false,
|
||
|
scale: 1
|
||
|
},
|
||
|
});
|
||
|
|
||
|
if (args.debug) console.log(args);
|
||
|
|
||
|
// Ensure a path for the src file was passed
|
||
|
if (!args._ || (args._ && !args._.length)) {
|
||
|
console.error('Path to a .piskel file is required');
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
const src = args._[0];
|
||
|
|
||
|
// Ensure the src file exists
|
||
|
if (!fs.existsSync(src)) {
|
||
|
console.error('No such file: ' + src);
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// Read src piskel file
|
||
|
const piskelFile = fs.readFileSync(src, 'utf-8');
|
||
|
|
||
|
const dest = args.dest || path.basename(src, '.piskel');
|
||
|
|
||
|
console.log('Piskel CLI is exporting...');
|
||
|
|
||
|
// Get path to Piskel's app js bundle
|
||
|
let piskelAppJsDir = path.resolve(__dirname +'/../dest/prod/js/');
|
||
|
let minJsFiles = fs.readdirSync(piskelAppJsDir).filter(filename => filename.indexOf('min') > -1);
|
||
|
let piskelAppJsFileName = minJsFiles[0];
|
||
|
let piskelAppJsPath = (piskelAppJsFileName) ? path.join(piskelAppJsDir, piskelAppJsFileName) : '';
|
||
|
|
||
|
if (!fs.existsSync(piskelAppJsPath)) {
|
||
|
console.error(`Piskel's application JS file not found in: ${piskelAppJsDir}. Run prod build and try again.`);
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// Prepare args to pass to phantom script
|
||
|
const options = {
|
||
|
dest: dest,
|
||
|
zoom: args.scale,
|
||
|
crop: !!args.crop,
|
||
|
rows: args.rows,
|
||
|
columns: args.columns,
|
||
|
frame: args.frame,
|
||
|
dataUri: !!args.dataUri,
|
||
|
debug: args.debug,
|
||
|
piskelAppJsPath: piskelAppJsPath,
|
||
|
scaledWidth: args.scaledWidth,
|
||
|
scaledHeight: args.scaledHeight
|
||
|
};
|
||
|
|
||
|
const childArgs = [
|
||
|
path.join(__dirname, 'piskel-export.js'),
|
||
|
piskelFile,
|
||
|
JSON.stringify(options)
|
||
|
];
|
||
|
|
||
|
if (args.debug) {
|
||
|
childArgs.unshift(
|
||
|
'--remote-debugger-port=9035',
|
||
|
'--remote-debugger-autorun=yes'
|
||
|
);
|
||
|
}
|
||
|
|
||
|
// Run phantom script
|
||
|
childProcess.execFile(binPath, childArgs, function (err, stdout, stderr) {
|
||
|
// Print any output the from child process
|
||
|
if (err) console.log(err);
|
||
|
if (stderr) console.log(stderr);
|
||
|
if (stdout) console.log(stdout);
|
||
|
|
||
|
console.log('Export complete');
|
||
|
});
|