RiderでFile WatchersをActions on Saveに登録してファイル保存時に任意の処理を実行する方法です。
Rider 2023.2.1
はじめに
RiderのFile WatchersをActions on Saveに登録すると、変更が加わったファイルが保存されたときに任意の処理を実行することができます。
本記事ではこれの使い方についてまとめます。
実行するスクリプトを書く
まずファイル保存時に実行するためのシェルスクリプトを書きます。
シェルに限らずあらゆるものを実行できるのですが、今回はテストということで簡単なシェルを書きます。
引数としてファイルパスを受け取り、そのファイルの先頭にファイルパスをコメントとして書き込むシェルスクリプトを記述しました。
#!/bin/bash # 引数からファイルパスを取得 FILE_PATH=$1 # ファイルパスをコメント形式でフォーマット COMMENT="//filepath: $FILE_PATH" # ファイルが存在するかチェック if [ ! -f "$FILE_PATH" ]; then echo "指定されたファイルが存在しません: $FILE_PATH" exit 1 fi # ファイルの最初の行を読み込み FIRST_LINE=$(head -n 1 "$FILE_PATH") # 最初の行が "//filepath:" で始まる場合 if [[ "$FIRST_LINE" == "//filepath:"* ]]; then # 最初の行が既に指定されたファイルパスと一致する場合、何もしない if [ "$FIRST_LINE" = "$COMMENT" ]; then echo "ファイルは既に適切なコメントを含んでいます。" exit 0 fi # ファイルの残りの内容を取得 tail -n +2 "$FILE_PATH" > "$FILE_PATH.tmp" # 新しいコメントとファイルの残りの内容を結合 echo "$COMMENT" > "$FILE_PATH" cat "$FILE_PATH.tmp" >> "$FILE_PATH" # テンポラリファイルを削除 rm "$FILE_PATH.tmp" else # ファイルにコメントを追加 echo "$COMMENT" | cat - "$FILE_PATH" > "$FILE_PATH.tmp" && mv "$FILE_PATH.tmp" "$FILE_PATH" fi
ファイルの変更をトリガーとしてこのスクリプトを実行するので、変更する必要がない場合にはファイルを書き換えないようにしてください。
書き換えてしまうとそれがまたファイルの変更として検知されてしまい、このスクリプトが無限に実行され続けてしまいます。
実行権限を付与
次にこのシェルスクリプトに実行権限を付与しておきます。
これをやらないとRiderから実行したときにエラーになりました。
$chmod +x シェルスクリプトファイルのパス
File Watcherを作成
次にRiderでFile Watcherを作成します。
Settings > File Watchers > + ボタン > custom を選択します。
すると下図のウィンドウが現れるため、画像のように設定します。
Advanced Optionsに関しては下図の通り設定します。
以上で設定は終わりなので保存しておきます。
動作確認
あとは適当なC#スクリプトを作成して編集・保存すると最上部にファイルパスが記述されることが確認できます。