RLSの廃止に伴い、本ツールは役割を終えました。
どんなツール?
このサイトのスクレイピングを行い、RLSのビルド状況を確認し、「present」の表示になっている最新の日付のRLSをインストールします。
Rust言語で作成。
開発経緯
Rustには、言語の開発状況に応じたStable(正式)、Beta、Nightly(毎晩日替わり)という
3つのチャンネルがあります。
StableとBetaチャンネルにRLSをインストールすることは、いつでもrustupコマンドを
使うことで可能ですが、Nightlyチャンネルだけは、Rust Language Server(RLS)が
正常にビルドできた日のみ、インストールすることができます。
これは、Rust Language Server(RLS)が依存関係にあるClippyという
Rust言語のコーディング支援ツールが、Rust言語の目まぐるしい変更に
付いて行けず、毎週のようにバグが生まれ、ビルドできない日があるため、
その日は、RLSも一緒に壊れてしまうためです。
このため、利用可能なRLSを探す方法を一人ひとりが、調べてコマンドを打つのでは、
非合理的だと考えたので、開発に至りました。
#インストール方法
$ cargo install cargo-rls-install
Cargoは、Rust言語に付属しているため、インストール前には、
Rust言語をインストール済みである必要があります。
また、Linux系OSでは、事前にOpenSSLをインストールしている必要があります。
OpenSSLのインストール方法
#Debian系(Ubuntu、Raspbianなど)
$ sudo apt install libssl-dev
# Windows Subsystem for LinuxのまっさらなUbuntu18.04に
# インストールする場合は、追加で2コマンド必要。
$ sudo apt install build-essential
$ sudo apt install pkg-config
#RedHat系(CentOSなど)
$ sudo yum install openssl-devel
#Fedoraなど
$ sudo dnf install openssl
特徴
ReqwestというライブラリでHTMLをダウンロードし、Selectというライブラリでスクレイピングします。
Rustの3つのチャンネル(stable/beta/nightly)のRLSのインストールに対応しています。
Cargo(Rustのパッケージマネージャ)から、__1コマンド__でインストールできます。
Cargoコマンドの__サブコマンド__($ cargo <自身が付けたコマンド名>で実行できる仕組み)なので細かいコマンド名を忘れていても$ cargo listと打てば、名前が出てきます。
使い方(Nightly -> Stable -> Betaの順で説明します。)
Nightly Rust向けのコマンド
# Nightly RustとRLSをインストール(各コマンド実行の直前にyes/noを選択)
$ cargo rls-install -n
# 又は
$ cargo rls-install –nightly
# Nightly RustとRLSをインストール(最後までyesを打った扱いで処理)
$ cargo rls-install -ny
Stable Rust向けのコマンド
# Stable RustとRLSをインストール(各コマンド実行の直前にyes/noを選択)
$ cargo rls-install -s # 又は –stable
Beta Rust向けのコマンド
# Beta RustとRLSをインストール(各コマンド実行の直前にyes/noを選択)
$ cargo rls-install -b # 又は –beta
チャンネル選びは迷ってしまう方向けのコマンド
$ cargo rls-install -y
* Select channel
[0:stable, 1:beta, 2:nightly] -> *チャンネル名(stable/beta/nightly)を入力する*
一週間のビルド状況表示コマンド
現在、デフォルトで使われているRustツールチェインと
一週間のビルド状況が表示されます。
$ cargo rls-install -v
* Default use Rust toolchain: nightly-2019-05-12
* Rust information
———————————
| Rust & RLS status |
———————————
| Build date | Status |
———————————
| nightly-2019-05-06 | present |
| nightly-2019-05-07 | present |
| nightly-2019-05-08 | present |
| nightly-2019-05-09 | present |
| nightly-2019-05-10 | present |
| nightly-2019-05-11 | present |
| nightly-2019-05-12 | present | <= Installed
———————————
| Last available: 2019-05-12 |
———————————
End
rustup component addのラッパーコマンド
主に、rustfmtのインストールする際に、rustup component add rustfmt –toolchain XXを
書くのが面倒だったため、追加した機能です。
$ cargo rls-install -c [コンポーネント名(例: rustfmt)]
# 又は
$ cargo rls-install -f # rustfmtをインストールします。
参考にしたサイト等
GitHub – mexus/rustup-components-history
GitHub Pagesを使って、公開されているこのページがあったから、
本ツールを作ることができました。
もし、無くなってしまったら、このツールは使えなくなります。
RLSが使えるかを表示する似たようなページもありますが、
昨晩のビルド結果を表示するだけのこのページでは、月に数回、3日以上、
壊れたままの状態になるClippy(Rustのコード解析・補完ツール)と
それに依存するRLSの最新版を探すことができません。
朗報、2019年3月9日にRustの公式リポジトリへ取り込まれたため、
将来的に無くなる可能性はほぼ0になりました。(2019年3月10日追記)
Rust Language Server(RLS)でVisual Studio Codeの補完を行う(Qiita記事)
本ツールは、この記事を見て、何か最新版のRLSを使い続ける良い方法が
無いかを考えた末の回答です。
cargo-version-sync の紹介(Qiita記事)
本ツールがStructoptを使っているのは、cargo-version-syncのソースコードの影響です。
Rustのイテレータの網羅的かつ大雑把な紹介(Qiita記事)
この記事がなかったら、イテレータを率先して、使っていなかったかもしれません。
Rust公式のイテレータ解説ページは、読み込みに時間がかかり過ぎて、
ユーザビリティが全くありません。
追記
Nightly RustにRLSをインストールして、例えば、Visual Studio Code(VSCode)の
拡張機能であるRust (rls)で使う際には、拡張機能の設定を変える必要があります。
“rust-client.disableRustup”: true
この設定により、cargo-rls-installで新しくインストールした
「nightly-YYYY-MM-DD」というフォーマットのツールチェイン名を
正しく認識して、RLSを起動できるようになります。