Create Command Line Tools

使用elixir创建命令行工具,是 http://www.elixirdose.com/post/create_command_line_tools 这个链接的正确完整版
使用mix命令行工具创建新的项目

[root@study elixir]# mix new awesome_cli
[root@study elixir]# cd awesome_cli/

修改lib/awesome_cli.ex,内容如下

[root@study awesome_cli]# cat lib/awesome_cli.ex   
defmodule AwesomeCli do
    def main(args) do
        IO.puts "Hello, mirahs!"
    end
end

修改mix.exs,增加escript定义,内容如下

[root@study awesome_cli]# cat mix.exs | grep -v "^.*#"
defmodule AwesomeCli.Mixfile do
  use Mix.Project

  def project do
    [app: :awesome_cli,
     version: "0.0.1",
     elixir: "~> 1.1-rc",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     escript: escript,
     deps: deps]
  end

  def escript do
    [main_module: AwesomeCli]
  end

  def application do
    [applications: [:logger]]
  end

  defp deps do
    []
  end
end

编译后会在当前目录生成awesome_cli可执行文件,运行

[root@study awesome_cli]# mix escript.build
[root@study awesome_cli]# ./awesome_cli 
Hello, mirahs!

下面是完整版本

[root@study awesome_cli]# cat lib/awesome_cli.ex 
defmodule AwesomeCli do
    def main(args) do
       args |> parse_args |> do_process
    end


    def parse_args(args) do
        options = OptionParser.parse(args)

        case options do
            {[name: name], _, _} -> [name]
            {[help: true], _, _} -> :help
            _ -> :help
        end
    end

    def do_process([name]) do
        IO.puts "Hello, #{name}! You're awesome!!"
    end

    def do_process(:help) do
        IO.puts """
            Usage:
            ./awesome_clie --name [your name]

            Options:
            --help Show this help message.

            Description:
            Prints out an awesome message.
        """
    end

end

重新编译并运行

[root@study awesome_cli]# mix escript.build
[root@study awesome_cli]# ./awesome_cli --name mirahs
Hello, mirahs! You're awesome!!
[root@study awesome_cli]# ./awesome_cli --help
    Usage:
    ./awesome_clie --name [your name]

    Options:
    --help Show this help message.

    Description:
    Prints out an awesome message.

项目完整文件

[root@study awesome_cli]# cd ..
[root@study elixir]# tree awesome_cli/
awesome_cli/
├── awesome_cli
├── _build
│   └── dev
│       └── lib
│           └── awesome_cli
│               └── ebin
│                   ├── awesome_cli.app
│                   └── Elixir.AwesomeCli.beam
├── config
│   └── config.exs
├── lib
│   └── awesome_cli.ex
├── mix.exs
├── README.md
└── test
    ├── awesome_cli_test.exs
    └── test_helper.exs

8 directories, 9 files
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值