Step 3: Make a Command-Line Executable
Understand the details of executing the command line.
We'll cover the following
Although we can run our code by calling the run
function via mix
, it isn’t friendly for other users. So, let’s create something we can run from the command line.
Update mix.exs
file
Mix can package our code, along with its dependencies, into a single file that can be run on any Unix-based platform. This uses Erlang’s escript
utility, which can run precompiled programs stored as a ZIP archive. In our case, the program will be run as issues
.
When escript
runs a program, it looks in the mix.exs
file for the option escript
. This should return a keyword list of escript
configuration settings. The most important of these is main_module
:, which must be set to the name of a module containing a main
function. It passes the command-line arguments to this main function as a list of character lists (not binaries). As this seems to be a command-line concern, we’ll put the main
function in Issues.CLI
. Here’s the update to mix.exs
:
defmodule Issues.MixProject do
use Mix.Project
def project do
[
app: :issues,
escript: escript_config(),
version: "0.1.0",
elixir: "~> 1.6-dev",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[
extra_applications: [:logger]
]
end
defp deps do
[
{ :httpoison, "~> 1.0.0" },
{ :poison, "~> 3.1" },
]
end
defp escript_config do
[
main_module: Issues.CLI
]
end
end
Get hands-on with 1400+ tech skills courses.