Open takum-yamada opened 1 year ago
Pioneerのcommandモジュールでwhenを指定してVAR変数やregister変数を評価するとき、値がnullの場合に判定結果が全て「No Match」となる。
たとえば、何かの変数の値がnullである場合に作業を実行する、というような対話ファイルを作成できない。
# VAR_some_valueの値がnullである(Null文字にマッチした)場合に作業実行 - command: 'echo "VAR_some_value is empty."' prompt: '.*# ' when: - '{{ VAR_some_value }} match(\0) '
# VAR_some_valueの値が空である(値が1文字以上でない)場合に作業実行 - command: 'echo "VAR_some_value is empty."' prompt: '.*# ' when: - '{{ VAR_some_value }} no match(.+)'
pioneer_module.py3009行目以降のwhen_check関数を見たところ、whenに指定した判定文の左辺が空である場合に1(=条件に合致しない、の意?)を返す仕様となっている。
# ' match '前の文字列を抽出 tmp5 = when_cmd[:int(tmp4)] tmp5 = tmp5.lstrip() tmp5 = tmp5.rstrip() if len(tmp5) == 0: # 空の場合、1を返却する return 1
具体的な実装の案などはないのですが、値がnullの場合に作業を実行するような対話ファイルが作成可能になるとありがたいです。
詳細
Pioneerのcommandモジュールでwhenを指定してVAR変数やregister変数を評価するとき、値がnullの場合に判定結果が全て「No Match」となる。
たとえば、何かの変数の値がnullである場合に作業を実行する、というような対話ファイルを作成できない。
意図したとおりに動作しない対話ファイルの例
原因?
pioneer_module.py3009行目以降のwhen_check関数を見たところ、whenに指定した判定文の左辺が空である場合に1(=条件に合致しない、の意?)を返す仕様となっている。
pioneer_module.py((3236行目) )
期待する動作
具体的な実装の案などはないのですが、値がnullの場合に作業を実行するような対話ファイルが作成可能になるとありがたいです。