16
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?