Packages
deli
0.1.14
0.2.0-rc.6
0.2.0-rc.5
0.2.0-rc.4
0.2.0-rc.3
0.2.0-rc.2
0.2.0-rc.1
0.1.28
0.1.27
0.1.26
0.1.25
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
retired
0.1.7
retired
0.1.6
retired
0.1.5
retired
0.1.4
retired
0.1.3
retired
0.1.2
retired
0.1.1
retired
0.1.0
retired
Easy deployment for Elixir apps
Current section
Files
Jump to
Current section
Files
lib/deli/shell.ex
defmodule Deli.Shell do
@moduledoc "Provides conveniences for modules to deal with shell commands and files"
def cmd(command) do
with 0 <- Mix.shell().cmd(command) do
:ok
else
signal ->
IO.puts([
IO.ANSI.reset(),
IO.ANSI.red_background(),
IO.ANSI.white(),
"Deploy command failed: `#{command}`",
IO.ANSI.reset()
])
exit({:shutdown, signal})
end
end
def cmd_result(command) do
command
|> to_charlist
|> :os.cmd()
|> to_string
|> String.trim()
end
def edeliver(command) do
cmd("mix edeliver #{command} --verbose")
end
def docker_compose(command) do
no_tty = "COMPOSE_INTERACTIVE_NO_CLI=1"
cmd("#{no_tty} docker-compose -f .deliver-docker-compose.yml #{command}")
end
def file_exists?(path) do
path |> expand_path |> File.exists?()
end
def write_file(path, content, options \\ []) do
path |> expand_path |> File.write!(content, options)
end
def expand_path(path) do
path |> Path.expand(File.cwd!())
end
@spec error!(String.t()) :: no_return
def error!(message) do
Mix.shell().error(message)
exit({:shutdown, 1})
end
end