示例#1
0
function verify_deps( cfg, key )
{
    var val = proves.get( cfg, key ),
        label = key.join('.'),
        str;

    if( val )
    {
        assert( proves.is.obj( val ), label + ' must be object' );
        for( var name in val )
        {
            str = val[name];
            assert( proves.is.str( str ) && ( str = str.trim() ).length, 
                    label  + '.' + name + ' must be string' );
            
            val[name] = str;
        }
    }
    else {
        val = {};
        proves.set( cfg, key, val );
    }
    
    return val;
}
示例#2
0
 val = val.map(function(path)
 {
     assert( proves.is.str( path ) && ( path = path.trim() ).length, 
             label + ' item must be string' );
     
     tmp = proves.is.file( process.cwd() + '/' + path );
     assert( tmp, path + ' is not file' );
     return tmp;
 });
示例#3
0
function verify_dir( cfg, key )
{
    var val = proves.get( cfg, key ),
        label = key.join('.'),
        tmp;
    
    assert( proves.is.str( val ) && ( val = val.trim() ).length, 
            label + ' must be string' );
    
    tmp = proves.is.dir( process.cwd() + '/' + val );
    assert( tmp, label + ': ' + val + ' must be directory' );
    proves.set( cfg, key, tmp );
    
    return val;
}
示例#4
0
function verify_compile_externs( cfg, key )
{
    var val = proves.get( cfg, key );
    
    if( val )
    {
        var label = key.join('.'),
            tmp;
        
        assert( proves.is.arr( val ), label + ' must be array' );
        val = val.map(function(path)
        {
            assert( proves.is.str( path ) && ( path = path.trim() ).length, 
                    label + ' item must be string' );
            
            tmp = proves.is.file( process.cwd() + '/' + path );
            assert( tmp, path + ' is not file' );
            return tmp;
        });
        
        proves.set( cfg, key, val );
    }
    else {
        proves.set( cfg, key, [] );
    }

    return val;
}
示例#5
0
function verify_compile( cfg, key )
{
    var val = proves.get( cfg, key );
    
    if( val ){
        var label = key.join('.');
        assert( proves.is.obj( val ), label + ' must be object' );
    }
    
    return val;
}
示例#6
0
function verify_name( cfg, key )
{
    var val = proves.get( cfg, key ),
        label = key.join('.');
    
    assert( proves.is.str( val ) && ( val = val.trim() ).length, 
            label + ' must be string' );
    assert( val.match( '^[a-zA-Z0-9_](?:[a-zA-Z0-9_.])*$' ), 
            label + ' range must be <^[a-zA-Z0-9](?:[a-zA-Z0-9_.])*$>' );
    proves.set( cfg, key, val );
    
    return val;
}
示例#7
0
function verify_compile_path( cfg, key )
{
    var val = proves.get( cfg, key );
    
    if( val )
    {
        var label = key.join('.'),
            tmp;
        
        assert( proves.is.str( val ) && ( val = val.trim() ).length, 
                label + ' must be object' );
        
        tmp = proves.is.file( process.cwd() + '/' + val );
        assert( tmp, label + ': ' + val + ' not found' );
        proves.set( cfg, key, tmp );
    }
    else {
        proves.set( cfg, key, '' );
    }

    return val;
}
示例#8
0
function verify_target( cfg, key )
{
    var val = proves.get( cfg, key );

    if( val )
    {
        assert( proves.is.str( val ) && ( val = val.trim() ).length, 
                key.join('.') + ' must be string' );
        proves.set( cfg, key, val );
    }
    
    return val;
}
示例#9
0
文件: amg.js 项目: mah0x211/node-amg
function readConfig()
{
    var path = proves.is.file( process.cwd() + '/' + CFGFILE ),
        buildCfg = undefined;
    
    if( !path ){
        exit( 'config file %s not found', CFGFILE );
    }
    else
    {
        try
        {
            print.info( 'read config file: %s', path );
            buildCfg = require( path );
            assert( proves.is.arr( buildCfg.build ), 'build field must be array' );
            // check dels
            if( buildCfg.dels )
            {
                assert( proves.is.arr( buildCfg.dels ), 'dels field must be array' );
                buildCfg.dels = buildCfg.dels.map(function(str){
                    assert( proves.is.str( str ) && ( str = str.trim() ).length, 
                            'dels item must be string' );
                    return str;
                });
            }
            else {
                buildCfg.dels = [];
            }
        }
        catch(e) {
            exit( 'failed to read config file %s --- %s', path, e.message );
        }
    }
    
    return buildCfg;
}
示例#10
0
function verify_assign( cfg, key )
{
    var val = proves.get( cfg, key ),
        label = key.join('.');

    if( val )
    {
        assert( proves.is.str( val ) && ( val = val.trim() ).length, 
                label + ' must be string' );
        assert( !!cfg.target, 'target not defined' );
        proves.set( cfg, key, val );
    }
    else if( cfg.target ){
        assert( false, label + ' not defined' );
    }
    
    return val;
}
示例#11
0
function verify_dels( cfg, key )
{
    var val = proves.get( cfg, key );
    
    if( val )
    {
        var label = key.join('.');
        
        assert( proves.is.arr( val ), label + ' must be array' );
        val = val.map(function(str)
        {
            assert( proves.is.str( str ) && ( str = str.trim() ).length, 
                    label + ' item must be string' );
            return str;
        });
    }
    else {
        val = [];
    }
    proves.set( cfg, key, val );
    
    return val;
}
示例#12
0
文件: amg.js 项目: mah0x211/node-amg
function changeDir( callback )
{
    var cwd = process.argv[2];
    
    if( !cwd ){
        exit( 'undefined target dir' );
    }
    // resolve target path
    else if( !( cwd = proves.is.dir( cwd ) ) ){
        exit( 'target dir %s not found', process.argv[2] );
    }
    else
    {
        var npm;
        
        // change working directory
        print.info( 'chdir: %s', cwd );
        process.chdir( cwd );
        // install dependencies by npm with package.json
        npm = spawn( 'npm', ['install','.'] );
        npm.stdout.on( 'data', function(data){
            print.info( (''+data).replace( /[\r\n]/g, '' ) );
        });
        npm.stderr.on('data',function(data){
            print.error( (''+data).replace( /[\r\n]/g, '' ) );
        });
        npm.on('close',function(code)
        {
            if( code ){
                exit( 'failed to npm install %d', code );
            }
            else {
                callback( cwd );
            }
        });
    }
}
示例#13
0
 val = val.map(function(str)
 {
     assert( proves.is.str( str ) && ( str = str.trim() ).length, 
             label + ' item must be string' );
     return str;
 });
示例#14
0
文件: amg.js 项目: mah0x211/node-amg
 buildCfg.dels = buildCfg.dels.map(function(str){
     assert( proves.is.str( str ) && ( str = str.trim() ).length, 
             'dels item must be string' );
     return str;
 });