{
    "componentChunkName": "component---src-templates-blog-post-js",
    "path": "/2022-07-04_deno-velociraptor-git-hooks/",
    "result": {"data":{"site":{"siteMetadata":{"title":"365"}},"markdownRemark":{"id":"f5c024a2-841b-5300-951a-530664d5e1be","excerpt":"最近 Deno + deno-cliffy を使った CLI プロジェクトの開発を行っている まだ勝手に慣れてなくてコードフォーマッタを適用していない状態でコミットをしてしまう失敗をしてしまったので Git Hooks を導入したくなった 調べると Velociraptor という Deno 用タスクランナーに Git…","html":"<p>最近 Deno + <a href=\"https://github.com/c4spar/deno-cliffy\">deno-cliffy</a> を使った CLI プロジェクトの開発を行っている<br>\nまだ勝手に慣れてなくてコードフォーマッタを適用していない状態でコミットをしてしまう失敗をしてしまったので Git Hooks を導入したくなった<br>\n調べると <a href=\"https://velociraptor.run/docs/introduction/\">Velociraptor</a> という Deno 用タスクランナーに Git Hooks の機能があったため使ってみることにした</p>\n<h2>インストールからバージョン確認まで</h2>\n<p><a href=\"https://velociraptor.run/docs/installation/\">https://velociraptor.run/docs/installation/</a></p>\n<p>インストール</p>\n<div class=\"gatsby-highlight\" data-language=\"sh\"><pre class=\"language-sh\"><code class=\"language-sh\">$ deno install -qAn vr https://deno.land/x/velociraptor@1.5.0/cli.ts</code></pre></div>\n<p>パス設定</p>\n<div class=\"gatsby-highlight\" data-language=\"sh\"><pre class=\"language-sh\"><code class=\"language-sh\">export PATH=&quot;/home/vagrant/.deno/bin:$PATH&quot;</code></pre></div>\n<p>バージョン確認</p>\n<div class=\"gatsby-highlight\" data-language=\"sh\"><pre class=\"language-sh\"><code class=\"language-sh\">$ vr --version\n1.5.0</code></pre></div>\n<h2>書いてみる</h2>\n<p><a href=\"https://velociraptor.run/docs/configuration/\">https://velociraptor.run/docs/configuration/</a><br>\n<a href=\"https://velociraptor.run/docs/git-hooks/\">https://velociraptor.run/docs/git-hooks/</a></p>\n<p>Deno プロジェクトを用意して <code class=\"language-text\">velociraptor.yml</code> を追加する</p>\n<div class=\"gatsby-highlight\" data-language=\"yml\"><pre class=\"language-yml\"><code class=\"language-yml\"><span class=\"token punctuation\">---</span>\n<span class=\"token key atrule\">scripts</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">lint</span><span class=\"token punctuation\">:</span> deno lint\n  <span class=\"token key atrule\">format</span><span class=\"token punctuation\">:</span> deno fmt\n  <span class=\"token key atrule\">format-check</span><span class=\"token punctuation\">:</span> deno fmt <span class=\"token punctuation\">-</span><span class=\"token punctuation\">-</span>check\n  <span class=\"token key atrule\">pre-commit</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">cmd</span><span class=\"token punctuation\">:</span>\n      <span class=\"token punctuation\">-</span> vr lint\n      <span class=\"token punctuation\">-</span> vr format<span class=\"token punctuation\">-</span>check\n    <span class=\"token key atrule\">gitHook</span><span class=\"token punctuation\">:</span> pre<span class=\"token punctuation\">-</span>commit</code></pre></div>\n<h2>Git Hooks の設定</h2>\n<p><code class=\"language-text\">vr</code> を実行すれば設定できる、便利</p>\n<div class=\"gatsby-highlight\" data-language=\"sh\"><pre class=\"language-sh\"><code class=\"language-sh\">$ vr\n...\n    • pre-commit\n    Runs at pre-commit\n    $ vr lint, vr format-check\n...</code></pre></div>\n<p><code class=\"language-text\">pre-commit</code> ファイルなどもある</p>\n<div class=\"gatsby-highlight\" data-language=\"sh\"><pre class=\"language-sh\"><code class=\"language-sh\">$ cat ./.git/hooks/pre-commit \n#!/bin/sh\n# Generated by Velociraptor 1.5.0\nvr run-hook pre-commit &quot;$@&quot;</code></pre></div>\n<h2>動作確認</h2>\n<p>むやみに改行を入れて、フォーマットに引っかかるコードを用意した<br>\nまずは <code class=\"language-text\">vr format-check</code> が動くことを確認</p>\n<div class=\"gatsby-highlight\" data-language=\"sh\"><pre class=\"language-sh\"><code class=\"language-sh\">$ vr format-check                                  \n\nfrom /home/vagrant/workspace/tmp/helloworld-deno-velociraptor/command.ts:\n 8 | -  .option(&quot;--name &lt;name:string&gt;&quot;,\n 9 | -   &quot;name&quot;,\n10 | -    { required: true }\n11 | -    )\n 8 | +  .option(&quot;--name &lt;name:string&gt;&quot;, &quot;name&quot;, { required: true })\n\nerror: Found 1 not formatted file in 3 files\nerror: Failed at the format-check script</code></pre></div>\n<p>この状態でコミットすると <code class=\"language-text\">pre-commmit</code> で設定した <code class=\"language-text\">vr lint</code> と <code class=\"language-text\">vr format-check</code> を実行してくれる</p>\n<div class=\"gatsby-highlight\" data-language=\"sh\"><pre class=\"language-sh\"><code class=\"language-sh\">$ git commit -m &quot;[add] git hook using velociraptor.&quot;   \nChecked 2 files\n\nfrom /home/vagrant/workspace/tmp/helloworld-deno-velociraptor/command.ts:\n 8 | -  .option(&quot;--name &lt;name:string&gt;&quot;,\n 9 | -   &quot;name&quot;,\n10 | -    { required: true }\n11 | -    )\n 8 | +  .option(&quot;--name &lt;name:string&gt;&quot;, &quot;name&quot;, { required: true })\n\nerror: Found 1 not formatted file in 3 files\nerror: Failed at the format-check script\nerror: Failed at the pre-commit script</code></pre></div>\n<p>Git Hooks 便利である</p>\n<h2>動かしたリポジトリ</h2>\n<p>Git Hooks を確認したかったので、別でリポジトリを作成した<br>\n<a href=\"https://github.com/honyanya/helloworld-deno-velociraptor\">https://github.com/honyanya/helloworld-deno-velociraptor</a></p>","frontmatter":{"title":"Deno プロジェクトで Velociraptor を使って Git Hooks を設定する","date":"2022/07/04","description":null}},"previous":{"fields":{"slug":"/2022-06-02_docker_compose_subcommand/"},"frontmatter":{"title":"docker compose サブコマンドを使う方法"}},"next":{"fields":{"slug":"/2022-07-05_deno-task-runner_velociraptor/"},"frontmatter":{"title":"Deno タスクランナーに Velociraptor を入れる"}}},"pageContext":{"id":"f5c024a2-841b-5300-951a-530664d5e1be","previousPostId":"5712d284-a047-53f2-aea4-f60dda713641","nextPostId":"8d6dcdb3-2f92-5f58-b519-1bec8f30e6cd"}},
    "staticQueryHashes": ["2841359383","3257411868"]}