Packages
exrm
0.6.0
1.0.8
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-rc8
1.0.0-rc7
1.0.0-rc6
1.0.0-rc5
1.0.0-rc4
1.0.0-rc3
0.19.9
0.19.8
0.19.7
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.8
0.18.7
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.0
0.15.3
0.15.2
0.15.1
0.15.0
0.14.17
0.14.16
0.14.15
0.14.14
0.14.13
0.14.12
0.14.11
0.14.10
0.14.9
0.14.8
0.14.7
0.14.6
0.14.5
0.14.3
0.14.2
0.14.1
0.14.0
0.12.12
0.12.11
0.12.10
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.3
0.10.1
0.10.0
0.9.2
0.9.1
0.8.1
0.8.0
0.7.3
0.7.2
0.7.1
0.7.0
0.6.15
0.6.14
0.6.13
0.6.12
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.7
Exrm, or Elixir Release Manager, provides mix tasks for building, upgrading, and controlling release packages for your application.
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/release.clean.ex
defmodule Mix.Tasks.Release.Clean do
@moduledoc """
Clean up any release-related files.
## Examples
# Cleans the release for the current version of the project
mix release.clean
# Remove all files generated by exrm, including releases
mix release.clean --implode
"""
@shortdoc "Clean up any release-related files."
use Mix.Task
import ReleaseManager.Utils
@_RELXCONF "relx.config"
@_RUNNER "runner"
def run(args) do
debug "Removing release files..."
cond do
"--implode" in args ->
if confirm_implode? do
do_cleanup :all
info "All release files were removed successfully!"
end
true ->
do_cleanup :build
info "The release for #{Mix.project |> Keyword.get(:version)} has been removed."
end
end
# Clean release build
def do_cleanup(:build) do
cwd = File.cwd!
project = Mix.project |> Keyword.get(:app) |> atom_to_binary
version = Mix.project |> Keyword.get(:version)
build = Path.join([cwd, "_build", "prod"])
release = Path.join([cwd, "rel", project, "releases", version])
releases = Path.join([cwd, "rel", project, "releases", "RELEASES"])
package = Path.join([cwd, "rel", project, "#{project}-#{version}.tar.gz"])
lib = Path.join([cwd, "rel", project, "lib", "#{project}-#{version}"])
relup = Path.join([cwd, "rel", project, "relup"])
if File.exists?(release), do: File.rm_rf!(release)
if File.exists?(releases), do: File.rm_rf!(releases)
if File.exists?(package), do: File.rm_rf!(package)
if File.exists?(lib), do: File.rm_rf!(lib)
if File.exists?(relup), do: File.rm_rf!(relup)
if File.exists?(build) do
build
|> File.ls!
|> Enum.map(fn dir -> build |> Path.join(dir) end)
|> Enum.map(&File.rm_rf!/1)
end
end
# Clean up the template files for release generation
def do_cleanup(:relfiles) do
relfiles = File.cwd! |> Path.join("rel") |> Path.join("files")
if File.exists?(relfiles), do: File.rm_rf!(relfiles)
end
# Clean up everything
def do_cleanup(:all) do
# Execute other clean tasks
do_cleanup :build
# Remove generated tools
relx = Path.join(File.cwd!, "relx")
if File.exists?(relx), do: relx |> File.rm_rf!
# Remove release folder
rel = File.cwd! |> Path.join("rel")
if File.exists?(rel), do: File.rm_rf!(rel)
end
defp confirm_implode? do
IO.puts IO.ANSI.yellow
confirmed? = Mix.Shell.IO.yes?("""
THIS WILL REMOVE ALL RELEASES AND RELATED CONFIGURATION!
Are you absolutely sure you want to proceed?
""")
IO.puts IO.ANSI.reset
confirmed?
end
end