Rust製のGitリポジトリのサマリを表示するライブラリ、onefetch。
例えばfzfというライブラリで実施すると

- リポジトリの作成日
- バージョン
- 言語の割合
などなど、GitHubで見るような内容がローカルで確認出来ます!
ゴーファーくんが可愛いですね ☺️笑
開発が捗る!といったライブラリではないものの
「どういうリポジトリだったっけ?」というのがローカルで手軽に確認出来る便利ライブラリです。
更に、ghq + fzfと組み合わせると以下のような面白技も実現出来ます!
↑は「ローカル内のリポジトリを検索しながらリポジトリの情報を表示する」というものです😃
本題とはそれるため最後におまけとして記載します。
検証した環境
1 | onefetch | 2.15.1 |
インストール方法
Macを使っている場合はHomebrewで手軽にインストール可能
$ brew install onefetch
その他のインストールは以下公式ページを参考に
https://github.com/o2sh/onefetch/wiki/Installation
使い方
基本的な使い方
基本の使い方はシンプル
- パスを指定しなかった場合、現在のディレクトリに対してonefetchを実行
- パスを指定した場合、該当パスのディレクトリに対してonefetchを実行
# 現在のディレクトリで onefetch を実行
$ onefetch
# 指定したパスのディレクトリに対し onefetch を実行
# 例えば下記の場合 Alamofire というSwiftのライブラリに対して実行します
$ onefetch ~/src/github.com/Alamofire/Alamofire
オプション
複雑なことは出来ないものの使えそうなものをいくつか
—show-logo
デフォルトだとlogoが表示されますが「非表示にする」といった設定が出来ます
# auto, never(非表示), always(常に表示) が設定可能
$ onefetch --show-logo never

—output
表示を↑のようなキレイなUIではなく json・yaml で出力出来ます。
$ onefetch --output json ~/src/github.com/junegunn/fzf
{
"title": {
"gitUsername": "yuki-takara",
"gitVersion": "git version 2.39.1"
},
"infoFields": [
{
"ProjectInfo": {
"repoName": "fzf",
"numberOfBranches": 2,
"numberOfTags": 116
}
},
{
"DescriptionInfo": {
"description": null
}
},
・・・
}
他ライブラリ等に渡したい時などに使えそう!
GitHubと比較して
使用している言語の割合部分をGitHub上の表示と比較してみます。
fzf
https://github.com/junegunn/fzf
GitHubで表示される使用言語の割合

onefetchで表示される使用言語の割合

だいたい一緒ですね!
Alamofire
https://github.com/Alamofire/Alamofire
GitHubで表示される使用言語の割合

onefetchで表示される使用言語の割合

・・ん?
全然違う😂w
以下の辺りで差が出ているのかな🤔
- GitHubは言語の割合に
github-linguist
というライブラリを使用している - github-linguistは .gitattributes を用いる事でフォルダ・ファイルを計測からignore出来る
axios
https://github.com/axios/axios
GitHubで表示される使用言語の割合

onefetchで表示される使用言語の割合

こちらもだいたい一緒!
大きな差が出る場合もあるものの計測方法の差、と思えば良さそうです。
ghq + fzfと組み合わせる(おまけ)
冒頭に記載した以下の内容の実現方法です
# fzfのデフォルト設定
export FZF_DEFAULT_OPTS="--height 50% --layout=reverse --border \
--preview-window 'right:50%' \
--bind 'ctrl-/:change-preview-window(80%|hidden|)' \
--bind 'ctrl-u:preview-half-page-up,ctrl-d:preview-half-page-down'"
function change-git-directory-with-incremental-search () {
local WORKDIR=$(ghq list -p | fzf --preview "onefetch --show-logo never {}" --preview-window=right,50% --height 70%)
[ -z "$WORKDIR" ] && return
cd $WORKDIR
}
alias gr='change-git-directory-with-incremental-search'
change-git-directory-with-incremental-search
で行っている事をザックリ書くと
- ghqでローカル管理しているリポジトリの一覧を表示
- fzfでインクリメンタルサーチを行う
- その際に表示するプレビューウィンドウに onefetch を用いてリポジトリ情報を表示する
- インクリメンタルサーチで選択したリポジトリのフォルダにcdで移動
となります。
詳細は↓の記事に記載してますので、気になる方はぜひ見てやって下さい!