MixのCustom Taskは簡単に作れていいですね。しかも、Custom Taskのプロジェクト自身からTaskを実行できて、動作を確認するのが楽ちんです。
折角Custom Taskを作ったのなら別のプロジェクトでも使いたくなりますよね。でもhttps://hex.pmにpublishするほどじゃない。そんなときどうすればいいか調べたので、メモっておきます。
Custom Taskを作る
Custom Taskのプロジェクトを作る
mix new sample_cmd
cd sample_cmd
Custom Taskのmoduleを作る
lib/mix/tasks/sample_cmd.exs
defmodule Mix.Tasks.SampleCmd do
use Mix.Task
@shortdoc "Sample mix command"
def run(args) do
IO.puts "hello world"
end
end
動作確認
compileし、mix helpに表示されることを確認
mix compile
mix help
...
mix sample_cmd # Sample mix command
...
taskを実行
mix sample_cmd
> hello world
Custom Taskを使う
プロジェクトを作る
mix new sample
cd sample
mix.exsのdependenciesに追加
sample/mix.exs
...
defp deps do
[{:sample_cmd, path: "path/to/sample_cmd"}]
end
...
動作確認
mix helpにCustom Taskが表示されることを確認
mix help
...
mix sample_cmd # Sample mix command
...
taskを実行
mix sample_cmd
> hello world
ポイント
mixのdepsはgit
やpath
もサポートしていて、gitリポジトリやローカルのライブラリを参照することができます。
詳しくは、Mix.Tasks.Depsを参照すると良いと思います。