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 を入れている。ダサいけどしょうがない。
機械可読形式があるやろと (スコア:0)
jsonしかないかー
整形する気力までなかったのでAC
Re:機械可読形式があるやろと (スコア:2)
ありがとうございます。
ほげー。完全にテキスト整形しか頭に無かったです。
学生時代以来の sed 好き [amazon.co.jp]ってのもありますが・・・
jq 入ってる、入ってるよ!!
Re: (スコア:0)
(4405637 [srad.jp]でやんす)ないのは気力ではなく記憶力だったというオチでした
こう
個人的にpaste(1)何回調べてんのよということでひき続きAC
Re: (スコア:0)
そしてこう
せっかくなので当方における最終版を貼らせていただきます。JSONもjqもよくわかってないので、似たようなことを繰り替えし書いていてかっこわるいです
・brew info自体は複数の引数を受けつけるけど、その場合のJSON出力が formulae/casks毎にまとまって name name ... desc desc ...ってなってしまうのをなんとかしたかったがで
Re:機械可読形式があるやろと (スコア:2)
本当に、お手間を取って教えてくださり、感謝に堪えません。
動く・・・すごい・・・コマンド見ただけで何をしているのか、どうするべきかが明白です。Σ\( ̄ー ̄;)ソコカヨ
ここからなら何の工夫も無い引数ループ(スペース区切り Only)から上手く脱却できるかも。
1 行 1 エントリのファイルリダイレクトくらいには対応させたいですからね。
Re:素人臭ぱない (スコア:2)
わー。なんか皆が色々教えてくれるーw
すんません、複文ワンライナーくらいはしますが、間違いなく素人でぼんくらです。(普段使ってないしー。)
教えていただいたとおりに…できた!かも!
brew info | gsed -E -z -e 's/^[ =>]+([^\:]+)\: [^\n]+\n([^\n]+)\n.+/\1:\t\2/g'
とりあえず動きました。
でもその時点で諦めて万能 gsed 様に全てを委ねるべきでした。
知った風に書くべきことではなかったです。
という顕示欲が無かったとは言い切れません。素人臭いというか、ワナビのドヤ顔ですね。
お目汚し失礼しました。
実のところ自覚はありながらのエイヤッでしたが、読み返したら恥ずかしいや。
Re:素人臭ぱない (スコア:2)
しまった、info の後を <Formula> にしてなかった。(<Formula> が消えてます。)
Re: (スコア:0)
元書式が変わったとかで一年後にちょっとカスタマイズしようと思っても、自分が当時何を考えて作ったのかイミフになる私。
正規表現をいつも書き慣れてないと、ちょっとかっこいい技を使うよりシンプル技を組み合わせる方が、未来の自分に優しい。
Re:素人臭ぱない (スコア:2)
昔の職場で複数かつ長めの正規表現を使いまくったテストツールを作ってまして、やはり後々そういうアップデートが発生しました。
そして、検索式は毎回イチから書き直してました。(言語が UWSC スクリプトだからというのはあまり関係ない。)
> シンプル技を組み合わせる
心がけます。呪文も組み合わせの工夫も、同じくらい達成感ありますしね。
…まあ、今回のやつは自分でもちょっとどうかと頭をかすめつつではありました。
Re: (スコア:0)
概ね同意なんだけど、最近の8コアなんかだと、複雑な正規表現でまとめるよりパイプ爆弾で負荷分散したほうが勝ったりしやがるから、おじさん複雑です。
brewは縁がないが、apt showとかだと全結果をテキストに時々予め落としておいて、そこからサーチしたほうが今では速いのは笑ってしまう。sqite実用に成るなどSSD大勝利なんだな。