初めに
Rust製のコマンドラインツール Exeat を作成しました。ディレクトリとコマンドを指定することでcdすることなく別ディレクトリでコマンドを実行することができます。
開発環境
macOS Catalina 10.15.2
Rust 1.40.0
Exeatの作成
Qiita初投稿です。
最近Rustを学び始め、なにかコマンドラインツールでも作ってみたいなーと思ってました。そこで今のディレクトリから別のディレクトリにいるようにコマンドを実行できたら便利だなと思い作ってみました。Rustで作るということでcargoを使ってプロジェクトを作成しました。
cargo new exeat --bin
ソースコードはGitHubで公開しています。
15行という非常に短いプログラムでファイルも一つしかありません。Rustでは標準ライブラリのstd::process::Command
で外部コマンドを実行することができます。またこのライブラリが非常に便利で、実行するディレクトリも引数も自由に指定することができます。ということで実現したいことすべてこのライブラリにまかせるだけで良かったです。
Exeatの使い方
cargoを使用しているので簡単にビルド、実行を行うことができます。
cargo run ~/rust ls -a
このように1個目の引数に実行したいディレクトリ、2個目以降の引数にコマンドとオプションを指定することができます。このコマンドだと ~/rust
で ls -a
を実行することができます。もちろんls
だったら引数でディレクトリを指定することができますが、普通だったらディレクトリ指定できないコマンドでもディレクトリを指定することができます。でもこのままだとプロジェクトがあるディレクトリでしかこのプログラムを実行できないのでcargoを利用してビルドしてパスを通してどのディレクトリでも実行できるようにしておきましょう。
cargo build --release
最後に
これからもRustで色々作れたらなーと思ってます。まだRust初心者なので間違ってることなどご教授いただけたら嬉しいです。