ぽよメモ

レガシーシステム考古学専攻

ghq管理下のリポジトリを色々するAlfredWorkflowを作った

色々するとは言っても基本的に何かで開くだけです.

きっかけ

最近ghq*1リポジトリを管理,pecoで開くというスキーム*2が流行りだという情報を耳にしたので導入してみたところかなり快適になりました.
Windowsでも同様のことが出来るというのが嬉しくて,ついつい散らばりがちなリポジトリたちをちゃんと管理していこうという気持ちが芽生えました.

開発でメインで使用している端末はMacBook Proなのですが,せっかくAlfredがあるのだからterminal以外からでも叩けると嬉しいなという気持ちで作り始めました.

環境

今回もGoで書いています.Workflowを使うだけであればGoの環境もGlideも必要ありません.ghqは必要です.

ghq-alfred

リポジトリは以下になります.

github.com

準備

現在最新のworkflowは以下からダウンロードできます.

Release v0.2.0: Actual 'First Release' · pddg/go-ghq-alfred · GitHub

インストールしたら設定画面を開き,Workflow Environment Variableghqの値を環境に合わせて設定してください*3
また,こちらでは使用するエディタとしてVS Code,ターミナルアプリにiTermを指定していますが,環境に合わせて指定してください.

できること

ghq list -pの結果と入力したクエリを元にリポジトリを絞り込みます.ghq {query}で検索を掛けます.

Finderで開く

選択してEnterまたはCommand+EnterでFinderで開きます.

f:id:pudding_info:20170924014501g:plain

ブラウザで開く

選択してShift+Enterでデフォルトブラウザでそのリポジトリのページを開きます.

f:id:pudding_info:20170924014623g:plain

ターミナルで開く

選択してFn+Enterでターミナルで開きます.僕はiTermを指定していますが,標準のterminalでも問題なく表示できるかと思います.

f:id:pudding_info:20170924014803g:plain

エディタで開く

選択してControl+Enterでエディタでそのリポジトリディレクトリを開きます.僕はVS Codeを指定していますが,大抵のエディタで可能かと思います.

f:id:pudding_info:20170924015028g:plain

Googleで検索

{user名}/{repository名}で検索をかけます.

f:id:pudding_info:20170924015133g:plain

できないこと

  • 上に書いたこと以外の全て.

既知の不具合

ghqではgit config --global --add ghq.root path/to/dirでデフォルトのroot以外にもリポジトリの入ったディレクトリを指定し参照できます.
が,このときghqの形式,つまり{root}/{site}/{user}/{repo}の形を取っていないディレクトリも含めることが出来てしまいます.

このWorkflowではフルパスから推察してそのリポジトリをbitbucketやgithubで開く設計になっているため,そういった形式のリポジトリ

  • ブラウザで開くことが出来ません.
  • Google検索も上手く機能しません.
  • Alfredでの表示が{user}/{repo}になりません.
  • Finderで開く,エディタで開く,などの動作は愚直にパスを渡すだけの設定になっているため問題なく動作いたします.

今のところghqディレクトリ形式を取らないリポジトリに対する動作を保証する予定はありません.

改善したいこと

アイコンをflaticonからお借りしているのですが,黒の部分以外が透過処理になっているため見づらい…
探してはいるのですが,あまりよい代替品を見つけられていません.何か良いアイコンをお知りでしたら,教えて頂ければ幸いです.

あと1日で書いたコードなのでバグなどがあるかと思います.見つけたらできればgithubの方まで…

まとめ

pythonrubyでScript Filterを頑張って書くよりも,Goで書いたバイナリを叩く方が気兼ねなく色々できて良いんじゃ無いかと思います.
ghqは便利なツールなのでid:motemen氏に感謝しつつ使わせて頂いています.

Alfredはいいぞ.

*1:motemen.hatenablog.com

*2:blog.craftz.dog

*3:AlfredのScript Filterではbashなどで設定したPATHが読み込まれません.環境の違いを吸収する手段も色々考えましたが,一度設定するだけなので諦めてこの形をとりました.