3

さまざまなタイプの成功と失敗を示す非標準のリターン コードを吐き出す bash コマンドがあります。

すべての有効なリターン コードをホワイトリストに登録しながら、このコマンドをファブリック ファイルの一部として実行したいと考えています。

from fabric.api import local
local('exit 5') # This will cause an abort even though it is expected behaviour

私の願いは次のようなことです:

from fabric.api import local, settings
with settigns(valid_exit_codes=[0,5]):
    local('exit 5')

私は現在、次の行に沿って何かをしています:

with settings(warn_only=True):
    output = local('exit 5')

    if output.return_code in [0, 5]:
        return output.return_code
    else:
        abort("Non success return-code: %s" % output.return_code)

より簡単な回避策を見つけるための支援は素晴らしいでしょう。

4

3 に答える 3

1

必要なものを入手するには、ファブリックへのパッチが必要になるようです。これはあなたをそこに連れて行くはずです:https ://github.com/opie4624/fabric/compare/master ... return-codes

于 2012-09-25T23:36:09.110 に答える
1

コマンドにappend を追加; echo $?して、終了コードを文字列リテラルとして返すだけです。

assert local('(exit 5); echo $?').split()[-1] in "0 1 2 3 4 5"

これには、warn_only が有効なときに警告を出力しないという利点があります。

于 2014-08-12T10:17:16.073 に答える