示例#1
0
function runCommand(item, cwd, callback) {
    var chunks = item.split(/\s+/g);
    var command = chunks[0];
    var args = chunks.slice(1);

    var stdout = [];
    var options = { cwd: cwd };
    var cmd = edp.util.spawn(command, args, options);
    var errorHappend = false;
    cmd.on('error', function() {
        errorHappend = true;
        callback(new Error(item + ' launch failed.'));
    });
    cmd.stdout.on('data', function(data) {
        stdout.push(data);
    });
    cmd.on('close', function(code) {
        if (errorHappend || code !== 0) {
            callback(new Error('' + code));
            return;
        }

        callback(null, Buffer.concat(stdout).toString().trim());
    });
}
示例#2
0
function runCommand(item, callback) {
    var chunks = item.split(/\s+/g);
    var command = chunks[0];
    var args = chunks.slice(1);

    var stdout = [];
    var cmd = edp.util.spawn(command, args);
    var errorHappend = false;
    cmd.on('error', function(){
        errorHappend = true;
        callback(false);
    });
    cmd.stdout.on('data', function(data){
        stdout.push(data);
    });
    cmd.on('close', function(code){
        if (errorHappend) {
            return;
        }

        if (code !== 0) {
            callback(false);
            return;
        }

        stdout = Buffer.concat(stdout);

        var data = require('querystring').encode({
            'title': 'project info pingback',
            'file_name': 'info.txt',
            'code': stdout.toString()
        });

        // HTTP/1.1 201 Created
        var options = require('url').parse('http://git.baidu.com/api/v3/projects/1929/snippets');
        options.method = 'POST';
        options.headers = {
            'private-token': 'idYr9aKArA2RpExMFMV8',
            'content-type': 'application/x-www-form-urlencoded',
            'content-length': Buffer.byteLength(data),
            'connection': 'close'
        };
        var req = http.request(options, function(res){
            callback(res.statusCode === 201);
        });
        req.on('socket', function (socket) {
            socket.setTimeout(2000);
            socket.on('timeout', function(){
                req.abort();
            });
        });
        req.on('error', function() {
            callback(false);
        });
        req.write(data);
        req.end();
    });
}
示例#3
0
/**
 * 导入package成功之后,更新项目的配置信息
 * 采用的方式是执行 edp project updateLoaderConfig
 * 这样子就可以避免edp-package对edp-project的依赖了
 */
function refreshProjectConfiguration( err ) {
    if ( err ) {
        throw err;
    }

    // 把TemporaryImportDir/dep目录下面的内容拷贝过来
    var from = path.join( kTemporaryImportDir, 'dep' );
    var to = path.join( process.cwd(), 'dep' );
    require( '../lib/util/copy-dir' )( from, to );

    var cmd = edp.util.spawn( 'edp',
        [ 'project', 'updateLoaderConfig' ], { stdio: 'inherit' } );
    cmd.on( 'close', function( code ){
        // 删除ImportDir
        edp.util.rmdir( kTemporaryImportDir );
    });
}
示例#4
0
        context.checkLocalModifications(function(error, diffs) {
            diffs.forEach(function(line) {
                edp.log.warn(line);
            });

            var cmd = edp.util.spawn(
                'edp',
                [ 'project', 'updateLoaderConfig' ],
                { stdio: 'inherit' }
            );
            cmd.on('error', function(error) {
                console.log(error);
            });
            cmd.on('close', function(code) {
                edp.util.rmdir(context.getShadowDir());
                edp.log.info('Impossible Mission Completed.');
                callback(code === 0 ? null : code);
            });
        });
示例#5
0
 return function ( err, packData ) {
     if ( err ) {
         console.log( err );
         return;
     }
     var fsExt = require( './fs-copy' );
     var projectDep = require( './get-dependencies-dir' )( process.cwd() );
     var path = require( 'path' );
     var fs = require( 'fs' );
     function rmTemp() {
         var temp = path.join( depDir, '..' );
         fsExt.rmdir( temp );
     }
     if ( !fs.existsSync(depDir) ) {
         rmTemp();
         return;
     }
     fsExt.copyDir(depDir, projectDep);
     var updateProcess = edp.util.spawn( 'edp', [ 'project', 'updateLoaderConfig' ] );
     updateProcess.on( 'close', rmTemp );
 };