2016-07-17 9 views
0

私はyargsを使用して、データロードヘルパーlibのcli引数を検証しています。yargs .check()エラー処理

私はfs.accessSync(filename, fs.R_OK);として、スクリプトの実行を許可する前にファイルが存在していることを確認できます。しかし、ファイルが存在しない場合、メッセージングは​​単純にエラーとして.check()関数を表示しますが、私は傍受して、ファイルが存在しないことを示します(読み取り権限付き)。

偽の返品で.check()を使用してエラーを送信する方法を教えてください。ここで

は私yargsの要旨です:

var path = { 
    name: 'filepath', 
    options: { 
    alias: 'f', 
    describe: 'provide json array file', 
    demand: true, 
    }, 
}; 

function fileExists(filename) { 
    try { 
    fs.accessSync(filename, fs.R_OK); 
    return true; 
    } catch (e) { 
    return false; 
    } 
} 

var argv = require('yargs') 
    .usage('$0 [args]') 
    .option(path.name, path.options) 
    .check(function (argv) { 
    return fileExists(argv.f); 
    }) 
    .strict() 
    .help('help') 
    .argv; 

と返され、エラーでない場合は読み込み可能なファイル:

Argument check failed: function (argv) { 
    return fileExists(argv.f); 
} 

私はの線に沿って何かを指定することができるように好みます: Argument check failed: filepath is not a readable file

答えて

1

yargs 5.0.0の場合返信真実でない値は、出力全体で。

Argument check failed: function (argv) { 
    return fileExists(argv.f); 
} 

あなたの代わりに使用すると、出力メッセージを制御することができを投げる場合。

.check(function (argv) { 
    if(fileExists(argv.f)) { 
    return true; 
    } else { 
    throw(new Error('Argument check failed: filepath is not a readable file'); 
    } 
}) 
+0

大変感謝! – abenrob