パスワードを忘れた? アカウント作成
16494048 journal
MacOSX

SlippingStaffの日記: brew about 11

日記 by SlippingStaff

brew info の説明の頭 2 行を抽出し、バージョン記述を削除して 1 行に出力する。
「このライブラリって何してくれるヤツだっけ?」という時に使う。

brewabout() {
    for arg in "$@"; do
        brew info $arg | cat | sed '/^$/d' | head -n 2 | gsed -E -z -e 's/[ =>]+([^\:]+)\: [^\n]+\n/\1:\t/g'
    done
}

(2023-02-05 22:33 追記)
コメントで後述のダサい所を中心に、もっともなご指摘をいただく。普通にやれと。 あと、この程度の話でドヤ顔放言恥ずかしいと。
brewabout() {
    for arg in "$@"; do
        brew info $arg | gsed -E -z -e 's/^[ =>]+([^\:]+)\: [^\n]+\n([^\n]+)\n.+/\1:\t\2\n/g'
    done
}

今はこれがせいいっぱい?(動いてはいる。)

 

■ 使用法
brewabout <Formula> [<Formula> ...]

  • 要 gnu-sed (gsed)。標準の sed だけでもできるだろうが調べるのがめんどい。改行を文字コードで書いて置換とか、tr 併用かな。
  • Formulae 専用で Casks には使えない。 brew info のリターンの書式が両者で異なるため。
  • 関数は .zshrc に書く。自分はさらに alias about="brewabout" としている。

■ 補足,余談

  • 遅い。これは brew info の遅さで、自分では回避できない。
  • Formula の一覧をファイルに書いてリダイレクト… はできない。
  • Cask 対応にするのは難しくない("^==> Description" の次の行を取るだけ)が、そもそも Cask に対して使うことが無いので放置。
    将来的に Formula 用の書式が Cask のに揃えられる、みたいな変更があったら考える。
  • head の "Broken pipe" エラーを回避するために、cat と空行削除の sed を入れている。ダサいけどしょうがない。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2023年02月05日 10時52分 (#4405637)

    jsonしかないかー

    brew info --json=v2 jq | jq -r '.formulae[] | .name,.desc'
    brew info --json=v2 utm | jq -r '.casks[] | .name[0], .desc'

    整形する気力までなかったのでAC

    • ありがとうございます。
      ほげー。完全にテキスト整形しか頭に無かったです。

      学生時代以来の sed 好き [amazon.co.jp]ってのもありますが・・・
      jq 入ってる、入ってるよ!!

      親コメント
      • by Anonymous Coward

        (4405637 [srad.jp]でやんす)ないのは気力ではなく記憶力だったというオチでした

        こう

        brew info --json=v2 <formulae> | jq -r '.formulae[] | .name,.desc' | paste -s -d ':' -

        個人的にpaste(1)何回調べてんのよということでひき続きAC

        • by Anonymous Coward

          そしてこう

          せっかくなので当方における最終版を貼らせていただきます。JSONもjqもよくわかってないので、似たようなことを繰り替えし書いていてかっこわるいです

          brew info --json=v2 <formulae|casks> | jq -r '.formulae[].name,.formulae[].desc,.casks[].name[0],.casks[].desc' | paste -s -d ':' -

          ・brew info自体は複数の引数を受けつけるけど、その場合のJSON出力が formulae/casks毎にまとまって name name ... desc desc ...ってなってしまうのをなんとかしたかったがで

          • 本当に、お手間を取って教えてくださり、感謝に堪えません。

            動く・・・すごい・・・コマンド見ただけで何をしているのか、どうするべきかが明白です。Σ\( ̄ー ̄;)ソコカヨ
            ここからなら何の工夫も無い引数ループ(スペース区切り Only)から上手く脱却できるかも。
            1 行 1 エントリのファイルリダイレクトくらいには対応させたいですからね。

            親コメント
typodupeerror

にわかな奴ほど語りたがる -- あるハッカー

読み込み中...