Nodejs:命令行工具(CLI)

var fs=require("fs"),
    stdin=process.stdin,
    stdout=process.stdout;
fs.readdir(process.cwd(),function(err,files){
    console.log('');
    if(!files.length){  //判断是否有文件
        return console.log('\033[31m No files to show! \033[39m\n');
    }
    console.log('Select which file or directory you want to see\n');
    var stats=[];
    function file(i){
        var filename=files[i];
        fs.stat(__dirname+'/'+filename,function(err,stat){  //stat返回文件信息,argument为路径
            stats[i]=stat;
            if(stat.isDirectory()){ //判断是否为目录
                console.log('   '+i+'   \033[36m'+filename+'\033[39m');
            }else{
                console.log('   '+i+'   \033[90m'+filename+'\033[39m');
            }
            i++;
            if(i==files.length){
                read();
            }else{
                file(i)
            }
        });
    }
    file(0);
    function read(){
        console.log('');
        stdout.write('  \033[33mEnter your choice:\033[39m')
        stdin.resume();  // 等待用户输入
        stdin.setEncoding('utf8');//设置输入流的编码
        stdin.on('data',option); //
    }
    function option(data){
        var filename=files[Number(data)];
        var number=stats[Number(data)];
        if(number){
            if(stats[Number(data)].isDirectory()){  //判断输入项是否正确
                console.log('   ');
                console.log('  (  '+files.length+'   files)');
                files.forEach(function(file){ //遍历文件夹
                    console.log('   -   '+file);
                });
                console.log('');
                stdout.write('  \033[31mEnter you choice:\033[39m');
            }else{
                stdin.pause();
                fs.readFile(__dirname + '/' + filename,'utf8',function(err,data){
                    //文件名含文件的路径,设置编码,callback
                    console.log('');
                    console.log('\033[91m' + data.replace(/(.*)/g,' $1')+'\033[39m');
                });
            }
        }else{
           stdin.pause();
        }
    }
});



你可能感兴趣的:(Nodejs:命令行工具(CLI))