スリ飯屋MaLankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

【Dip Rubocop】DipでRubocopのチェック対象をgit diffで変更のあったファイルのみを対象とする

【Dip Rubocop】 DipでRubocopのチェック対象を、 git diffで変更のあったファイルのみを対象とする




今すぐ登録したい方へ


このブログから登録の多いエージェントは下記の3つです★

(リンクをクリックすると公式サイトに飛びます)

【ダントツの1番人気】フォスターフリーランス【案件保有数5000件以上。業界25年の超老舗】

【僅差で2位】エミリーエンジニア【4人に1人が初めてのフリーランス】

【惜しくも3位】レバテックフリーランス【業界最大手。素早く手厚いフォローで案件参画】




こんにちは、mahです。


このブログでは、

僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、

ノウハウなどを書いていきます。


今回は、


  • 【Dip Rubocop】DipでRubocopのチェック対象をgit diffで変更のあったファイルのみを対象とする


について書いていきます。




【Dip Rubocop】DipでRubocopのチェック対象を変更のあったファイルのみに絞る


Dipを入れたDocker環境でRubobopを実行していたが、

いちいちファイル指定しないと全ファイルにRubocopが走って面倒だったので、

git diffで変更のあったファイルのみが対象になるようにしました。




結論


Dipを使える状態で下記のようなdip.ymlを作成し、

$ dip cop を実行すると、

DipでRubocopのチェック対象をgit diffで変更のあったファイルのみを対象にできます。


# dip.yml
version: '7.0'

environment:
  COMPOSE_EXT: development

compose:
  files:
    - docker-compose.yml
  project_name: example_server

interaction:
  cop:
    description: Run rubocop
    service: web
    default_args: $( git diff --name-only --diff-filter=AMRC | grep -e ".*\.rb" | paste -s - )
    command: bundle exec rubocop


  • dip

github.com




手順


まず、

DipでRubocopを実行できるようにするため、

dip.yml のinteraction以下に cop という定義を追加します。


# dip.yml
version: '7.0'

environment:
  COMPOSE_EXT: development

compose:
  files:
    - docker-compose.yml
  project_name: example_project

interaction:
  cop:
    description: Run rubocop
    service: web
    default_args: $( git diff --name-only --diff-filter=AMRC | grep -e ".*\.rb" | paste -s - )
    command: bundle exec rubocop


このinteraction以下に定義した名前が、

dipコマンドの引数として使えます。

(自分が使いやすい名前であれば名前はなんでもいいです)


これでdipコマンドの引数として cop が使え、

command で指定されたコマンドを実行するようになります。

$ dip cop




そしてcopの引数(bundle exec rubocopの引数)には、

default_args で指定されたものが使用されます。


default_args: $( git diff --name-only --diff-filter=AMRC | grep -e ".*\.rb" | paste -s - )


「git diffで変更のあったファイルのみを対象とする」について、

default_args に指定されている --name-only --diff-filter=AMRC で実現しています。


git diffの --name-only オプションについては下記ドキュメントを参照ください。


  • git-diff - Show changes between commits, commit and working tree, etc

git-scm.com




dip copの後に引数を渡したい場合


dip copの後に引数を渡したい場合は、

普通に $ dip cop の後にrubocopの引数を渡せばOKです。

(この場合 default_args で指定されている引数は無視されるので注意)


# 例. auto correctする
$ dip cop -a

# 例. 差分のみを対象にauto correctする
$ dip cop -a $( git diff --name-only --diff-filter=AMRC | grep -e ".*\.rb" | paste -s - )




最後に


下記の表に、

フリーランスエンジニア向けの人気エージェントをまとめてみました。


エージェント選びで悩んでいる方は是非参考にしてみてくださいね★





最後までお読み頂きありがとうございました★

もしよかったらTwiiterのフォローもお願いします★