Posted at

Ruby で Cargo を拡張する

この記事は,分かっている人にとってはタイトルを見ただけで「ああ,あの話だろうな,アホくさ」ってなるし,そうでない方は「えっ?」って思うかもしれないけど,記事を読み終わったら「アホくさ」ってなります。

さてさて,今をときめくシステムプログラミング言語にして,WebAssembly 記述言語たる Rust ですが,cargo コマンドが便利ですよね。

こいつはサブコマンドをあとから増やすことができます。自分でサブコマンドを作ることも容易にできます。そういうことを「Cargo を拡張する」と表現するようです。


Ruby で Cargo のサブコマンド

Rubyist なら,Rust のプログラミングでだって,ソースコードをなんかテキスト処理したり,プロジェクトディレクトリーでなんか処理を行うプログラムを Ruby で書きたいよね?

できます。

どこでもいいので,とにかくパスが通った場所にこんなファイルを置きます。ファイル名に注目。


cargo-hello

#!/usr/bin/env ruby

puts "Hello, Rust. I am Ruby."


でもって,実行パーミッションを付与しておきます。

要するに cargo-hello ってコマンドを作るわけ。

あ,ごめん,Windows じゃこういうことできませんよね。

Windows の場合,パスが通った場所に cargo-hello.bat ってバッチファイルを置いて,その中で


cargo-hello.bat

ruby cargo-hello.rb


みたいにして Ruby スクリプトを呼び出せばいいはず。


実行

すると,ですよ。

好きな場所で

cargo hello

って打ったら

Hello, Rust. I am Ruby.

って表示されます。

え? それがどうした,だって? だから最初に「アホくさってなる」って言ったでしょ。


つまりどういう

『The Rust Programming Language』の

独自のコマンドでCargoで拡張する - The Rust Programming Language

にも書いてあるとおり,cargo-hogehoge ってコマンドが存在したら,Cargo の hogehoge っていうサブコマンドとして実行してくれる,という単純なルールにしたがっているわけですね。