#!/usr/bin/env node 'use strict'; var fs = require('fs'); var Path = require('path'); var fileDirUtils = require('../lib/fileDirUtils'); var version = require('../package.json').version var nopt = require('nopt'); var spawn = require('child_process').spawn; /* * Step1 : handle the command argv */ var argv = process.argv; var knownOpts = { "input": String, "output": String, "help": Boolean, "version": String, }; var shortHands = { "i": ["--input"], "o": ["--output"], "h": ["--help"], "v": ["--version"], }; var getHelpInfo = function () { return [ ' Usage: buildStyle [-i input]', ' [-o output]', ' [-h help]', '', ' Options:', '', ' -i | --input [compulsory] input path', ' -o | --output [compulsory] output path', ' -h | --help help information', ' -v | --version check version' ].join('\n'); }; var parsed = nopt( knownOpts, shortHands, argv ); if(parsed.version == ''){ console.log(version) return } if ( parsed.help || !parsed.input || !parsed.output ) { console.log( getHelpInfo() ); return; } var cwd = process.cwd(); var inputDir = Path.resolve( cwd, parsed.input ); var outputDir = Path.resolve( cwd, parsed.output ); // var tmpDir = Path.join(__dirname, '.build-tmp'); /* * Step2 : execute gulp */ if ( fs.existsSync( outputDir ) ) { console.log( outputDir + ' already exists, now removing ...' ); fileDirUtils.rmDir( outputDir ); } var modulesBase = Path.join(__dirname, '../node_modules'); var gulpFile = Path.join(__dirname, '../config-files/gulpfile.js'); var buildTask = spawn( 'node', [ modulesBase + '/gulp/bin/gulp', '--inputdir', inputDir, '--outdir', outputDir, '--gulpfile', gulpFile ] ); buildTask.stdout.on('data', function (data) { data = data.slice( 0, data.length - 1 ); console.log( data.toString() ); }); buildTask.stderr.on('data', function (data) { console.log( data.toString() ); }); buildTask.on('close', function (code) { if ( code !== 0 ) { console.error( 'build error : child process exited with code ' + code ); } else { console.log( 'gulp compile finished' ) } });