yarn prettier --check ./src
良いコード形式を適用するために、Reactアプリで実行されるgit post-pushフックを作成しようとしています。私はコマンドの出力を保存し、正規表現を使用して特定のエラーが発生したかどうかを確認できると思いました。
Bashスクリプトで実行しようとしています。
#!/bin/bash
cd frontend/
VAR=$(yarn prettier --check ./src)
if [[ $VAR =~ .*"error Command failed with exit code 1."* ]]; then
echo "Failed to run prettier before push."
else
echo "Passed prettier"
fi
出力内容は次のとおりです。
[warn] src/order/orderApi.ts
[warn] Code style issues found in the above file. Forgot to run Prettier?
error Command failed with exit code 1.
Passed prettier
私は意図的にorderApi.txにエラーを入れましたが、Prettierがこれをキャッチすると思いました。
出力を保存するときにVariable=$(command insert)
次のチュートリアルを確認しましたが、結果が得られなかったようです。
ベストアンサー1
文字列比較を使用する代わりに、次のコマンドを使用してコマンドの終了コードを確認できます。
yarn prettier --check ./src
if [[ $? -eq 1 ]]; then
echo "Failed to run prettier before push."
else
echo "Passed prettier"
fi
重要: 角かっことステートメントの間にスペースを追加します[[ $? -eq 1 ]];
。
文字列比較に関して、糸エラーはリダイレクトされ、コマンドのみが割り当てられるstderr
ため、変数には実際にエラーメッセージは表示されません。stdout
したがって、エラー/stderrも割り当てるには、次のようstderr
にリダイレクトしますstdout
。
VAR=$(yarn prettier --check ./src 2>&1)
# or: if [[ $VAR =~ "error Command failed with exit code 1." ]]; then
if [[ $VAR =~ .*"error Command failed with exit code 1."* ]]; then
echo "Failed to run prettier before push."
else
echo "Passed prettier"
fi
または、stderr
次のようにリダイレクトしてください。
VAR=$(yarn prettier --check ./src 2>&1 >/dev/null)