2013-01-05 61 views
0

程序必須獲得2個變量。例如,它必須是登錄名和密碼。 腳本可以從命令行接收它(登錄或使用密碼登錄)。 如果沒有一個命令行參數未填充,則用戶必須使用stdin輸入它。 如果用戶只輸入一個填數 - 我需要詢問用戶第二個。 如果用戶輸入了兩個參數 - 無關(exec一些func)。帶參數或stdin的node.js腳本

問題是:如何正確構建node.js(異步)上的程序。

在某些事件或什麼?

我寫了這段代碼,我該如何改進呢?

if(process.getuid() != 0) { 
    console.log('Error!'); 
    console.log('Required root privileges'); 
    process.exit(1); 
} 

var getUser = function(user, callback) { 
    if(user == undefined) { 
     ask('Enter user', /.+/, function(user) { 
      callback(user, process.argv[3]); 
     }); 
    } else { 
     callback(user, process.argv[3]); 
    } 
} 

var getPassword = function(user, password) { 
    if(password == undefined) { 
     ask('Enter password', /.+/, function(password) { 
      addUser(user, password); 
     }); 
    } else { 
     addUser(user, password); 
    } 
} 

function addUser(user, password) { 
    console.log('Adding user:'); 
    console.log(user); 
    console.log(password); 

    process.exit(0); 
} 

var user = getUser(process.argv[2], getPassword); 

function ask(question, format, callback) { 
    var stdin = process.stdin, stdout = process.stdout; 

    stdin.resume(); 
    stdout.write(question + ": "); 

    stdin.once('data', function(data) { 
     data = data.toString().trim(); 

     if (format.test(data)) { 
      callback(data); 
     } else { 
      stdout.write("It should match: "+ format +"\n"); 
      ask(question, format, callback); 
     } 
    }); 
} 
+0

什麼是**特定**問題? – usr

+0

正確的架構。因爲我知道我的代碼工作,但不是很好。 – Alex

回答