Skip to content

Instantly share code, notes, and snippets.

@rightfold

rightfold/.ex Secret

Created September 3, 2015 12:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rightfold/5bc499f210d8bf85b863 to your computer and use it in GitHub Desktop.
Save rightfold/5bc499f210d8bf85b863 to your computer and use it in GitHub Desktop.
defmodule Mix.Tasks.Release do
@shortdoc "Build and release using reltool"
use Mix.Task
def run([]) do
Mix.Project.get!()
Mix.Task.run("compile")
target_dir = "rel"
File.rm_rf!(target_dir)
File.mkdir_p!(target_dir)
{:ok, spec} = :reltool.get_target_spec(confs)
:ok = :reltool.eval_target_spec(spec, :code.root_dir, '#{target_dir}')
end
defp confs do
props = base_props ++ rels ++ boot_rels
[{:sys, props}]
end
defp base_props do
[
{:lib_dirs, ['_build/#{Mix.env}/lib', '/usr/lib/elixir/lib']},
{:relocatable, true},
{:profile, :standalone},
]
end
defp rels do
Mix.Project.config()
|> Dict.get(:releases, [])
|> Enum.map(fn({name, version, apps}) ->
{:rel, '#{name}', '#{version}', apps}
end)
end
defp boot_rels do
case Mix.Project.config()[:boot_release] do
nil -> []
boot_release -> [{:boot_rel, '#{boot_release}'}]
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment