シェルスクリプト実装Blueskyクライアントv0.10.0リリース補足

By びるず (@bills-appworks.blue)
Published:

開発しているBlueskyクライアントアプリbsky-sh-cli (Bluesky in the shell)の新バージョンv0.10.0をリリースしました。この記事では本リリースに関して補足情報を記載します。

タイムラインやスレッドの表示を改善

以下のような変更をしています。

以下に実行例を示します。

image

ここではリプライが1つの場合ですが、同じポストに複数のリプライがあった場合は1つめのリプライのみ同様に表示され、2つ目以降のリプライは1つ空行を空けて|接続表示が行われます。

リプライ先やリポスト者のポスト補助情報表示

以下のような変更をしています。

これらはbsky-sh-cliでの通常のポスト表示単位での1行目のViewIndex等を含むメタ情報行と、2行目のポストユーザ表示名・ハンドル・ポスト(インデックス)日時を含むヘッダ行の間に表示されます。

以下の実行例では[ViewIndex:12-1]と表示されているポストが他のポストへのリプライであり、そのリプライ先のポストのユーザを表示しています。ここではyouと表示されていますが、これはリプライ先ポストのユーザがbsky-sh-cliでのログイン者自身のためです。リプライ先が他のユーザであればそのユーザ表示名が表示されます。

image

以下の実行例では[ViewIndex:26]と表示されているポストがリポストされており、そのリポスト者のユーザを表示しています。ここではyouと表示されていますが、これはリポストしたユーザがbsky-sh-cliでのログイン者自身のためです。リポスト者が他のユーザであればそのユーザ表示名が表示されます。

image

1つ前の表示改善も、この補助情報表示も、bsky timelineやbsky threadコマンドが主な変更対象で、他のコマンド・ポスト系コマンドの結果表示・プレビュー表示等については処理が共通している部分のみ対応されており、その他の部分については将来対応予定になります。

ダウンロードインストーラ

これまでのbsky-sh-cliの導入方法は以下のようなものでした。

ダウンロードインストーラでは、GitHubリポジトリの1ファイルのみを入手して実行することにより、アーカイブのダウンロード・展開・install.sh実行を行うことができます。コマンド実行例を以下に示します。

curl https://raw.githubusercontent.com/bills-appworks/bsky-sh-cli/main/download-install.sh -O

sh download-install.sh

OS環境の全ユーザが利用できるようにインストールするには、ダウンロードインストーラの実行はsudo sh download-install.shとしてスーパーユーザにて実行してください。

詳細はインストールドキュメントを参照ください。

インストールドキュメントにも記述していますが、一般的にcurl 【インストーラファイルURL】 | shの形式で提示されているインストール方法について知ったことがありますので以下に共有します。

bsky-sh-cliではinstall.shが1つ目の条件に、download-install.shが2つ目の条件に該当するため、前記のようにダウンロードインストーラの入手と実行のコマンドをワンライナーではなく分けて示しています。

(1) readコマンドによる入力待ちはsh標準入力実行では無視(スキップ)される

Unix系環境のreadコマンドは、シェルスクリプトでユーザの対話的入力(インストール先パス文字列の入力、実行確認待ちなど)として使われる場合があります。readコマンドが用いられているインストーラをshの標準入力として実行した場合、readコマンドでユーザの入力を待たずに次の処理が実行されるため、期待された動作となりません。

なおsh <(curl 【インストーラファイルURL】)とするとreadコマンドによる入力待ちが動作するようです。<と(の間に空白を入れるとエラーになります。

(2) curlコマンドダウンロードはsudo sh標準入力実行ではエラーとなる

【インストーラファイルURL】の内容では、さらに他のファイルをcurlコマンドでダウンロードするケースがあります。

そのようなインストーラでOS環境の全ユーザが利用できるようにインストールするためcurl 【インストーラファイルURL】 | sudo shのようにワンライナーで実行すると、ディストリビューションやパッケージ管理システムにもよると思いますが最近の環境ではセキュリティリスク上の観点からエラーとなるようです。

私が確認した範囲ではsudo sh <(curl 【インストーラファイルURL】)でもエラーになりました。以下の環境でエラーになることを確認しています(2024/8現在)。


個人的にはcurl 【インストーラファイルURL】 | shの方法、ましてやsudo shは中身も確認せずに行うのは忌避していますが、中身を確認したところで瑕疵や悪意を見つけるのは悪魔の証明になりますので、どこまで信用するかですかね…

参考情報