LoginSignup
16
14

More than 5 years have passed since last update.

[Elixir]Mixのカスタムタスクを作成する

Last updated at Posted at 2015-08-22

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 samplemix 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

16
14
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
14