gitリポジトリのサマリを表示する! onefetch

投稿日
/
更新日
gitリポジトリのサマリを表示する! onefetch

Rust製のGitリポジトリのサマリを表示するライブラリ、onefetch。



例えばfzfというライブラリで実施すると

fzfのリポジトリでonefetchを実施した場合
  • リポジトリの作成日
  • バージョン
  • 言語の割合

などなど、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


オプション

複雑なことは出来ないものの使えそうなものをいくつか


デフォルトだと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で表示される使用言語の割合

fzfのGitHubの情報

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

fzfのonefetchの情報

だいたい一緒ですね!


Alamofire

https://github.com/Alamofire/Alamofire



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

AlamofireのGitHubの情報

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

Alamofireのonefetchの情報

・・ん?

全然違う😂w



以下の辺りで差が出ているのかな🤔

  • GitHubは言語の割合に github-linguist というライブラリを使用している
  • github-linguistは .gitattributes を用いる事でフォルダ・ファイルを計測からignore出来る

github-linguistのリポジトリ



axios

https://github.com/axios/axios



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

axiosのGitHubの情報

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

axiosのonefetchの情報

こちらもだいたい一緒!



大きな差が出る場合もあるものの計測方法の差、と思えば良さそうです。



ghq + fzfと組み合わせる(おまけ)

冒頭に記載した以下の内容の実現方法です



~/.zshrc
# 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で移動

となります。




詳細は↓の記事に記載してますので、気になる方はぜひ見てやって下さい!

プロフィール画像
Yuki Takara
都内でフリーランスのエンジニアをやってます。フロントとアプリ開発メインに幅広くやってます。