#Goal
mixで使える自分用のコマンドを作成する。
#Dev-Environment
OS: Windows8.1
Erlang: Eshell V8.0, OTP18
Elixir: v1.3.0
#Wait a minute
mixで使える自分用のコマンド(カスタムタスク)を作成します。
以下の部分のみに注力したシンプルなサンプルです。
mix helpから見れる --> コマンドを実行する --> 結果が表示される
#Index
My mix command
|> Preparation
|> Creating a Command
|> Let's run
##Preparation
プロジェクトの作成を行います。
>mix new my_mix_cmd
>cd my_mix cmd
>mix test
また、以下のようなディレクトリ構造とファイルの配置をして下さい。
(Phoenix-Frameworkのディレクトリ構造に習います)
ファイル: lib/mix/tasks/sample.ex
##Creating a Command
それではコマンドとなるモジュールを作成していきます。
####ファイル: lib/mix/tasks/sample.ex
defmodule Mix.Tasks.Sample do
use Mix.Task
@shortdoc "My mix command sample"
def run(args) do
IO.puts (inspect args)
end
end
コマンドの実行時に受け取った引数をただ表示するだけのコマンドです。
@shortdoc
を入れておくとmix helpから説明が見れます。
##Let's run
それでは実行してみましょう!
まずは、mix helpに表示されるか見てみます。
>mix help
mix # Run the default task (current: mix run)
...
mix sample # My mix command sample
...
出ましたね。@shortdoc
の説明も表示されています。
次は実行してみましょう。
>mix sample
[]
空リストが表示されてますね。
引数は、空リストとして扱われているということでしょう。
それを確認するために引数を入力してみます。
>mix sample hoge huge foo:bar
["hoge", "huge", "foo:bar"]
Memo: mix sample
とmix Sample
どちらでもコマンドは実行可能です。
よし、予想通りですね。
#Speaking to oneself
今回はここまで・・・
色々と使える関数があるみたいなんですけど、今のところは調べきれていません。
シンプルな例としては、
Phoenix-Frameworkの「mix phoenix.routes」のソースコードを参考にするとシンプルで分かりやすいです。
後は、@ma2ge氏が作成しているパンくずライブラリのコミット内容が参考になります。
参考: Github - ma2gedev/breadcrumble_ex (implement generator for the Phoenix application)
@ma2ge氏、参考にさせて頂きましたm(_ _)m
もう一つ、もっと説明が欲しいと言う方は以下のリンク先が参考になります。(ちょっと古い?)
参考: A Custom Mix Task for Phoenix App
#Bibliography
Github - ma2gedev/breadcrumble_ex (implement generator for the Phoenix application)
A Custom Mix Task for Phoenix App