この記事は,分かっている人にとってはタイトルを見ただけで「ああ,あの話だろうな,アホくさ」ってなるし,そうでない方は「えっ?」って思うかもしれないけど,記事を読み終わったら「アホくさ」ってなります。
さてさて,今をときめくシステムプログラミング言語にして,WebAssembly 記述言語たる Rust ですが,cargo コマンドが便利ですよね。
こいつはサブコマンドをあとから増やすことができます。自分でサブコマンドを作ることも容易にできます。そういうことを「Cargo を拡張する」と表現するようです。
Ruby で Cargo のサブコマンド
Rubyist なら,Rust のプログラミングでだって,ソースコードをなんかテキスト処理したり,プロジェクトディレクトリーでなんか処理を行うプログラムを Ruby で書きたいよね?
できます。
どこでもいいので,とにかくパスが通った場所にこんなファイルを置きます。ファイル名に注目。
#!/usr/bin/env ruby
puts "Hello, Rust. I am Ruby."
でもって,実行パーミッションを付与しておきます。
要するに cargo-hello ってコマンドを作るわけ。
あ,ごめん,Windows じゃこういうことできませんよね。
Windows の場合,パスが通った場所に 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 っていうサブコマンドとして実行してくれる,という単純なルールにしたがっているわけですね。