Fork me on GitHub

可执行文件

Some contents of this translation may be outdated.
Several major changes were applied to the original lesson since the last update.

要想在 Elixir 中生成可执行文件,我们要用 escriptescript 会生成的可执行文件,可以运行在任何安装了 Erlang 的平台。

目录

开始

escript 创建可执行文件要做的事很少:实现一个 main/1 函数,更新一下 Mixfile。

我们要先创建一个模块作为可执行文件的入口,也就是我们实现 main/1 函数的地方:

defmodule ExampleApp.CLI do
  def main(args \\ []) do
    # Do stuff
  end
end

接下来,我们要在 Mixfile 文件中添加 :escript 选项,并指定 :main_module 的位置:

defmodule ExampleApp.Mixfile do
  def project do
    [app: :example_app,
     version: "0.0.1",
     escript: escript]
  end

  def escript do
    [main_module: ExampleApp.CLI]
  end
end

解析命令行参数

应用配置好之后,我们就要解析命令行参数了。我们要使用 Elixir 提供的 OptionParser.parse/2 函数和 :switches 选项表明要处理的是布尔值:

defmodule ExampleApp.CLI do
  def main(args \\ []) do
    args
    |> parse_args
    |> response
    |> IO.puts
  end

  defp parse_args(args) do
    {opts, word, _} =
      args
      |> OptionParser.parse(switches: [upcase: :boolean])

    {opts, List.to_string(word)}
  end

  defp response({opts, word}) do
    if opts[:upcase], do: String.upcase(word), else: word
  end
end

构建

一旦我们的应用配置好了 escript,使用 Mix 构建可执行文件就易如反掌了:

$ mix escript.build

来看一下怎么做:

$ ./example_app --upcase Hello
HELLO

$ ./example_app Hi
Hi

就这样,我们在 Elixir 用 escript 生成了自己的第一个可执行文件。


Contributors

loading...



分享本页面