🐾

Gleamでコマンドライン引数を取得する

2024/03/23に公開

先日バージョン1.0となったプログラミング言語Gleamを触っています。

https://gleam.run/

コマンドライン引数を扱うために、 argv というライブラリが公開されています。Erlang VM上で動作する言語だからか、コマンドライン引数もErlangで書かれたバインディングとなっているようです。

https://hexdocs.pm/argv/index.html

使ってみる

プロジェクトを作成し、こんなコードを書きます。

import gleam/io
import argv

pub fn main() {
  argv.load()
  |> io.debug()
}

コマンドライン引数をつけて実行します。

> gleam run aaa bbb   
   Compiled in 0.01s
    Running argv_test.main
Argv("/opt/homebrew/Cellar/erlang/26.2.2/lib/erlang/erts-14.2.2/bin/erl", "/path/to/project", ["aaa", "bbb"])

「ランタイム、プロジェクトのパス、引数のリスト」の順に出力されます。

よりパラメーターを細かく設定したいときは glint というライブラリ(RustのClapみたいなもの)がありますのでそちらを使いましょう。 argv で取得した引数列を glint に渡す、みたいな使い方をします。

https://hexdocs.pm/glint/index.html

おまけ

引数に日本語の文字列があったり、パスの途中に日本語が含まれていたりするとエラーが発生していたので修正プルリクエストを投げたら速攻でマージされました。(むしろこれを書きたかった)

https://github.com/lpil/argv/pull/3

Discussion