RLSの廃止に伴い、本ツールは役割を終えました。

アーカイブCargo-rls-install

どんなツール?

このサイトのスクレイピングを行い、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を起動できるようになります。

广告
将在 10 秒后关闭
bannerAds